Print

Print


Hi,

I fixed/changed a bunch of things in the code yesterday, which everyone should know about...

1) HPSCalorimeterHit was removed.  This class was unneccessary, and all of its functionality that differed from BaseCalorimeterHit was integrated into the base class.  
All instances of using this class were replaced by BaseCalorimeterHit or the CalorimeterHit interface, instead.

2) I removed QuietBaseLCSimEvent which was a fork of BaseLCSimEvent which suppressed activation of the conditions system.  There is now a specialized constructor in BaseLCSimEvent for doing this.
(The old class was only used in one place so this doesn't affect very much code.)

3) I reworked some of the base classes and interfaces in LCSim related to hits so that it is much cleaner now how all their required data members get setup.  This is now done when the objects are created
instead of on the fly.  For instance, before it was trying to calculate corrected energy for SimCalorimeterHit objects in the "get" method but this is now done either just after the hit is read from an LCIO file
or in the base class constructor.  I think it is much cleaner now.  Similar fix up was done for setting the link to collection meta data, which associates a hit back to its collection information (for IDDecoder etc.).
All the initialization for these classes is being done when they are created instead of "on the fly" so this is much cleaner now.

4) I added a class to ecal-recon for conveniently creating CalorimeterHit objects depending on what information you would like to use.  It is called CalorimeterHitUtilities and has several methods for creating
BaseCalorimeterHit objects.  You should prefer using this interface in ECAL recon code if you need to create new hits from Driver code.  You may also use the BaseCalorimeterHit constructor, but you have to
supply all the required arguments to it.

5) I simplified and consolidated some of the various interfaces that are used for basic hit functionality within LCSim so there is now one primary interface which is extended by the official LCIO interfaces to get the 
basic functionality like retrieving a position.  It should be much clearer now how this works in LCSim.  I removed some mixin style interfaces that were not needed.

6) I made the way raw energy is handled for CalorimeterHit objects less error prone.  Basically now, the raw energy is going to always be set to zero for CalorimeterHit objects that are read back into a job via LCIO.  
Before we had some special double value for an unset raw energy in the implementation class, but this was confusing and unnecessary. 

There was a silly bug introduced with those fixes where the corrected energy was not being set for SimCalorimeterHit objects, and so anything related to MC ECAL was broken for a little while.  But I have fixed this.  
And I have confirmed that the IC clustering test produces reasonable results on mock data.

Now I'm going to move on to trying this on one of the more recent runs to see if anything is broken.  I did not hear from anyone (today!) that there were issues running on the raw data using EvioToLcio, but I'm going to
try and confirm this is all still working correctly....

--Jeremy

########################################################################
Use REPLY-ALL to reply to list

To unsubscribe from the HPS-SOFTWARE list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=HPS-SOFTWARE&A=1