-
Notifications
You must be signed in to change notification settings - Fork 483
CPV fix simulation workflow #5887
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
thx, will check the clusterizer performance with this. |
Dear David, all, unfortunately there appeared some errors during fullCI build: sw/BUILD/o2checkcode-latest/log-- Machine think that code is not readable which I can debate. However Those errors didn't show up at my laptop. Would it be possible to explain what are those, how to reproduce them locally and how to get rid of it? I don't want to fix something blindly and wait another half day for tests. Thank you & regards, |
|
Hi @sevdokim, these are codechecker errors, they should be quite straight forward to fix. In general, running the codechecker locally is not completely straight forward. You can also build it locally, but that often gives some problem with clang and system headers, and there is no good recipe to get it going in general. |
|
What do I have to run to test this? Restart from o2-sim? or from o2-sim-digitizer-workflow? |
|
Hi @davidrohr, you have to start from simulation as noise simulation changed there. |
Hello! Exactly, one needs to start from the scratch. Not only noise but signal simulation changed (signal is scaled by factor 100 and |
|
Dear Sergey, I see you decide to add pedestals to Hits. Why do you need this? How do you plan to adding several hits in pileup simulation? You will have to subtract one (or several) redundant pedestals. |
Hello, Dmitri! I didn't add pedestals to hits. I add pedestals when packing raw from digits. So the workflow if following: hits -> digits -> raw (add pedestals here) -> digits (subtract pedestals here) -> clusters. |
Ahh, I see. I added pedestals to Detector.h during development and forgot to exclude them when realized that we don't need them. Can I remove it in the next my commits? |
|
Dear Sergey, It would be better to have operational CPV in o2 tags. I would prefer to fix this in current PR. Best regards, Dmitri |
This is operational, just a matter of 2 excess includes. However as you wish. |
I checked again and didn't find anything what are talking about. Please consider my previous message as wrong. |
|
Dear Sergey, you are right, I confused Detector.cxx and Digitizer.cxx in review. There is no adding Pedestals in Detector as it should be. Sorry for the noise. Dmitri. |
Same for me)) |
|
Dear @davidrohr, @ktf I believe the fullCI is faulty and should be fixed. Please point my errors if I'm wrong. Otherwise please merge my PR. Thank you, regards, |
|
@sevdokim The fullCI is indeed broken by me, the PR with fix is being tested, let's wait for it to be merged then we can merge your PR once the fullCI is green. |
|
Hi @shahor02 |
|
For reference, I checked the performance and it is ~40x faster than before, very good and thx a lot! Should be squash-merged as soon as the full CI has rerun. |
| LOG(INFO) << "[RawWriter] getting calibration object from ccdb"; | ||
| o2::ccdb::CcdbApi ccdb; | ||
| std::map<std::string, std::string> metadata; | ||
| ccdb.init("http://ccdb-test.cern.ch:8080"); // or http://localhost:8080 for a local installation |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
could you please make the ccdb patch a settable parameter?
| //TODO: configuring ccdb address from config file, readign proper calibration/BadMap and updateing if necessary | ||
| o2::ccdb::CcdbApi ccdb; | ||
| std::map<std::string, std::string> metadata; | ||
| ccdb.init("http://ccdb-test.cern.ch:8080"); // or http://localhost:8080 for a local installation |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
here too.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Dear @shahor02, can you advice a way to make it configurable? You mean to read it in init() function from framework::InitContext& ctx?
I ask because I can do something which no one will like due to my incomplete understanding.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@sevdokim, just define e.g. mCCDBUrl data member which can be set via workflow option (with proper default, e.g. "http://ccdb-test.cern.ch:8080"). For the reference, look on
| framework::DataProcessorSpec getZDCDataReaderDPLSpec(const RawReaderZDC& rawReader, const std::string& ccdbURL, const bool verifyTrigger) |
AliceO2/Detectors/ZDC/workflow/src/o2-zdc-raw2digits.cxx
Lines 44 to 54 in b80c66b
| auto ccdbURL = configcontext.options().get<std::string>("ccdb-url"); | |
| auto checkTrigger = true; | |
| auto notCheckTrigger = configcontext.options().get<bool>("not-check-trigger"); | |
| if (notCheckTrigger) { | |
| LOG(INFO) << "Not checking trigger condition during conversion"; | |
| checkTrigger = false; | |
| } | |
| o2::conf::ConfigurableParam::updateFromString(configcontext.options().get<std::string>("configKeyValues")); | |
| WorkflowSpec specs; | |
| specs.emplace_back(o2::zdc::getZDCDataReaderDPLSpec(o2::zdc::RawReaderZDC{dumpReader}, ccdbURL, checkTrigger)); |
For the
| ccdb.init("http://ccdb-test.cern.ch:8080"); // or http://localhost:8080 for a local installation |
| add_option("ccdb-url,c", bpo::value<std::string>()->default_value(""), "url of the ccdb repository"); |
digi2raw.cxx itself, you will need to propagate the option to RawWriter.cxx.
BTW, for the ccdb reading it is preferable to use the BasicCCDBManager (wrapper around the CcdbApi) since it supports caching.
| #define CPV_PEDESTALS_H | ||
|
|
||
| #include <array> | ||
| #include "TObject.h" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If this is a calibration data format which should be stored in the ccdb, please consider moving it to DataFormats/Detectorts/CPV (can be other PR, I guess there are other such classes).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@shahor02 actually there is plenty of work: I need to adjust calibration procedure as well. I think configuring ccdb path should naturally be included in that PR (which is not ready yet). I hope it's OK for you.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@sevdokim Sure, but in the DPL workflows keep it simple: eventually the DPL framework will take care of CCDB related stuff.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@shahor02 to be honest, I didn't get you last sentence. Can you please detalize it?
Particularly, what is the reason to move calibration objects headers to DataFormats/Detectorts/CPV? Will it help CCDB framework somehow to take care of them? What is CCDB related stuff? In our code we connect to CCDB and exctract
calibration objects from there. Maybe there is a global instance of CCDB which can be used and we don't have to create a new one?
PS: sorry for this ignorance. I want to improve my understanding in order to produce effective code and safe your time for reviews in the future.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@sevdokim We try to have all data (including the calibration) format classes (i.e. those classes which ends up in the DPL messages and/or stored in the files) in DataFormats directories, with no dependence on Detectors sim/rec/calib processing classes. Mostly in order to minimize the risk of circular dependencies.
Concerning the "CCDB stuff": eventually, the detector code should not deal with CCDB server directly, instead it will declare in the DPL device specifications what objects it will need (in the same way as it currently subscribes to data) and the framework will take care of shipping the objects matching to the timestamp of the TF being processed.
This is not available at the moment so we have to configure/query the ccdb server. Note that this will work for DPL workflows only. For simple executables, like digi2raw, we will always deal with CCDB directly.
|
In principle, once dev is updated by the fix, it should rerun automatically, if it will not, will ask Timo to restart. |
|
This has passed the full CI, no idea why it is marked red. Merging since it is a significant improvement. Further work can happen in a separate PR. |
* Fixed CPV simulation workflow * applied clang-format * fix for ~statement should be inside braces~ mumbling Co-authored-by: sevdokim <sergey.evdokimov@cern.ch>
Simulation procedure adjusted: added pedestals to raw data creator, tuned simulation parameters.
Reduced noise speeds up clusterization procedure by factor ~20 times.
Added pedestal subtraction in the raw -> digits workflow.