Hi, Andrea.

These are all good questions and suggestions for improvement.

I’m going to forward my answers to the software list so everyone can be up to date on these topics related to the detector and conditions system...

> 1) At the moment, we have 2 Event builders on the trunk, 
> LCSimEngRunEventBuilder and LCSimTestRunEventBuilder.
> - Does this mean that, when running the software on EVIO data, we need 
> to specify which of them to use?
It used to work this way.  But I have just changed the EvioToLcio class to pick the right event builder based on the run number.  The EVIO format changed
significantly between the Test Run and the Engineering Run, so we need different EVIO to LCIO converters.  Now with the command line tool you should
not need to worry about it anymore as long as your input data has valid run numbers that map correctly to either the Test or Engineering Run(s).

> - In the monitoring app, I know there's a field for this (in JobSettings 
> panel) Is this the field to use?

Yes, in the monitoring app, the specific event builder needs to be given manually via a GUI setting.  

By default, it now uses the LCSimEngRunEventBuilder so if you leave it alone, it should work with current EVIO data just fine.  (I tested this today and it seems to work for ECAL data.) 

> - For the offline reconstruction (class, I see 
> there's an option to pass to the class to select the event builder (line 
> ~ 196). Again, we need to specify this option when running the app, correct?
That used to be the case, but I have removed this in the current EVIO to LCIO converter, EvioToLcio, and that class you mentioned is deprecated.  

Please use the new utility which will pick the right event builder for you.

> -- Related to the previous, I think this class should change name, now 
> is misleading (it seems it works only for the test run).
In fact, that class will be removed soon, and it is broken now!  Please don’t use it anymore.
> 2) Why aren't we using the run number (that is available in the EVIO 
> data) to determine which EventBuilder to be used? I ask this because is 
> always better to have an automatic (error-proof if well tested) 
> procedure, instead of having the user do this.
I guess brilliant minds think alike, because this is how it works now by default.  :)
> 3) Analog question for the conditions system (this is what I also asked 
> Omar): I see there're 2 drivers, and 
>, the first for the engineering run, the 
> second for the test run.
> - I think this is even worse than the event builder, because it means 
> that, when writing a steering file, the developer has already to know if 
> that steering file will be used for the test-run data OR for the 
> engineering run data.
We are going to change this soon so that the conditions manager will pick the right XML config based on run numbers.  This will make it unnecessary to use a custom Test Run conditions Driver.

However, the ConditionsDriver itself will still need to be used for most steering files, because it bootstraps the DatabaseConditionsManager instance.  And it also triggers loading of conditions onto the detector objects
via the detectorChanged hook.  But this will just be a standard line to include in your steering file.

> For example, monitoring-app drivers, that are very "general", should 
> work with BOTH datasets!
> 4) Why aren't we using the run number to determine which condition 
> driver to be used?
There will actually be just one, generic ConditionsDriver, and TestRunConditionsDriver will be removed,
or at least that is my plan.  The DatabaseConditionsManager will pick the right configuration based on
the input run numbers from your data files.
> 5) If I look at the test case you were pointing at, I see (line ~ 45):
>         // Create event builder.
>         LCSimEventBuilder builder = new LCSimEngRunEventBuilder();
>         builder.setDetectorName("HPS-Proposal2014-v8-6pt6");
> You're manually specifying which detector to use. Then, you load a 
> certain data file (hps_002744.evio.0), associated with run number 002744
> - There are two parameters here, the detector name and the run number. 
> Which of them determines the conditions to be loaded? If both, can you 
> specify what conditions are related to each of them? For example, the 
> ecal daq map.
The database conditions and the detector are relatively independent of one another.  Only the run number is used to actually load conditions from the database.  
How the detector objects are linked to the conditions is not really specified by the conditions system itself.  So it is possible to load a detector that is not compatible
in some way with the current conditions.  I’m not sure there’s a great way to prevent against doing this.  (More info about this answering your next question…)
> - Why aren't we determining the detector name from the run number? For 
> the real data, each run was taken with a given detector.
There are many different detector models, and the framework allows you to pick any of them.  This is perhaps too flexible!

I agree, we should have a standard detector model that is used for reconstructing real data, and Pelle is working hard on this.  

I know simple track recon is working in that detector but I have yet to do any serious testing of it.  This is on my list of TODOs.
> Sorry for these long questions 
These were all very good questions and brought up good points.  

I hope it is clear that things are being improved in all the areas you mentioned! 


Use REPLY-ALL to reply to list

To unsubscribe from the HPS-SOFTWARE list, click the following link: