Belle II Software  release-08-01-10
ECLDataAnalysisModule Class Reference

The ECL Data Analysis Module. More...

#include <ECLDataAnalysisModule.h>

Inheritance diagram for ECLDataAnalysisModule:
Collaboration diagram for ECLDataAnalysisModule:

Public Types

enum  EModulePropFlags {
  c_Input = 1 ,
  c_Output = 2 ,
  c_ParallelProcessingCertified = 4 ,
  c_HistogramManager = 8 ,
  c_InternalSerializer = 16 ,
  c_TerminateInAllProcesses = 32 ,
  c_DontCollectStatistics = 64
}
 Each module can be tagged with property flags, which indicate certain features of the module. More...
 
typedef ModuleCondition::EAfterConditionPath EAfterConditionPath
 Forward the EAfterConditionPath definition from the ModuleCondition.
 

Public Member Functions

 ECLDataAnalysisModule ()
 Constructor of the module.
 
virtual ~ECLDataAnalysisModule ()
 Destructor of the module.
 
virtual void initialize () override
 Initializes the Module. More...
 
virtual void beginRun () override
 beginRun
 
virtual void event () override
 event More...
 
virtual void endRun () override
 endRun
 
virtual void terminate () override
 Termination action.
 
virtual std::vector< std::string > getFileNames (bool outputFiles)
 Return a list of output filenames for this modules. More...
 
const std::string & getName () const
 Returns the name of the module. More...
 
const std::string & getType () const
 Returns the type of the module (i.e. More...
 
const std::string & getPackage () const
 Returns the package this module is in.
 
const std::string & getDescription () const
 Returns the description of the module.
 
void setName (const std::string &name)
 Set the name of the module. More...
 
void setPropertyFlags (unsigned int propertyFlags)
 Sets the flags for the module properties. More...
 
LogConfiggetLogConfig ()
 Returns the log system configuration.
 
void setLogConfig (const LogConfig &logConfig)
 Set the log system configuration.
 
void setLogLevel (int logLevel)
 Configure the log level.
 
void setDebugLevel (int debugLevel)
 Configure the debug messaging level.
 
void setAbortLevel (int abortLevel)
 Configure the abort log level.
 
void setLogInfo (int logLevel, unsigned int logInfo)
 Configure the printed log information for the given level. More...
 
void if_value (const std::string &expression, const std::shared_ptr< Path > &path, EAfterConditionPath afterConditionPath=EAfterConditionPath::c_End)
 Add a condition to the module. More...
 
void if_false (const std::shared_ptr< Path > &path, EAfterConditionPath afterConditionPath=EAfterConditionPath::c_End)
 A simplified version to add a condition to the module. More...
 
void if_true (const std::shared_ptr< Path > &path, EAfterConditionPath afterConditionPath=EAfterConditionPath::c_End)
 A simplified version to set the condition of the module. More...
 
bool hasCondition () const
 Returns true if at least one condition was set for the module.
 
const ModuleConditiongetCondition () const
 Return a pointer to the first condition (or nullptr, if none was set)
 
const std::vector< ModuleCondition > & getAllConditions () const
 Return all set conditions for this module.
 
bool evalCondition () const
 If at least one condition was set, it is evaluated and true returned if at least one condition returns true. More...
 
std::shared_ptr< PathgetConditionPath () const
 Returns the path of the last true condition (if there is at least one, else reaturn a null pointer). More...
 
Module::EAfterConditionPath getAfterConditionPath () const
 What to do after the conditional path is finished. More...
 
std::vector< std::shared_ptr< Path > > getAllConditionPaths () const
 Return all condition paths currently set (no matter if the condition is true or not).
 
bool hasProperties (unsigned int propertyFlags) const
 Returns true if all specified property flags are available in this module. More...
 
bool hasUnsetForcedParams () const
 Returns true and prints error message if the module has unset parameters which the user has to set in the steering file.
 
const ModuleParamListgetParamList () const
 Return module param list.
 
template<typename T >
ModuleParam< T > & getParam (const std::string &name) const
 Returns a reference to a parameter. More...
 
bool hasReturnValue () const
 Return true if this module has a valid return value set.
 
int getReturnValue () const
 Return the return value set by this module. More...
 
std::shared_ptr< PathElementclone () const override
 Create an independent copy of this module. More...
 
std::shared_ptr< boost::python::list > getParamInfoListPython () const
 Returns a python list of all parameters. More...
 

Static Public Member Functions

static void exposePythonAPI ()
 Exposes methods of the Module class to Python.
 

Protected Member Functions

virtual void def_initialize ()
 Wrappers to make the methods without "def_" prefix callable from Python. More...
 
virtual void def_beginRun ()
 Wrapper method for the virtual function beginRun() that has the implementation to be used in a call from Python.
 
virtual void def_event ()
 Wrapper method for the virtual function event() that has the implementation to be used in a call from Python.
 
virtual void def_endRun ()
 This method can receive that the current run ends as a call from the Python side. More...
 
virtual void def_terminate ()
 Wrapper method for the virtual function terminate() that has the implementation to be used in a call from Python.
 
void setDescription (const std::string &description)
 Sets the description of the module. More...
 
void setType (const std::string &type)
 Set the module type. More...
 
template<typename T >
void addParam (const std::string &name, T &paramVariable, const std::string &description, const T &defaultValue)
 Adds a new parameter to the module. More...
 
template<typename T >
void addParam (const std::string &name, T &paramVariable, const std::string &description)
 Adds a new enforced parameter to the module. More...
 
void setReturnValue (int value)
 Sets the return value for this module as integer. More...
 
void setReturnValue (bool value)
 Sets the return value for this module as bool. More...
 
void setParamList (const ModuleParamList &params)
 Replace existing parameter list.
 

Private Member Functions

virtual const char * eclSimHitArrayName () const
 Default name ECLCalDigits array.
 
virtual const char * eclHitArrayName () const
 Default name ECLCalDigits array.
 
virtual const char * eclDigitArrayName () const
 Default name ECLDigits array.
 
virtual const char * eclCalDigitArrayName () const
 Default name ECLCalDigits array.
 
virtual const char * eclShowerArrayName () const
 Default name ECLShower array.
 
virtual const char * eclClusterArrayName () const
 Default name ECLClusters array.
 
virtual const char * eclConnectedRegionArrayName () const
 Default name ECLConnectedRegions array.
 
virtual const char * eclLocalMaximumArrayName () const
 Default name ECLLocalMaxima array.
 
virtual const char * eclPureDigitArrayName () const
 Default name ECLPureDigits array.
 
virtual const char * eclPureCalDigitArrayName () const
 Default name ECLPureCalDigits array.
 
virtual const char * eclPureShowerArrayName () const
 Default name ECLPureShower array.
 
virtual const char * eclPureClusterArrayName () const
 Default name ECLPureClusters array.
 
virtual const char * eclPureConnectedRegionArrayName () const
 Default name ECLPureConnectedRegions array.
 
virtual const char * eclPureLocalMaximumArrayName () const
 Default name ECLPureLocalMaxima array.
 
std::list< ModulePtrgetModules () const override
 no submodules, return empty list
 
std::string getPathString () const override
 return the module name.
 
void setParamPython (const std::string &name, const boost::python::object &pyObj)
 Implements a method for setting boost::python objects. More...
 
void setParamPythonDict (const boost::python::dict &dictionary)
 Implements a method for reading the parameter values from a boost::python dictionary. More...
 

Private Attributes

TFile * m_rootFilePtr
 members of ECLReconstructor Module More...
 
std::string m_rootFileName
 name of the root file
 
bool m_writeToRoot
 if true, a rootFile named by m_rootFileName will be filled with info
 
bool m_doTracking
 if true, info on tracking will be stored, job will fail if doTracking==1 and the tracking modules are not enabled at phyton level
 
bool m_doPureCsI
 if true, info on pureCsI upgrade is stored
 
bool m_doHits
 if true, info on Hits and SimHits is stored
 
bool m_doDigits
 if true, info on Digits and CalDigits is stored
 
StoreArray< Trackm_tracks
 Tracks storeArray.
 
StoreArray< TrackFitResultm_trackFitResults
 TrackFitResult storeArray.
 
StoreArray< ECLPidLikelihoodm_eclPidLikelihoods
 ECLPidLikelihood storeArray.
 
StoreArray< ECLSimHitm_eclSimHits
 Store array: ECLSimHit.
 
StoreArray< ECLHitm_eclHits
 Store array: ECLHit.
 
StoreArray< ECLDigitm_eclDigits
 Store array: ECLDigit.
 
StoreArray< ECLCalDigitm_eclCalDigits
 Store array: ECLCalDigit.
 
StoreArray< ECLConnectedRegionm_eclConnectedRegions
 Store array: ECLConnectedRegion.
 
StoreArray< ECLShowerm_eclShowers
 Store array: ECLShower.
 
StoreArray< ECLClusterm_eclClusters
 Store array: ECLCluster.
 
StoreArray< ECLLocalMaximumm_eclLocalMaximums
 Store array: ECLLocalMaximum.
 
StoreObjPtr< EventLevelClusteringInfom_eventLevelClusteringInfo
 Store object pointer: EventLevelClusteringInfo.
 
StoreObjPtr< EventMetaDatam_eventmetadata
 Store object pointer: EventMetaData.
 
StoreArray< ECLDigitm_eclPureDigits
 Store array: ECLPureDigit.
 
StoreArray< ECLCalDigitm_eclPureCalDigits
 Store array: ECLPureCalDigit.
 
StoreArray< ECLConnectedRegionm_eclPureConnectedRegions
 Store array: ECLPureConnectedRegion.
 
StoreArray< ECLShowerm_eclPureShowers
 Store array: ECLPureShower.
 
StoreArray< ECLClusterm_eclPureClusters
 Store array: ECLPureCluster.
 
StoreArray< ECLLocalMaximumm_eclPureLocalMaximums
 Store array: ECLPureLocalMaximum.
 
StoreArray< MCParticlem_mcParticles
 MCParticles StoreArray.
 
TTree * m_tree
 Root tree and file for saving the output.
 
int m_iExperiment
 Experiment number.
 
int m_iRun
 Run number.
 
int m_iEvent
 Event number.
 
uint16_t m_nECLCalDigitsOutOfTimeFWD {0}
 Number of out of time, energetic ECLCalDigits, FWD.
 
uint16_t m_nECLCalDigitsOutOfTimeBarrel {0}
 Number of out of time, energetic ECLCalDigits, Barrel.
 
uint16_t m_nECLCalDigitsOutOfTimeBWD {0}
 Number of out of time, energetic ECLCalDigits, BWD.
 
uint8_t m_nECLShowersRejectedFWD {0}
 Number of photon showers that are rejected before storing to mdst (max. More...
 
uint8_t m_nECLShowersRejectedBarrel {0}
 Number of photon showers that are rejected before storing to mdst (max. More...
 
uint8_t m_nECLShowersRejectedBWD {0}
 Number of photon showers that are rejected before storing to mdst (max. More...
 
int m_eclDigitMultip
 Number of ECLDigits per event.
 
std::vector< int > * m_eclDigitIdx
 ECLDigit index.
 
std::vector< int > * m_eclDigitToMC
 Index of MCParticle related to that ECLDigit.
 
std::vector< int > * m_eclDigitCellId
 Number of ECLDigit CellId.
 
std::vector< int > * m_eclDigitAmp
 ECLDigit amplitude.
 
std::vector< int > * m_eclDigitTimeFit
 ECLDigit timing.
 
std::vector< int > * m_eclDigitFitQuality
 ECLDigit fit quality.
 
std::vector< int > * m_eclDigitToCalDigit
 Index of CalDigit related to that ECLDigit.
 
int m_eclCalDigitMultip
 Number of ECLCalDigits per event.
 
std::vector< int > * m_eclCalDigitIdx
 ECLCalDigit index.
 
std::vector< int > * m_eclCalDigitToMC1
 Index of first MCParticle related to ECLCalDigit.
 
std::vector< int > * m_eclCalDigitToMC1PDG
 PDG code of first MCParticle related to ECLCalDigit.
 
std::vector< double > * m_eclCalDigitToMCWeight1
 Energy contribution of first MCParticle related to ECLCalDigit.
 
std::vector< int > * m_eclCalDigitToMC2
 Index of second MCParticle related to ECLCalDigit.
 
std::vector< int > * m_eclCalDigitToMC2PDG
 PDG code of second MCParticle related to ECLCalDigit.
 
std::vector< double > * m_eclCalDigitToMCWeight2
 Energy contribution of second MCParticle related to ECLCalDigit.
 
std::vector< int > * m_eclCalDigitToMC3
 Index of third MCParticle related to ECLCalDigit.
 
std::vector< int > * m_eclCalDigitToMC3PDG
 PDG code of third MCParticle related to ECLCalDigit.
 
std::vector< double > * m_eclCalDigitToMCWeight3
 Energy contribution of third MCParticle related to ECLCalDigit.
 
std::vector< int > * m_eclCalDigitToMC4
 Index of fourth MCParticle related to ECLCalDigit.
 
std::vector< int > * m_eclCalDigitToMC4PDG
 PDG code of fourth MCParticle related to ECLCalDigit.
 
std::vector< double > * m_eclCalDigitToMCWeight4
 Energy contribution of fourth MCParticle related to ECLCalDigit.
 
std::vector< int > * m_eclCalDigitToMC5
 Index of fifth MCParticle related to ECLCalDigit.
 
std::vector< int > * m_eclCalDigitToMC5PDG
 PDG code of fifth MCParticle related to ECLCalDigit.
 
std::vector< double > * m_eclCalDigitToMCWeight5
 Energy contribution of fifth MCParticle related to ECLCalDigit.
 
std::vector< double > * m_eclCalDigitToBkgWeight
 Remaining energy contribution not associated to first five MCParticles related to ECLCalDigit.
 
std::vector< double > * m_eclCalDigitSimHitSum
 Full energy contribution related to ECLCalDigit.
 
std::vector< int > * m_eclCalDigitToShower
 Index of ECLShower related to that ECLCalDigit.
 
std::vector< int > * m_eclCalDigitCellId
 Number of ECLCalDigit CellId.
 
std::vector< double > * m_eclCalDigitAmp
 ECLCalDigit amplitude.
 
std::vector< double > * m_eclCalDigitTimeFit
 ECLCalDigit timing.
 
std::vector< int > * m_eclCalDigitFitQuality
 ECLCalDigit fit quality.
 
std::vector< int > * m_eclCalDigitToCR
 Index of CR related to that ECLCalDigit.
 
std::vector< int > * m_eclCalDigitToLM
 Index of LM related to that ECLCalDigit.
 
std::vector< int > * m_eclCRIdx
 Connected Region ID.
 
std::vector< int > * m_eclCRIsTrack
 Int for Connected Region - Track Match.
 
std::vector< double > * m_eclCRLikelihoodMIPNGamma
 Connected Region MIP Likelihood.
 
std::vector< double > * m_eclCRLikelihoodChargedHadron
 Connected Region Charged Hadron Likelihood.
 
std::vector< double > * m_eclCRLikelihoodElectronNGamma
 Connected Region Electron Likelihood.
 
std::vector< double > * m_eclCRLikelihoodNGamma
 Connected Region Gamma Likelihood.
 
std::vector< double > * m_eclCRLikelihoodNeutralHadron
 Connected Region Neutral Hadron Likelihood.
 
std::vector< double > * m_eclCRLikelihoodMergedPi0
 Connected Region Merged Pi0 Likelihood.
 
int m_eclLMMultip
 Local Maxima multiplicity.
 
std::vector< int > * m_eclLMId
 Local Maximum ID.
 
std::vector< int > * m_eclLMType
 Local Maximum type.
 
std::vector< int > * m_eclLMCellId
 Local Maximum Cell ID.
 
int m_eclSimHitMultip
 Number of ECLSimHits per event.
 
std::vector< int > * m_eclSimHitIdx
 Index of ECLSimHit.
 
std::vector< int > * m_eclSimHitToMC
 Index of MCParticle related to that ECLSimHit.
 
std::vector< int > * m_eclSimHitCellId
 ECLSimHit CellId.
 
std::vector< int > * m_eclSimHitPdg
 PDG code of MCParticle associted to that ECLDigit.
 
std::vector< double > * m_eclSimHitEnergyDep
 Energy deposition of ECLSimHit.
 
std::vector< double > * m_eclSimHitFlightTime
 ECLSimhit Flight Time.
 
std::vector< double > * m_eclSimHitX
 ECLSimHit X position.
 
std::vector< double > * m_eclSimHitY
 ECLSimHit Y position.
 
std::vector< double > * m_eclSimHitZ
 ECLSimHit Z position.
 
std::vector< double > * m_eclSimHitPx
 ECLSimHit PX.
 
std::vector< double > * m_eclSimHitPy
 ECLSimHit PY.
 
std::vector< double > * m_eclSimHitPz
 ECLSimHit PZ.
 
int m_eclHitMultip
 Number of ECLHits per event.
 
std::vector< int > * m_eclHitIdx
 Index of ECLHits.
 
std::vector< int > * m_eclHitToMC
 Index of MCParticle related to ECLHit.
 
std::vector< int > * m_eclHitToDigit
 Index of ECLDigit related to ECLHit.
 
std::vector< int > * m_eclHitToDigitAmp
 Amplitude of ECLDigit related to ECLHit.
 
std::vector< int > * m_eclHitToPureDigit
 Index of ECLDigit related to ECLHit, PureCsI option.
 
std::vector< int > * m_eclHitToPureDigitAmp
 Amplitude of ECLDigit related to ECLHit, PureCsI option.
 
std::vector< int > * m_eclHitCellId
 ECLHit CellID.
 
std::vector< double > * m_eclHitEnergyDep
 ECLHit energy.
 
std::vector< double > * m_eclHitTimeAve
 ECLHit time.
 
int m_eclClusterMultip
 Number of ECLClusters per event.
 
int m_eclClusterTrueMultip
 Number of ECLClusters per event.
 
int m_eclClusterGammaMultip
 Number of ECLClusters per event.
 
std::vector< int > * m_eclClusterIdx
 ECLCluster index.
 
std::vector< int > * m_eclClusterToMC1
 Index of first MCParticle related to ECLCluster.
 
std::vector< double > * m_eclClusterToMCWeight1
 Energy contribution of first MCParticle related to ECLCluster.
 
std::vector< int > * m_eclClusterToMC1PDG
 PDG code of first MCParticle related to ECLCluster.
 
std::vector< int > * m_eclClusterToMC2
 Index of second MCParticle related to ECLCluster.
 
std::vector< double > * m_eclClusterToMCWeight2
 Energy contribution of second MCParticle related to ECLCluster.
 
std::vector< int > * m_eclClusterToMC2PDG
 PDG code of second MCParticle related to ECLCluster.
 
std::vector< int > * m_eclClusterToMC3
 Index of third MCParticle related to ECLCluster.
 
std::vector< double > * m_eclClusterToMCWeight3
 Energy contribution of third MCParticle related to ECLCluster.
 
std::vector< int > * m_eclClusterToMC3PDG
 PDG code of third MCParticle related to ECLCluster.
 
std::vector< int > * m_eclClusterToMC4
 Index of fourth MCParticle related to ECLCluster.
 
std::vector< double > * m_eclClusterToMCWeight4
 Energy contribution of fourth MCParticle related to ECLCluster.
 
std::vector< int > * m_eclClusterToMC4PDG
 PDG code of fourth MCParticle related to ECLCluster.
 
std::vector< int > * m_eclClusterToMC5
 Index of fifth MCParticle related to ECLCluster.
 
std::vector< double > * m_eclClusterToMCWeight5
 Energy contribution of 5th MCParticle related to ECLCluster.
 
std::vector< int > * m_eclClusterToMC5PDG
 PDG code of fifth MCParticle related to ECLCluster.
 
std::vector< double > * m_eclClusterToBkgWeight
 Remaining energy contribution not associated to first five MCParticles related to ECLCluster.
 
std::vector< double > * m_eclClusterSimHitSum
 Energy contribution of 1st MCParticle related to ECLCluster.
 
std::vector< int > * m_eclClusterToShower
 Index of ECLShower related to ECLCluster.
 
std::vector< double > * m_eclClusterEnergy
 ECLCluster energy.
 
std::vector< double > * m_eclClusterEnergyError
 ECLCluster energy error.
 
std::vector< double > * m_eclClusterTheta
 ECLCluster polar direction.
 
std::vector< double > * m_eclClusterThetaError
 ECLCluster error on polar direction.
 
std::vector< double > * m_eclClusterPhi
 ECLCluster azimuthal direction.
 
std::vector< double > * m_eclClusterPhiError
 ECLCluster error on azimuthal direction.
 
std::vector< double > * m_eclClusterR
 ECLCluster distance from IP.
 
std::vector< double > * m_eclClusterEnergyDepSum
 ECLCluster simulated energy.
 
std::vector< double > * m_eclClusterTiming
 ECLCluster time.
 
std::vector< double > * m_eclClusterTimingError
 ECLCluster time error.
 
std::vector< double > * m_eclClusterE9oE21
 Ratio of 3x3 over 5x5 crystal matrices energies for ECLCluster.
 
std::vector< double > * m_eclClusterHighestE
 Highest energy deposit (per crystal) in ECLCluster.
 
std::vector< int > * m_eclClusterCellId
 CellId with highest energy deposit in ECLCluster.
 
std::vector< int > * m_eclClusterNofCrystals
 Number of crystals in ECLCluster.
 
std::vector< int > * m_eclClusterCrystalHealth
 Crystal healt flag.
 
std::vector< bool > * m_eclClusterIsTrack
 Flag for charged clusters.
 
std::vector< double > * m_eclClusterClosestTrackDist
 Flag for charged clusters.
 
std::vector< double > * m_eclClusterDeltaL
 Reconstructed Cluster DeltaL.
 
std::vector< double > * m_eclClusterAbsZernike40
 Reconstructed Abs Zernike40.
 
std::vector< double > * m_eclClusterAbsZernike51
 Reconstructed Abs Zernike51.
 
std::vector< double > * m_eclClusterZernikeMVA
 Zernike MVA.
 
std::vector< double > * m_eclClusterE1oE9
 Reconstructed E1 over E9.
 
std::vector< double > * m_eclClusterSecondMoment
 Reconstructed Second Moment.
 
std::vector< double > * m_eclClusterLAT
 Reconstructed LAT.
 
std::vector< double > * m_eclClusterDeltaTime99
 DeltaTime99.
 
std::vector< int > * m_eclClusterDetectorRegion
 Cluster Detector Region.
 
std::vector< int > * m_eclClusterHasNPhotonHypothesis
 Cluster has n-photon hypothesis.
 
std::vector< int > * m_eclClusterHasNeutralHadronHypothesis
 Cluster has neutral hadron hypothesis.
 
int m_eclPureDigitMultip
 Number of ECLDigits per event, PureCsI option.
 
std::vector< int > * m_eclPureDigitIdx
 ECLDigit index, PureCsI option.
 
std::vector< int > * m_eclPureDigitToMC
 Index of MCParticle related to that ECLDigit, PureCsI option.
 
std::vector< int > * m_eclPureDigitCellId
 Number of ECLDigit CellId, PureCsI option.
 
std::vector< int > * m_eclPureDigitAmp
 ECLDigit amplitude, PureCsI option.
 
std::vector< int > * m_eclPureDigitTimeFit
 ECLDigit timing, PureCsI option.
 
std::vector< int > * m_eclPureDigitFitQuality
 ECLDigit fit quality, PureCsI option.
 
std::vector< int > * m_eclPureDigitToCluster
 ECLDigit To Cluster, PureCsI option.
 
int m_eclPureCalDigitMultip
 Number of ECLCalDigits per event, PureCsI option.
 
std::vector< int > * m_eclPureCalDigitIdx
 ECLCalDigit index, PureCsI option.
 
std::vector< int > * m_eclPureCalDigitToMC1
 Index of first MCParticle related to CalDigit, PureCsI option.
 
std::vector< int > * m_eclPureCalDigitToMC1PDG
 PDG code of first MCParticle related to CalDigit, PureCsI option.
 
std::vector< double > * m_eclPureCalDigitToMCWeight1
 Energy contribution of first MCParticle related to CalDigit, PureCsI option.
 
std::vector< int > * m_eclPureCalDigitToMC2
 Index of second MCParticle related to CalDigit, PureCsI option.
 
std::vector< int > * m_eclPureCalDigitToMC2PDG
 PDG code of second MCParticle related to CalDigit, PureCsI option.
 
std::vector< double > * m_eclPureCalDigitToMCWeight2
 Energy contribution of second MCParticle related to CalDigit, PureCsI option.
 
std::vector< int > * m_eclPureCalDigitToMC3
 Index of third MCParticle related to CalDigit, PureCsI option.
 
std::vector< int > * m_eclPureCalDigitToMC3PDG
 PDG code of third MCParticle related to CalDigit, PureCsI option.
 
std::vector< double > * m_eclPureCalDigitToMCWeight3
 Energy contribution of third MCParticle related to CalDigit, PureCsI option.
 
std::vector< int > * m_eclPureCalDigitToMC4
 Index of fourth MCParticle related to CalDigit, PureCsI option.
 
std::vector< int > * m_eclPureCalDigitToMC4PDG
 PDG code of fourth MCParticle related to CalDigit, PureCsI option.
 
std::vector< double > * m_eclPureCalDigitToMCWeight4
 Energy contribution of fourth MCParticle related to CalDigit, PureCsI option.
 
std::vector< int > * m_eclPureCalDigitToMC5
 Index of fifth MCParticle related to CalDigit, PureCsI option.
 
std::vector< int > * m_eclPureCalDigitToMC5PDG
 PDG code of fifth MCParticle related to CalDigit, PureCsI option.
 
std::vector< double > * m_eclPureCalDigitToMCWeight5
 Energy contribution of fifth MCParticle related to CalDigit, PureCsI option.
 
std::vector< double > * m_eclPureCalDigitToBkgWeight
 Remaining energy contribution not associated to first five MCParticles related to CalDigit, PureCsI option.
 
std::vector< double > * m_eclPureCalDigitSimHitSum
 Full energy contribution related to CalDigit, PureCsI option.
 
std::vector< int > * m_eclPureCalDigitToShower
 Index of ECLShower related to that CalDigit, PureCsI option.
 
std::vector< int > * m_eclPureCalDigitCellId
 Number of CalDigit CellId, PureCsI option.
 
std::vector< double > * m_eclPureCalDigitAmp
 CalDigit amplitude, PureCsI option.
 
std::vector< double > * m_eclPureCalDigitTimeFit
 CalDigit timing, PureCsI option.
 
std::vector< int > * m_eclPureCalDigitFitQuality
 CalDigit fit quality, PureCsI option.
 
std::vector< int > * m_eclPureCalDigitToCR
 Index of CR related to that CalDigit, PureCsI option.
 
std::vector< int > * m_eclPureCalDigitToLM
 Index of LM related to that CalDigit, PureCsI option.
 
std::vector< int > * m_eclPureCRIdx
 Connected Region ID, PureCsI option.
 
std::vector< int > * m_eclPureCRIsTrack
 Int for Connected Region - Track Match, PureCsI option.
 
std::vector< double > * m_eclPureCRLikelihoodMIPNGamma
 Connected Region MIP Likelihood, PureCsI option.
 
std::vector< double > * m_eclPureCRLikelihoodChargedHadron
 Connected Region Charged Hadron Likelihood, PureCsI option.
 
std::vector< double > * m_eclPureCRLikelihoodElectronNGamma
 Connected Region Electron Likelihood, PureCsI option.
 
std::vector< double > * m_eclPureCRLikelihoodNGamma
 Connected Region Gamma Likelihood, PureCsI option.
 
std::vector< double > * m_eclPureCRLikelihoodNeutralHadron
 Connected Region Neutral Hadron Likelihood, PureCsI option.
 
std::vector< double > * m_eclPureCRLikelihoodMergedPi0
 Connected Region Merged Pi0 Likelihood, PureCsI option.
 
int m_eclPureLMMultip
 Local Maxima multiplicity, PureCsI option.
 
std::vector< int > * m_eclPureLMId
 Local Maximum ID, PureCsI option.
 
std::vector< int > * m_eclPureLMType
 Local Maximum type, PureCsI option.
 
std::vector< int > * m_eclPureLMCellId
 Local Maximum Cell ID, PureCsI option.
 
int m_eclPureClusterMultip
 Number of ECLClusterss per event, PureCsI option.
 
std::vector< int > * m_eclPureClusterIdx
 ECLCluster index, PureCsI option.
 
std::vector< int > * m_eclPureClusterToMC1
 Index of first MCParticle related to ECLCluster, PureCsI option.
 
std::vector< double > * m_eclPureClusterToMCWeight1
 Energy contribution of first MCParticle related to ECLCluster, PureCsI option.
 
std::vector< int > * m_eclPureClusterToMC1PDG
 PDG code of first MCParticle related to ECLCluster, PureCsI option.
 
std::vector< int > * m_eclPureClusterToMC2
 Index of second MCParticle related to ECLCluster, PureCsI option.
 
std::vector< double > * m_eclPureClusterToMCWeight2
 Energy contribution of second MCParticle related to ECLCluster, PureCsI option.
 
std::vector< int > * m_eclPureClusterToMC2PDG
 PDG code of second MCParticle related to ECLCluster, PureCsI option.
 
std::vector< int > * m_eclPureClusterToMC3
 Index of third MCParticle related to ECLCluster, PureCsI option.
 
std::vector< double > * m_eclPureClusterToMCWeight3
 Energy contribution of third MCParticle related to ECLCluster, PureCsI option.
 
std::vector< int > * m_eclPureClusterToMC3PDG
 PDG code of third MCParticle related to ECLCluster, PureCsI option.
 
std::vector< int > * m_eclPureClusterToMC4
 Index of fourth MCParticle related to ECLCluster, PureCsI option.
 
std::vector< double > * m_eclPureClusterToMCWeight4
 Energy contribution of fourth MCParticle related to ECLCluster, PureCsI option.
 
std::vector< int > * m_eclPureClusterToMC4PDG
 PDG code of fourth MCParticle related to ECLCluster, PureCsI option.
 
std::vector< int > * m_eclPureClusterToMC5
 Index of fifth MCParticle related to ECLCluster, PureCsI option.
 
std::vector< double > * m_eclPureClusterToMCWeight5
 Energy contribution of 5th MCParticle related to ECLCluster, PureCsI option.
 
std::vector< int > * m_eclPureClusterToMC5PDG
 PDG code of fifth MCParticle related to ECLCluster, PureCsI option.
 
std::vector< double > * m_eclPureClusterToBkgWeight
 Remaining energy contribution not associated to first five MCParticles related to ECLCluster, PureCsI option.
 
std::vector< double > * m_eclPureClusterEnergy
 Cluster energy, PureCsI option.
 
std::vector< double > * m_eclPureClusterEnergyError
 Cluster energy error, PureCsI option.
 
std::vector< double > * m_eclPureClusterTheta
 Cluster polar direction, PureCsI option.
 
std::vector< double > * m_eclPureClusterThetaError
 Cluster error on polar direction, PureCsI option.
 
std::vector< double > * m_eclPureClusterPhi
 Cluster azimuthal direction, PureCsI option.
 
std::vector< double > * m_eclPureClusterPhiError
 Cluster error on azimuthal direction, PureCsI option.
 
std::vector< double > * m_eclPureClusterR
 Cluster distance from IP, PureCsI option.
 
std::vector< double > * m_eclPureClusterEnergyDepSum
 Cluster simulated energy, PureCsI option.
 
std::vector< double > * m_eclPureClusterTiming
 Cluster time, PureCsI option.
 
std::vector< double > * m_eclPureClusterTimingError
 Cluster time error, PureCsI option.
 
std::vector< double > * m_eclPureClusterE9oE21
 Ratio of 3x3 over 5x5 crystal matrices energies for Cluster, PureCsI option.
 
std::vector< double > * m_eclPureClusterHighestE
 Highest energy deposit (per crystal) in Cluster, PureCsI option.
 
std::vector< int > * m_eclPureClusterCellId
 CellId with highest energy deposit in Cluster, PureCsI option.
 
std::vector< double > * m_eclPureClusterLat
 Cluster shape parameter LAT, PureCsI option.
 
std::vector< int > * m_eclPureClusterNofCrystals
 Number of crystals in Cluster, PureCsI option.
 
std::vector< int > * m_eclPureClusterCrystalHealth
 Crystal healt flag, PureCsI option.
 
std::vector< bool > * m_eclPureClusterIsTrack
 Flag for charged clusters, PureCsI option.
 
std::vector< double > * m_eclPureClusterDeltaL
 Reconstructed Cluster DeltaL, PureCsI option.
 
std::vector< double > * m_eclPureClusterClosestTrackDist
 Reconstructed Distance to Closest Track, PureCsI option.
 
std::vector< double > * m_eclPureClusterAbsZernike40
 Reconstructed Zernike40, PureCsI option.
 
std::vector< double > * m_eclPureClusterAbsZernike51
 Reconstructed Zernike51, PureCsI option.
 
std::vector< double > * m_eclPureClusterZernikeMVA
 Output of MVA classifier based on Zernike Momenta, PureCsI option.
 
std::vector< double > * m_eclPureClusterSecondMoment
 Reconstructed Cluster Second Moment, PureCsI option.
 
std::vector< double > * m_eclPureClusterE1oE9
 Reconstructed E1oE9, PureCsI option.
 
std::vector< double > * m_eclPureClusterDeltaTime99
 Reconstructed DeltaT99, PureCsI option.
 
std::vector< int > * m_eclPureClusterDetectorRegion
 Clusters detector region, PureCsI option.
 
std::vector< int > * m_eclPureClusterHasNPhotonHypothesis
 Cluster has n-photon hypothesis, PureCsI option.
 
std::vector< int > * m_eclPureClusterHasNeutralHadronHypothesis
 Cluster has neutral hadron hypothesis, PureCsI option.
 
int m_eclShowerMultip
 Number of ECLShowers per event.
 
std::vector< int > * m_eclShowerIdx
 Shower Index.
 
std::vector< int > * m_eclShowerToMC1
 Index of first MCParticle related to ECLShower.
 
std::vector< double > * m_eclShowerToMCWeight1
 Energy contribution of first MCParticle related to ECLShower.
 
std::vector< int > * m_eclShowerToMC1PDG
 PDG code of first MCParticle related to ECLShower.
 
std::vector< int > * m_eclShowerToMC1Moth
 Mother index of first MCParticle related to ECLShower.
 
std::vector< int > * m_eclShowerToMC1MothPDG
 PDG code of parent of first MCParticle related to ECLShower.
 
std::vector< int > * m_eclShowerToMC1GMoth
 GMother index of first MCParticle related to ECLShower.
 
std::vector< int > * m_eclShowerToMC1GMothPDG
 PDG code of Gparent of first MCParticle related to ECLShower.
 
std::vector< int > * m_eclShowerToMC2
 Index of second MCParticle related to ECLShower.
 
std::vector< double > * m_eclShowerToMCWeight2
 Energy contribution of second MCParticle related to ECLShower.
 
std::vector< int > * m_eclShowerToMC2PDG
 PDG code of second MCParticle related to ECLShower.
 
std::vector< int > * m_eclShowerToMC2Moth
 Mother index of first MCParticle related to ECLShower.
 
std::vector< int > * m_eclShowerToMC2MothPDG
 PDG code of parent of first MCParticle related to ECLShower.
 
std::vector< int > * m_eclShowerToMC2GMoth
 GMother index of second MCParticle related to ECLShower.
 
std::vector< int > * m_eclShowerToMC2GMothPDG
 PDG code of Gparent of second MCParticle related to ECLShower.
 
std::vector< int > * m_eclShowerToMC3
 Index of third MCParticle related to ECLShower.
 
std::vector< double > * m_eclShowerToMCWeight3
 Energy contribution of third MCParticle related to ECLShower.
 
std::vector< int > * m_eclShowerToMC3PDG
 PDG code of third MCParticle related to ECLShower.
 
std::vector< int > * m_eclShowerToMC3Moth
 Mother index of first MCParticle related to ECLShower.
 
std::vector< int > * m_eclShowerToMC3MothPDG
 PDG code of parent of first MCParticle related to ECLShower.
 
std::vector< int > * m_eclShowerToMC3GMoth
 GMother index of third MCParticle related to ECLShower.
 
std::vector< int > * m_eclShowerToMC3GMothPDG
 PDG code of Gparent of third MCParticle related to ECLShower.
 
std::vector< int > * m_eclShowerToMC4
 Index of fourth MCParticle related to ECLShower.
 
std::vector< double > * m_eclShowerToMCWeight4
 Energy contribution of fourth MCParticle related to ECLShower.
 
std::vector< int > * m_eclShowerToMC4PDG
 PDG code of fourth MCParticle related to ECLShower.
 
std::vector< int > * m_eclShowerToMC4Moth
 Mother index of fourth MCParticle related to ECLShower.
 
std::vector< int > * m_eclShowerToMC4MothPDG
 PDG code of parent of fourth MCParticle related to ECLShower.
 
std::vector< int > * m_eclShowerToMC4GMoth
 GMother index of fourth MCParticle related to ECLShower.
 
std::vector< int > * m_eclShowerToMC4GMothPDG
 PDG code of Gparent of fourth MCParticle related to ECLShower.
 
std::vector< int > * m_eclShowerToMC5
 Index of fifth MCParticle related to ECLShower.
 
std::vector< double > * m_eclShowerToMCWeight5
 Energy contribution of fifth MCParticle related to ECLShower.
 
std::vector< int > * m_eclShowerToMC5PDG
 PDG code of fifth MCParticle related to ECLShower.
 
std::vector< int > * m_eclShowerToMC5Moth
 Mother index of fifth MCParticle related to ECLShower.
 
std::vector< int > * m_eclShowerToMC5MothPDG
 PDG code of parent of fifth MCParticle related to ECLShower.
 
std::vector< int > * m_eclShowerToMC5GMoth
 GMother index of fifth MCParticle related to ECLShower.
 
std::vector< int > * m_eclShowerToMC5GMothPDG
 PDG code of Gparent of fifth MCParticle related to ECLShower.
 
std::vector< double > * m_eclShowerToBkgWeight
 Remaining energy contribution not associated to first five MCParticles related to ECLShower.
 
std::vector< int > * m_eclShowerToLM1
 Index of first maximum related to ECLShower.
 
std::vector< int > * m_eclShowerToLM2
 Index of 2nd maximum related to ECLShower.
 
std::vector< int > * m_eclShowerToLM3
 Index of 3rd maximum related to ECLShower.
 
std::vector< int > * m_eclShowerToLM4
 Index of 4th maximum related to ECLShower.
 
std::vector< int > * m_eclShowerToLM5
 Index of 5th maximum related to ECLShower.
 
std::vector< double > * m_eclShowerSimHitSum
 Full energy contribution related to ECLShower.
 
std::vector< double > * m_eclShowerUncEnergy
 Shower bare energy.
 
std::vector< double > * m_eclShowerEnergy
 Shower Energy.
 
std::vector< double > * m_eclShowerTheta
 Shower Theta.
 
std::vector< double > * m_eclShowerPhi
 Shower Phi.
 
std::vector< double > * m_eclShowerR
 Shower R.
 
std::vector< double > * m_eclShowerNHits
 Shower NHits.
 
std::vector< double > * m_eclShowerE9oE21
 Shower E9oE21.
 
std::vector< double > * m_eclShowerTime
 Shower Timing.
 
std::vector< double > * m_eclShowerT99
 Shower T99.
 
std::vector< int > * m_eclShowerConnectedRegionId
 Matched Connetcted Region Idx.
 
std::vector< int > * m_eclShowerHypothesisId
 Shower Particle Hypothesis ID.
 
std::vector< int > * m_eclShowerCentralCellId
 Cell ID for most energetic crystal.
 
std::vector< double > * m_eclShowerEnergyError
 Shower Energy Error.
 
std::vector< double > * m_eclShowerThetaError
 Shower Theta Error.
 
std::vector< double > * m_eclShowerPhiError
 Shower Phi Error.
 
std::vector< double > * m_eclShowerTimeResolution
 Shower Time Resolution.
 
std::vector< double > * m_eclShowerHighestEnergy
 Shower Highest Energy Crystal Energy.
 
std::vector< double > * m_eclShowerLateralEnergy
 Shower Lateral Energy.
 
std::vector< double > * m_eclShowerMinTrkDistance
 Shower Min Dist to Track.
 
std::vector< double > * m_eclShowerTrkDepth
 Shower Track Depth.
 
std::vector< double > * m_eclShowerShowerDepth
 Shower Depth.
 
std::vector< double > * m_eclShowerAbsZernike40
 Shower Zernike40 Moment.
 
std::vector< double > * m_eclShowerAbsZernike51
 Shower Zernike51 Moment.
 
std::vector< double > * m_eclShowerZernikeMVA
 Shower ZernikeMVA.
 
std::vector< double > * m_eclShowerSecondMoment
 Shower Second Moment.
 
std::vector< double > * m_eclShowerE1oE9
 Shower E1/E9.
 
std::vector< int > * m_eclShowerIsTrack
 Shower Track Match.
 
std::vector< bool > * m_eclShowerIsCluster
 Shower Cluster Match.
 
std::vector< int > * m_eclShowerMCVtxInEcl
 Int, 1 if particle decays (interacts) in ECL, 0 otherwise.
 
std::vector< int > * m_eclShowerMCFlightMatch
 Int, 1 if particle flight direction is "well" reconstructed in ECL, 0 otherwise.
 
std::vector< int > * m_eclShowerMCFFlightMatch
 Int, 1 if primary particle flight direction is "well" reconstructed in ECL, 0 otherwise, DEBUG PURPOSE.
 
std::vector< double > * m_eclShowerHighestE1mE2
 Energy difference for 2 highest energy deposits in shower.
 
std::vector< double > * m_eclShowerNumberOfCrystalsForEnergy
 Number of crystals used for energy calculation.
 
int m_mcMultip
 Multiplicity of MCParticles.
 
std::vector< int > * m_mcIdx
 MCParticle index.
 
std::vector< int > * m_mcPdg
 MCParticle PDG code.
 
std::vector< int > * m_mcMothPdg
 MCParticle mother particle PDG code.
 
std::vector< int > * m_mcGMothPdg
 MCParticle grandmother particle PDG code.
 
std::vector< int > * m_mcGGMothPdg
 MCParticle greand-grandmother particle PDG code.
 
std::vector< double > * m_mcEnergy
 MCParticle energyx.
 
std::vector< double > * m_mcPx
 MCParticle momentum X direction.
 
std::vector< double > * m_mcPy
 MCParticle momentum Y direction.
 
std::vector< double > * m_mcPz
 MCParticle momentum Z direction.
 
std::vector< double > * m_mcDecayVtxX
 MCParticle decay vertex X.
 
std::vector< double > * m_mcDecayVtxY
 MCParticle decay vertex Y.
 
std::vector< double > * m_mcDecayVtxZ
 MCParticle decay vertex Z.
 
std::vector< double > * m_mcProdVtxX
 MCParticle production vertex X.
 
std::vector< double > * m_mcProdVtxY
 MCParticle production vertex Y.
 
std::vector< double > * m_mcProdVtxZ
 MCParticle production vertex Z.
 
std::vector< int > * m_mcSecondaryPhysProc
 Flag for secondary physics process.
 
int m_trkMultip
 Track Multiplicity.
 
std::vector< int > * m_trkPdg
 Track PDG code.
 
std::vector< int > * m_trkIdx
 Track index.
 
std::vector< int > * m_trkCharge
 Track charge.
 
std::vector< double > * m_trkPx
 Track momentum along X direction.
 
std::vector< double > * m_trkPy
 Track momentum along Y direction.
 
std::vector< double > * m_trkPz
 Track momentum along Z direction.
 
std::vector< double > * m_trkP
 Track momentum.
 
std::vector< double > * m_trkTheta
 Track polar direction.
 
std::vector< double > * m_trkPhi
 Track azimuthal direction.
 
std::vector< double > * m_trkX
 Track DOCA X (?)
 
std::vector< double > * m_trkY
 Track DOCA Y (?)
 
std::vector< double > * m_trkZ
 Track DOCA Z (?)
 
std::vector< int > * m_eclpidtrkIdx
 PID track index.
 
std::vector< double > * m_eclpidEnergy
 PID track energy.
 
std::vector< double > * m_eclpidEop
 PID track E/p.
 
std::vector< double > * m_eclpidE9E21
 PID track ration of 3x3 over 5x5 crystal matrices energies.
 
std::vector< int > * m_eclpidNCrystals
 PID track number of crystals.
 
std::vector< int > * m_eclpidNClusters
 PID track number of clusters.
 
std::vector< double > * m_eclLogLikeEl
 PID track electron likelyhood.
 
std::vector< double > * m_eclLogLikeMu
 PID track muon likelyhood.
 
std::vector< double > * m_eclLogLikePi
 PID track pion likelyhood.
 
std::string m_name
 The name of the module, saved as a string (user-modifiable)
 
std::string m_type
 The type of the module, saved as a string.
 
std::string m_package
 Package this module is found in (may be empty).
 
std::string m_description
 The description of the module.
 
unsigned int m_propertyFlags
 The properties of the module as bitwise or (with |) of EModulePropFlags.
 
LogConfig m_logConfig
 The log system configuration of the module.
 
ModuleParamList m_moduleParamList
 List storing and managing all parameter of the module.
 
bool m_hasReturnValue
 True, if the return value is set.
 
int m_returnValue
 The return value.
 
std::vector< ModuleConditionm_conditions
 Module condition, only non-null if set.
 

Detailed Description

The ECL Data Analysis Module.

this module dump an ntuple containing ECL-related infos starting from mdst

Definition at line 51 of file ECLDataAnalysisModule.h.

Member Enumeration Documentation

◆ EModulePropFlags

enum EModulePropFlags
inherited

Each module can be tagged with property flags, which indicate certain features of the module.

Enumerator
c_Input 

This module is an input module (reads data).

c_Output 

This module is an output module (writes data).

c_ParallelProcessingCertified 

This module can be run in parallel processing mode safely (All I/O must be done through the data store, in particular, the module must not write any files.)

c_HistogramManager 

This module is used to manage histograms accumulated by other modules.

c_InternalSerializer 

This module is an internal serializer/deserializer for parallel processing.

c_TerminateInAllProcesses 

When using parallel processing, call this module's terminate() function in all processes().

This will also ensure that there is exactly one process (single-core if no parallel modules found) or at least one input, one main and one output process.

c_DontCollectStatistics 

No statistics is collected for this module.

Definition at line 77 of file Module.h.

Member Function Documentation

◆ clone()

std::shared_ptr< PathElement > clone ( ) const
overridevirtualinherited

Create an independent copy of this module.

Note that parameters are shared, so changing them on a cloned module will also affect the original module.

Implements PathElement.

Definition at line 179 of file Module.cc.

◆ def_endRun()

virtual void def_endRun ( )
inlineprotectedvirtualinherited

This method can receive that the current run ends as a call from the Python side.

For regular C++-Modules that forwards the call to the regular endRun() method.

Reimplemented in PyModule.

Definition at line 439 of file Module.h.

◆ def_initialize()

virtual void def_initialize ( )
inlineprotectedvirtualinherited

Wrappers to make the methods without "def_" prefix callable from Python.

Overridden in PyModule. Wrapper method for the virtual function initialize() that has the implementation to be used in a call from Python.

Reimplemented in PyModule.

Definition at line 420 of file Module.h.

◆ evalCondition()

bool evalCondition ( ) const
inherited

If at least one condition was set, it is evaluated and true returned if at least one condition returns true.

If no condition or result value was defined, the method returns false. Otherwise, the condition is evaluated and true returned, if at least one condition returns true. To speed up the evaluation, the condition strings were already parsed in the method if_value().

Returns
True if at least one condition and return value exists and at least one condition expression was evaluated to true.

Definition at line 96 of file Module.cc.

◆ event()

void event ( void  )
overridevirtual

event

Digits

CalDigits

Hit

Clusters

Showers

Pure Digits

Pure Clusters

MC

Tracks

PID

Reimplemented from Module.

Definition at line 865 of file ECLDataAnalysisModule.cc.

866 {
867 
868  B2DEBUG(1, " ++++++++++++++ ECLDataAnalysisModule");
869 
870  //EventLevelClusteringInfo
877 
878  if (m_doDigits == 1) {
880  m_eclDigitMultip = 0;
881  m_eclDigitIdx->clear();
882  m_eclDigitToMC->clear();
883  m_eclDigitCellId->clear();
884  m_eclDigitAmp->clear();
885  m_eclDigitTimeFit->clear();
886  m_eclDigitFitQuality->clear();
887  m_eclDigitToCalDigit->clear();
888 
891  m_eclCalDigitCellId->clear();
892  m_eclCalDigitAmp->clear();
893  m_eclCalDigitTimeFit->clear();
894  m_eclCalDigitFitQuality->clear();
895  m_eclCalDigitIdx->clear();
896  m_eclCalDigitToMC1->clear();
897  m_eclCalDigitToMCWeight1->clear();
898  m_eclCalDigitToMC2->clear();
899  m_eclCalDigitToMCWeight2->clear();
900  m_eclCalDigitToMC3->clear();
901  m_eclCalDigitToMCWeight3->clear();
902  m_eclCalDigitToMC4->clear();
903  m_eclCalDigitToMCWeight4->clear();
904  m_eclCalDigitToMC5->clear();
905  m_eclCalDigitToMCWeight5->clear();
906  m_eclCalDigitToMC1PDG->clear();
907  m_eclCalDigitToMC2PDG->clear();
908  m_eclCalDigitToMC3PDG->clear();
909  m_eclCalDigitToMC4PDG->clear();
910  m_eclCalDigitToMC5PDG->clear();
911  m_eclCalDigitToBkgWeight->clear();
912  m_eclCalDigitSimHitSum->clear();
913  m_eclCalDigitToShower->clear();
914  m_eclCalDigitToCR->clear();
915  m_eclCalDigitToLM->clear();
916  }
917 
918  m_eclCRIdx->clear();
919  m_eclCRIsTrack->clear();
923  m_eclCRLikelihoodNGamma->clear();
926 
927  if (m_doHits == 1) {
928  //SimHit
929  m_eclSimHitMultip = 0;
930  m_eclSimHitCellId->clear();
931  m_eclSimHitPdg->clear();
932  m_eclSimHitEnergyDep->clear();
933  m_eclSimHitFlightTime->clear();
934  m_eclSimHitIdx->clear();
935  m_eclSimHitToMC->clear();
936  m_eclSimHitX->clear();
937  m_eclSimHitY->clear();
938  m_eclSimHitZ->clear();
939  m_eclSimHitPx->clear();
940  m_eclSimHitPy->clear();
941  m_eclSimHitPz->clear();
942 
944  m_eclHitMultip = 0;
945  m_eclHitCellId->clear();
946  m_eclHitEnergyDep->clear();
947  m_eclHitTimeAve->clear();
948  m_eclHitIdx->clear();
949  m_eclHitToMC->clear();
950  m_eclHitToDigit->clear();
951  m_eclHitToDigitAmp->clear();
952  }
953 
954  m_eclLMMultip = 0;
955  m_eclLMId->clear();
956  m_eclLMType->clear();
957  m_eclLMCellId->clear();
958 
960  m_eclClusterMultip = 0;
963  m_eclClusterEnergy->clear();
964  m_eclClusterEnergyError->clear();
965  m_eclClusterTheta->clear();
966  m_eclClusterThetaError->clear();
967  m_eclClusterPhi->clear();
968  m_eclClusterPhiError->clear();
969  m_eclClusterR->clear();
970  m_eclClusterIdx->clear();
971  m_eclClusterToMC1->clear();
972  m_eclClusterToMCWeight1->clear();
973  m_eclClusterToMC1PDG->clear();
974  m_eclClusterToMC2->clear();
975  m_eclClusterToMCWeight2->clear();
976  m_eclClusterToMC2PDG->clear();
977  m_eclClusterToMC3->clear();
978  m_eclClusterToMCWeight3->clear();
979  m_eclClusterToMC3PDG->clear();
980  m_eclClusterToMC4->clear();
981  m_eclClusterToMCWeight4->clear();
982  m_eclClusterToMC4PDG->clear();
983  m_eclClusterToMC5->clear();
984  m_eclClusterToMCWeight5->clear();
985  m_eclClusterToMC5PDG->clear();
986  m_eclClusterToBkgWeight->clear();
987  m_eclClusterSimHitSum->clear();
988  m_eclClusterEnergyDepSum->clear();
989  m_eclClusterTiming->clear();
990  m_eclClusterTimingError->clear();
991  m_eclClusterE9oE21->clear();
992  m_eclClusterHighestE->clear();
993  m_eclClusterCellId->clear();
994  m_eclClusterNofCrystals->clear();
995  m_eclClusterCrystalHealth->clear();
996  m_eclClusterIsTrack->clear();
998  m_eclClusterDeltaL->clear();
999  m_eclClusterToShower->clear();
1000  m_eclClusterAbsZernike40->clear();
1001  m_eclClusterAbsZernike51->clear();
1002  m_eclClusterZernikeMVA->clear();
1003  m_eclClusterE1oE9->clear();
1004  m_eclClusterSecondMoment->clear();
1005  m_eclClusterLAT->clear();
1006  m_eclClusterDeltaTime99->clear();
1007  m_eclClusterDetectorRegion->clear();
1010 
1012  m_eclShowerMultip = 0;
1013  m_eclShowerIdx->clear();
1014  m_eclShowerToMC1->clear();
1015  m_eclShowerToMCWeight1->clear();
1016  m_eclShowerToMC1PDG->clear();
1017  m_eclShowerToMC1Moth->clear();
1018  m_eclShowerToMC1MothPDG->clear();
1019  m_eclShowerToMC1GMoth->clear();
1020  m_eclShowerToMC1GMothPDG->clear();
1021  m_eclShowerToMC2->clear();
1022  m_eclShowerToMCWeight2->clear();
1023  m_eclShowerToMC2PDG->clear();
1024  m_eclShowerToMC2Moth->clear();
1025  m_eclShowerToMC2MothPDG->clear();
1026  m_eclShowerToMC2GMoth->clear();
1027  m_eclShowerToMC2GMothPDG->clear();
1028  m_eclShowerToMC3->clear();
1029  m_eclShowerToMCWeight3->clear();
1030  m_eclShowerToMC3PDG->clear();
1031  m_eclShowerToMC3Moth->clear();
1032  m_eclShowerToMC3MothPDG->clear();
1033  m_eclShowerToMC3GMoth->clear();
1034  m_eclShowerToMC3GMothPDG->clear();
1035  m_eclShowerToMC4->clear();
1036  m_eclShowerToMCWeight4->clear();
1037  m_eclShowerToMC4PDG->clear();
1038  m_eclShowerToMC4Moth->clear();
1039  m_eclShowerToMC4MothPDG->clear();
1040  m_eclShowerToMC4GMoth->clear();
1041  m_eclShowerToMC4GMothPDG->clear();
1042  m_eclShowerToMC5->clear();
1043  m_eclShowerToMCWeight5->clear();
1044  m_eclShowerToMC5PDG->clear();
1045  m_eclShowerToMC5Moth->clear();
1046  m_eclShowerToMC5MothPDG->clear();
1047  m_eclShowerToMC5GMoth->clear();
1048  m_eclShowerToMC5GMothPDG->clear();
1049  m_eclShowerToBkgWeight->clear();
1050  m_eclShowerToLM1->clear();
1051  m_eclShowerToLM2->clear();
1052  m_eclShowerToLM3->clear();
1053  m_eclShowerToLM4->clear();
1054  m_eclShowerToLM5->clear();
1055  m_eclShowerSimHitSum->clear();
1056  m_eclShowerUncEnergy->clear();
1057  m_eclShowerEnergy->clear();
1058  m_eclShowerTheta->clear();
1059  m_eclShowerPhi->clear();
1060  m_eclShowerR->clear();
1061  m_eclShowerNHits->clear();
1062  m_eclShowerE9oE21->clear();
1063  m_eclShowerTime->clear();
1064  m_eclShowerT99->clear();
1066  m_eclShowerHypothesisId->clear();
1067  m_eclShowerCentralCellId->clear();
1068  m_eclShowerEnergyError->clear();
1069  m_eclShowerThetaError->clear();
1070  m_eclShowerPhiError->clear();
1071  m_eclShowerTimeResolution->clear();
1072  m_eclShowerHighestEnergy->clear();
1073  m_eclShowerLateralEnergy->clear();
1074  m_eclShowerMinTrkDistance->clear();
1075  m_eclShowerTrkDepth->clear();
1076  m_eclShowerShowerDepth->clear();
1077  m_eclShowerAbsZernike40->clear();
1078  m_eclShowerAbsZernike51->clear();
1079  m_eclShowerZernikeMVA->clear();
1080  m_eclShowerSecondMoment->clear();
1081  m_eclShowerE1oE9->clear();
1082  m_eclShowerIsTrack->clear();
1083  m_eclShowerIsCluster->clear();
1084  m_eclShowerMCVtxInEcl->clear();
1085  m_eclShowerMCFlightMatch->clear();
1086  m_eclShowerMCFFlightMatch->clear();
1087  m_eclShowerHighestE1mE2->clear();
1089 
1091  if (m_doPureCsI == true) {
1093  m_eclPureDigitIdx->clear();
1094  m_eclPureDigitToMC->clear();
1095  m_eclPureDigitCellId->clear();
1096  m_eclPureDigitAmp->clear();
1097  m_eclPureDigitTimeFit->clear();
1098  m_eclPureDigitFitQuality->clear();
1099  m_eclPureDigitToCluster->clear();
1100  m_eclHitToPureDigit->clear();
1101  m_eclHitToPureDigitAmp->clear();
1102 
1103  //Pure CalDigits
1105  m_eclPureCalDigitCellId->clear();
1106  m_eclPureCalDigitAmp->clear();
1107  m_eclPureCalDigitTimeFit->clear();
1108  m_eclPureCalDigitFitQuality->clear();
1109  m_eclPureCalDigitIdx->clear();
1110  m_eclPureCalDigitToMC1->clear();
1112  m_eclPureCalDigitToMC2->clear();
1114  m_eclPureCalDigitToMC3->clear();
1116  m_eclPureCalDigitToMC4->clear();
1118  m_eclPureCalDigitToMC5->clear();
1120  m_eclPureCalDigitToMC1PDG->clear();
1121  m_eclPureCalDigitToMC2PDG->clear();
1122  m_eclPureCalDigitToMC3PDG->clear();
1123  m_eclPureCalDigitToMC4PDG->clear();
1124  m_eclPureCalDigitToMC5PDG->clear();
1126  m_eclPureCalDigitSimHitSum->clear();
1127  m_eclPureCalDigitToShower->clear();
1128  m_eclPureCalDigitToCR->clear();
1129  m_eclPureCalDigitToLM->clear();
1130 
1131  m_eclPureCRIdx->clear();
1132  m_eclPureCRIsTrack->clear();
1136  m_eclPureCRLikelihoodNGamma->clear();
1139 
1140  m_eclPureLMMultip = 0;
1141  m_eclPureLMId->clear();
1142  m_eclPureLMType->clear();
1143  m_eclPureLMCellId->clear();
1144 
1147  m_eclPureClusterToMC1->clear();
1148  m_eclPureClusterToMCWeight1->clear();
1149  m_eclPureClusterToMC1PDG->clear();
1150  m_eclPureClusterToMC2->clear();
1151  m_eclPureClusterToMCWeight2->clear();
1152  m_eclPureClusterToMC2PDG->clear();
1153  m_eclPureClusterToMC3->clear();
1154  m_eclPureClusterToMCWeight3->clear();
1155  m_eclPureClusterToMC3PDG->clear();
1156  m_eclPureClusterToMC4->clear();
1157  m_eclPureClusterToMCWeight4->clear();
1158  m_eclPureClusterToMC4PDG->clear();
1159  m_eclPureClusterToMC5->clear();
1160  m_eclPureClusterToMCWeight5->clear();
1161  m_eclPureClusterToMC5PDG->clear();
1162  m_eclPureClusterToBkgWeight->clear();
1163  m_eclPureClusterEnergy->clear();
1164  m_eclPureClusterEnergyError->clear();
1165  m_eclPureClusterTheta->clear();
1167  m_eclPureClusterThetaError->clear();
1168  m_eclPureClusterPhi->clear();
1169  m_eclPureClusterPhiError->clear();
1170  m_eclPureClusterR->clear();
1171  m_eclPureClusterIdx->clear();
1172  m_eclPureClusterTiming->clear();
1173  m_eclPureClusterTimingError->clear();
1174  m_eclPureClusterE9oE21->clear();
1175  m_eclPureClusterHighestE->clear();
1176  m_eclPureClusterCellId->clear();
1177  m_eclPureClusterLat->clear();
1178  m_eclPureClusterNofCrystals->clear();
1183  m_eclPureClusterZernikeMVA->clear();
1185  m_eclPureClusterIsTrack->clear();
1186  m_eclPureClusterDeltaL->clear();
1187  m_eclPureClusterE1oE9->clear();
1188  m_eclPureClusterDeltaTime99->clear();
1192  }
1193 
1195  m_mcMultip = 0;
1196  m_mcIdx->clear();
1197  m_mcPdg->clear();
1198  m_mcMothPdg->clear();
1199  m_mcGMothPdg->clear();
1200  m_mcGGMothPdg->clear();
1201  m_mcEnergy->clear();
1202  m_mcPx->clear();
1203  m_mcPy->clear();
1204  m_mcPz->clear();
1205  m_mcDecayVtxX->clear();
1206  m_mcDecayVtxY->clear();
1207  m_mcDecayVtxZ->clear();
1208  m_mcProdVtxX->clear();
1209  m_mcProdVtxY->clear();
1210  m_mcProdVtxZ->clear();
1211  m_mcSecondaryPhysProc->clear();
1212 
1214  if (m_doTracking == true) {
1215  m_trkMultip = 0;
1216  m_trkIdx->clear();
1217  m_trkPdg->clear();
1218  m_trkCharge->clear();
1219  m_trkPx->clear();
1220  m_trkPy->clear();
1221  m_trkPz->clear();
1222  m_trkP->clear();
1223  m_trkPhi->clear();
1224  m_trkTheta->clear();
1225  m_trkPhi->clear();
1226  m_trkX->clear();
1227  m_trkY->clear();
1228  m_trkZ->clear();
1229 
1231  m_eclpidtrkIdx->clear();
1232  m_eclpidEnergy->clear();
1233  m_eclpidEop->clear();
1234  m_eclpidE9E21->clear();
1235  m_eclpidNCrystals->clear();
1236  m_eclpidNClusters->clear();
1237  m_eclLogLikeEl->clear();
1238  m_eclLogLikeMu->clear();
1239  m_eclLogLikePi->clear();
1240  }
1241 
1242 
1243  if (m_eventmetadata) {
1244  m_iExperiment = m_eventmetadata->getExperiment();
1245  m_iRun = m_eventmetadata->getRun();
1246  m_iEvent = m_eventmetadata->getEvent();
1247  } else {
1248  m_iExperiment = -1;
1249  m_iRun = -1;
1250  m_iEvent = -1;
1251  }
1252 
1253  //EventLevelClusteringInfo
1254  m_nECLCalDigitsOutOfTimeFWD = m_eventLevelClusteringInfo->getNECLCalDigitsOutOfTimeFWD();
1255  m_nECLCalDigitsOutOfTimeBarrel = m_eventLevelClusteringInfo->getNECLCalDigitsOutOfTimeBarrel();
1256  m_nECLCalDigitsOutOfTimeBWD = m_eventLevelClusteringInfo->getNECLCalDigitsOutOfTimeBWD();
1257  m_nECLShowersRejectedFWD = m_eventLevelClusteringInfo->getNECLShowersRejectedFWD();
1258  m_nECLShowersRejectedBarrel = m_eventLevelClusteringInfo->getNECLShowersRejectedBarrel();
1259  m_nECLShowersRejectedBWD = m_eventLevelClusteringInfo->getNECLShowersRejectedBWD();
1260 
1261  if (m_doDigits == 1) {
1262  //DIGITS
1263  m_eclDigitMultip = m_eclDigits.getEntries();
1264  for (int idigits = 0; idigits < m_eclDigits.getEntries() ; idigits++) {
1265  ECLDigit* aECLDigits = m_eclDigits[idigits];
1266  m_eclDigitIdx->push_back(idigits);
1267  m_eclDigitCellId->push_back(aECLDigits->getCellId());
1268  m_eclDigitAmp->push_back(aECLDigits->getAmp());
1269  m_eclDigitTimeFit->push_back(aECLDigits->getTimeFit());
1270  m_eclDigitFitQuality->push_back(aECLDigits->getQuality());
1271 
1272  if (aECLDigits->getRelated<MCParticle>() != (nullptr)) {
1273  const MCParticle* mc_digit = aECLDigits->getRelated<MCParticle>();
1274  m_eclDigitToMC->push_back(mc_digit->getArrayIndex());
1275  } else
1276  m_eclDigitToMC->push_back(-1);
1277 
1278  if (aECLDigits->getRelated<ECLCalDigit>() != (nullptr)) {
1279  const ECLCalDigit* cal_digit = aECLDigits->getRelated<ECLCalDigit>();
1280  m_eclDigitToCalDigit->push_back(cal_digit->getArrayIndex());
1281  } else
1282  m_eclDigitToCalDigit->push_back(-1);
1283  }
1284 
1285  //CAL DIGITS
1286  m_eclCalDigitMultip = m_eclCalDigits.getEntries();
1287  for (uint icaldigits = 0; icaldigits < (uint)m_eclCalDigits.getEntries() ; icaldigits++) {
1288  ECLCalDigit* aECLCalDigits = m_eclCalDigits[icaldigits];
1289 
1290  m_eclCalDigitIdx->push_back(icaldigits);
1291  m_eclCalDigitCellId->push_back(aECLCalDigits->getCellId());
1292  m_eclCalDigitAmp->push_back(aECLCalDigits->getEnergy());
1293  m_eclCalDigitTimeFit->push_back(aECLCalDigits->getTime());
1294  m_eclCalDigitFitQuality->push_back(aECLCalDigits->isFailedFit());
1295 
1296  double sumHit = 0;
1297  int idx[10];
1298  for (int i = 0; i < 10; i++)
1299  idx[i] = -1;
1300 
1301  double wi[10];
1302  for (int i = 0; i < 10; i++)
1303  wi[i] = -1;
1304 
1305  int ii = 0;
1306  sumHit = 0;
1307 
1308  auto digitMCRelations = aECLCalDigits->getRelationsTo<MCParticle>();
1309  for (unsigned int i = 0; i < digitMCRelations.size(); ++i) {
1310  if (ii < 10) {
1311  const auto mcParticle = digitMCRelations.object(i);
1312  idx[ii] = mcParticle->getIndex() - 1;
1313  wi[ii] = digitMCRelations.weight(i);
1314  sumHit = sumHit + digitMCRelations.weight(i);
1315  ii++;
1316  }
1317  }
1318 
1319  //Re-ordering based on contribution
1320  int y = 0;
1321  while (y < 10) {
1322  for (int i = 0; i < 9; i++) {
1323  if (((idx[i]) > -1) && ((idx[i + 1]) > -1)) {
1324  if (wi[i] < wi[i + 1]) {
1325  int temp = idx[i];
1326  idx[i] = idx[i + 1];
1327  idx[i + 1] = temp;
1328 
1329  double wtemp = wi[i];
1330  wi[i] = wi[i + 1];
1331  wi[i + 1] = wtemp;
1332  }
1333  }
1334  }
1335  y++;
1336  }
1337 
1338  m_eclCalDigitToBkgWeight->push_back(aECLCalDigits->getEnergy() - sumHit);
1339  m_eclCalDigitSimHitSum->push_back(sumHit);
1340  if (idx[0] > -1) {
1341  m_eclCalDigitToMCWeight1->push_back(wi[0]);
1342  m_eclCalDigitToMC1->push_back(idx[0]);
1343  MCParticle* amcParticle = m_mcParticles[idx[0]];
1344  m_eclCalDigitToMC1PDG->push_back(amcParticle->getPDG());
1345  } else {
1346  m_eclCalDigitToMCWeight1->push_back(-1);
1347  m_eclCalDigitToMC1->push_back(-1);
1348  m_eclCalDigitToMC1PDG->push_back(-1);
1349  }
1350  if (idx[1] > -1) {
1351  m_eclCalDigitToMCWeight2->push_back(wi[1]);
1352  m_eclCalDigitToMC2->push_back(idx[1]);
1353  MCParticle* amcParticle = m_mcParticles[idx[1]];
1354  m_eclCalDigitToMC2PDG->push_back(amcParticle->getPDG());
1355  } else {
1356  m_eclCalDigitToMCWeight2->push_back(-1);
1357  m_eclCalDigitToMC2->push_back(-1);
1358  m_eclCalDigitToMC2PDG->push_back(-1);
1359  }
1360  if (idx[2] > -1) {
1361  m_eclCalDigitToMCWeight3->push_back(wi[2]);
1362  m_eclCalDigitToMC3->push_back(idx[2]);
1363  MCParticle* amcParticle = m_mcParticles[idx[2]];
1364  m_eclCalDigitToMC3PDG->push_back(amcParticle->getPDG());
1365  } else {
1366  m_eclCalDigitToMCWeight3->push_back(-1);
1367  m_eclCalDigitToMC3->push_back(-1);
1368  m_eclCalDigitToMC3PDG->push_back(-1);
1369  }
1370  if (idx[3] > -1) {
1371  m_eclCalDigitToMCWeight4->push_back(wi[3]);
1372  m_eclCalDigitToMC4->push_back(idx[3]);
1373  MCParticle* amcParticle = m_mcParticles[idx[3]];
1374  m_eclCalDigitToMC4PDG->push_back(amcParticle->getPDG());
1375  } else {
1376  m_eclCalDigitToMCWeight4->push_back(-1);
1377  m_eclCalDigitToMC4->push_back(-1);
1378  m_eclCalDigitToMC4PDG->push_back(-1);
1379  }
1380  if (idx[4] > -1) {
1381  m_eclCalDigitToMCWeight5->push_back(wi[4]);
1382  m_eclCalDigitToMC5->push_back(idx[4]);
1383  MCParticle* amcParticle = m_mcParticles[idx[4]];
1384  m_eclCalDigitToMC5PDG->push_back(amcParticle->getPDG());
1385  } else {
1386  m_eclCalDigitToMCWeight5->push_back(-1);
1387  m_eclCalDigitToMC5->push_back(-1);
1388  m_eclCalDigitToMC5PDG->push_back(-1);
1389  }
1390 
1391  if (aECLCalDigits->getRelated<ECLShower>() != (nullptr)) {
1392  const ECLShower* shower_caldigit = aECLCalDigits->getRelated<ECLShower>();
1393  m_eclCalDigitToShower->push_back(shower_caldigit->getArrayIndex());
1394  } else
1395  m_eclCalDigitToShower->push_back(-1);
1396 
1397  if (aECLCalDigits->getRelated<ECLConnectedRegion>() != (nullptr)) {
1398  const ECLConnectedRegion* cr_caldigit = aECLCalDigits->getRelated<ECLConnectedRegion>();
1399  m_eclCalDigitToCR->push_back(cr_caldigit->getCRId());
1400  } else
1401  m_eclCalDigitToCR->push_back(-1);
1402 
1403  if (aECLCalDigits->getRelated<ECLLocalMaximum>() != (nullptr)) {
1404  const ECLLocalMaximum* lm_caldigit = aECLCalDigits->getRelated<ECLLocalMaximum>();
1405  m_eclCalDigitToLM->push_back(lm_caldigit->getLMId());
1406  } else
1407  m_eclCalDigitToLM->push_back(-1);
1408 
1409  }
1410  }
1411 
1412  //CR
1413  int CRmultip = m_eclConnectedRegions.getEntries();
1414  for (int i = 0; i < CRmultip; i++) {
1416  m_eclCRIdx->push_back(aECLCR->getCRId());
1417  m_eclCRIsTrack->push_back(aECLCR->isTrack());
1418  m_eclCRLikelihoodMIPNGamma->push_back(aECLCR->getLikelihoodMIPNGamma());
1421  m_eclCRLikelihoodNGamma->push_back(aECLCR->getLikelihoodNGamma());
1423  m_eclCRLikelihoodMergedPi0->push_back(aECLCR->getLikelihoodMergedPi0());
1424  }
1425 
1426  if (m_doHits == 1) {
1427 
1428  //SIM HITS
1429  m_eclSimHitMultip = m_eclSimHits.getEntries();
1430  for (int isimhits = 0; isimhits < m_eclSimHits.getEntries() ; isimhits++) {
1431  ECLSimHit* aECLSimHits = m_eclSimHits[isimhits];
1432 
1433  m_eclSimHitIdx->push_back(isimhits);
1434  m_eclSimHitCellId->push_back(aECLSimHits->getCellId());
1435  m_eclSimHitPdg->push_back(aECLSimHits->getPDGCode());
1436  m_eclSimHitEnergyDep->push_back(aECLSimHits->getEnergyDep());
1437  m_eclSimHitFlightTime->push_back(aECLSimHits->getFlightTime());
1438  m_eclSimHitX->push_back(aECLSimHits->getPosition().x());
1439  m_eclSimHitY->push_back(aECLSimHits->getPosition().y());
1440  m_eclSimHitZ->push_back(aECLSimHits->getPosition().z());
1441  m_eclSimHitPx->push_back(aECLSimHits->getMomentum().x());
1442  m_eclSimHitPy->push_back(aECLSimHits->getMomentum().y());
1443  m_eclSimHitPz->push_back(aECLSimHits->getMomentum().z());
1444 
1445  if (aECLSimHits->getRelated<MCParticle>() != (nullptr)) {
1446  const MCParticle* mc_simhit = aECLSimHits->getRelated<MCParticle>();
1447  m_eclSimHitToMC->push_back(mc_simhit->getArrayIndex());
1448  } else
1449  m_eclSimHitToMC->push_back(-1);
1450  }
1451 
1452  //HITS
1453  m_eclHitMultip = m_eclHits.getEntries();
1454  for (int ihits = 0; ihits < m_eclHits.getEntries() ; ihits++) {
1455  ECLHit* aECLHits = m_eclHits[ihits];
1456  m_eclHitIdx->push_back(ihits);
1457  m_eclHitCellId->push_back(aECLHits->getCellId());
1458  m_eclHitEnergyDep->push_back(aECLHits->getEnergyDep());
1459  m_eclHitTimeAve->push_back(aECLHits->getTimeAve());
1460 
1461  if (aECLHits->getRelated<ECLDigit>() != (nullptr)) {
1462  const ECLDigit* hit_digit = aECLHits->getRelated<ECLDigit>();
1463  m_eclHitToDigit->push_back(hit_digit->getArrayIndex());
1464  m_eclHitToDigitAmp->push_back(hit_digit->getAmp());
1465  } else {
1466  m_eclHitToDigit->push_back(-1);
1467  m_eclHitToDigitAmp->push_back(-1);
1468  }
1469 
1470  if (m_doPureCsI == true) {
1471  if (aECLHits->getRelated<ECLDigit>(eclPureDigitArrayName()) != (nullptr)) {
1472  const ECLDigit* hit_pdigit = aECLHits->getRelated<ECLDigit>(eclPureDigitArrayName());
1473  m_eclHitToPureDigit->push_back(hit_pdigit->getArrayIndex());
1474  m_eclHitToPureDigitAmp->push_back(hit_pdigit->getAmp());
1475  } else {
1476  m_eclHitToPureDigit->push_back(-1);
1477  m_eclHitToPureDigitAmp->push_back(-1);
1478  }
1479  }
1480 
1481  if (aECLHits->getRelated<MCParticle>() != (nullptr)) {
1482  const MCParticle* mc_hit = aECLHits->getRelated<MCParticle>();
1483  m_eclHitToMC->push_back(mc_hit->getArrayIndex());
1484  } else
1485  m_eclHitToMC->push_back(-1);
1486  }
1487  }
1488 
1489  //LM
1490  m_eclLMMultip = m_eclLocalMaximums.getEntries();
1491  for (unsigned int ilms = 0; ilms < (unsigned int)m_eclLocalMaximums.getEntries() ; ilms++) {
1492  ECLLocalMaximum* aECLLMs = m_eclLocalMaximums[ilms];
1493  m_eclLMId->push_back(aECLLMs->getLMId());
1494  m_eclLMType->push_back(aECLLMs->getType());
1495  m_eclLMCellId->push_back(aECLLMs->getCellId());
1496  }
1497 
1498  //CLUSTERS
1499  m_eclClusterMultip = m_eclClusters.getEntries();
1500  for (unsigned int iclusters = 0; iclusters < (unsigned int)m_eclClusters.getEntries() ; iclusters++) {
1501  ECLCluster* aECLClusters = m_eclClusters[iclusters];
1502  m_eclClusterIdx->push_back(iclusters);
1503 
1504  double clusterE = 0.0;
1505  if (aECLClusters->hasHypothesis(ECLCluster::EHypothesisBit::c_nPhotons)) clusterE = aECLClusters->getEnergy(
1507  else clusterE = aECLClusters->getEnergy(ECLCluster::EHypothesisBit::c_neutralHadron);
1508  m_eclClusterEnergy->push_back(clusterE);
1509 
1510  m_eclClusterEnergyError->push_back(aECLClusters->getUncertaintyEnergy());
1511  m_eclClusterTheta->push_back(aECLClusters->getTheta());
1512  m_eclClusterThetaError->push_back(aECLClusters->getUncertaintyTheta());
1513  m_eclClusterPhi->push_back(aECLClusters->getPhi());
1514  m_eclClusterPhiError->push_back(aECLClusters->getUncertaintyPhi());
1515  m_eclClusterR->push_back(aECLClusters->getR());
1516  m_eclClusterEnergyDepSum->push_back(aECLClusters->getEnergyRaw());
1517  m_eclClusterTiming->push_back(aECLClusters->getTime());
1518  m_eclClusterTimingError->push_back(aECLClusters->getDeltaTime99());
1519  m_eclClusterE9oE21->push_back(aECLClusters->getE9oE21());
1520  m_eclClusterHighestE->push_back(aECLClusters->getEnergyHighestCrystal());
1521  m_eclClusterCellId->push_back(aECLClusters->getMaxECellId());
1522  m_eclClusterNofCrystals->push_back(aECLClusters->getNumberOfCrystals());
1523  m_eclClusterCrystalHealth->push_back(aECLClusters->getStatus());
1524 
1525  m_eclClusterIsTrack->push_back(aECLClusters->isTrack());
1526  m_eclClusterClosestTrackDist->push_back(aECLClusters->getMinTrkDistance());
1527  m_eclClusterDeltaL->push_back(aECLClusters->getDeltaL());
1528 
1529  m_eclClusterAbsZernike40->push_back(aECLClusters->getAbsZernike40());
1530  m_eclClusterAbsZernike51->push_back(aECLClusters->getAbsZernike51());
1531  m_eclClusterZernikeMVA->push_back(aECLClusters->getZernikeMVA());
1532  m_eclClusterE1oE9->push_back(aECLClusters->getE1oE9());
1533  m_eclClusterSecondMoment->push_back(aECLClusters->getSecondMoment());
1534  m_eclClusterLAT->push_back(aECLClusters->getLAT());
1535  m_eclClusterDeltaTime99->push_back(aECLClusters->getDeltaTime99());
1536  m_eclClusterDetectorRegion->push_back(aECLClusters->getDetectorRegion());
1539 
1540  if (aECLClusters->getRelated<ECLShower>() != (nullptr)) {
1541  const ECLShower* shower_cluster = aECLClusters->getRelated<ECLShower>();
1542  m_eclClusterToShower->push_back(shower_cluster->getArrayIndex());
1543  } else
1544  m_eclClusterToShower->push_back(-1);
1545 
1546  //Dump MC Info - Multiple Matching
1547  double sumHit = 0;
1548  int idx[10];
1549  for (int i = 0; i < 10; i++)
1550  idx[i] = -1;
1551 
1552  double wi[10];
1553  for (int i = 0; i < 10; i++)
1554  wi[i] = -1;
1555 
1556  int ii = 0;
1557  sumHit = 0;
1558 
1559  auto clusterMCRelations = aECLClusters->getRelationsTo<MCParticle>();
1560  for (unsigned int i = 0; i < clusterMCRelations.size(); ++i) {
1561  if (ii < 10) {
1562  const auto mcParticle = clusterMCRelations.object(i);
1563  idx[ii] = mcParticle->getIndex() - 1;
1564  wi[ii] = clusterMCRelations.weight(i);
1565  sumHit = sumHit + clusterMCRelations.weight(i);
1566  ii++;
1567  }
1568  }
1569 
1570  //Re-ordering based on contribution
1571  int y = 0;
1572  while (y < 10) {
1573  for (int i = 0; i < 9; i++) {
1574  if (((idx[i]) > -1) && ((idx[i + 1]) > -1)) {
1575  if (wi[i] < wi[i + 1]) {
1576  int temp = idx[i];
1577  idx[i] = idx[i + 1];
1578  idx[i + 1] = temp;
1579 
1580  double wtemp = wi[i];
1581  wi[i] = wi[i + 1];
1582  wi[i + 1] = wtemp;
1583  }
1584  }
1585  }
1586  y++;
1587  }
1588 
1589  m_eclClusterToBkgWeight->push_back(clusterE - sumHit);
1590  m_eclClusterSimHitSum->push_back(sumHit);
1591  if (idx[0] > -1) {
1592  m_eclClusterToMCWeight1->push_back(wi[0]);
1593  m_eclClusterToMC1->push_back(idx[0]);
1594  MCParticle* amcParticle = m_mcParticles[idx[0]];
1595  m_eclClusterToMC1PDG->push_back(amcParticle->getPDG());
1596  } else {
1597  m_eclClusterToMCWeight1->push_back(-1);
1598  m_eclClusterToMC1->push_back(-1);
1599  m_eclClusterToMC1PDG->push_back(-1);
1600  }
1601  if (idx[1] > -1) {
1602  m_eclClusterToMCWeight2->push_back(wi[1]);
1603  m_eclClusterToMC2->push_back(idx[1]);
1604  MCParticle* amcParticle = m_mcParticles[idx[1]];
1605  m_eclClusterToMC2PDG->push_back(amcParticle->getPDG());
1606  } else {
1607  m_eclClusterToMCWeight2->push_back(-1);
1608  m_eclClusterToMC2->push_back(-1);
1609  m_eclClusterToMC2PDG->push_back(-1);
1610  }
1611  if (idx[2] > -1) {
1612  m_eclClusterToMCWeight3->push_back(wi[2]);
1613  m_eclClusterToMC3->push_back(idx[2]);
1614  MCParticle* amcParticle = m_mcParticles[idx[2]];
1615  m_eclClusterToMC3PDG->push_back(amcParticle->getPDG());
1616  } else {
1617  m_eclClusterToMCWeight3->push_back(-1);
1618  m_eclClusterToMC3->push_back(-1);
1619  m_eclClusterToMC3PDG->push_back(-1);
1620  }
1621  if (idx[3] > -1) {
1622  m_eclClusterToMCWeight4->push_back(wi[3]);
1623  m_eclClusterToMC4->push_back(idx[3]);
1624  MCParticle* amcParticle = m_mcParticles[idx[3]];
1625  m_eclClusterToMC4PDG->push_back(amcParticle->getPDG());
1626  } else {
1627  m_eclClusterToMCWeight4->push_back(-1);
1628  m_eclClusterToMC4->push_back(-1);
1629  m_eclClusterToMC4PDG->push_back(-1);
1630  }
1631  if (idx[4] > -1) {
1632  m_eclClusterToMCWeight5->push_back(wi[4]);
1633  m_eclClusterToMC5->push_back(idx[4]);
1634  MCParticle* amcParticle = m_mcParticles[idx[4]];
1635  m_eclClusterToMC5PDG->push_back(amcParticle->getPDG());
1636  } else {
1637  m_eclClusterToMCWeight5->push_back(-1);
1638  m_eclClusterToMC5->push_back(-1);
1639  m_eclClusterToMC5PDG->push_back(-1);
1640  }
1641 
1642  }
1643 
1644  if (m_doPureCsI == true) {
1645 
1646  m_eclPureDigitMultip = m_eclPureDigits.getEntries();
1647  for (int idigits = 0; idigits < m_eclPureDigits.getEntries() ; idigits++) {
1648  ECLDigit* aECLPureDigits = m_eclPureDigits[idigits];
1649 
1650  m_eclPureDigitIdx->push_back(idigits);
1651  m_eclPureDigitCellId->push_back(aECLPureDigits->getCellId());
1652  m_eclPureDigitAmp->push_back(aECLPureDigits->getAmp());
1653  m_eclPureDigitTimeFit->push_back(aECLPureDigits->getTimeFit());
1654  m_eclPureDigitFitQuality->push_back(aECLPureDigits->getQuality());
1655 
1656  if (aECLPureDigits->getRelated<MCParticle>() != (nullptr)) {
1657  const MCParticle* mc_digit = aECLPureDigits->getRelated<MCParticle>();
1658  m_eclPureDigitToMC->push_back(mc_digit->getArrayIndex());
1659  } else
1660  m_eclPureDigitToMC->push_back(-1);
1661  }
1662 
1663  //PURE CAL DIGITS
1665  for (uint icaldigits = 0; icaldigits < (uint)m_eclPureCalDigits.getEntries() ; icaldigits++) {
1666  ECLCalDigit* aECLPureCalDigits = m_eclPureCalDigits[icaldigits];
1667 
1668  m_eclPureCalDigitIdx->push_back(icaldigits);
1669  m_eclPureCalDigitCellId->push_back(aECLPureCalDigits->getCellId());
1670  m_eclPureCalDigitAmp->push_back(aECLPureCalDigits->getEnergy());
1671  m_eclPureCalDigitTimeFit->push_back(aECLPureCalDigits->getTime());
1672  m_eclPureCalDigitFitQuality->push_back(aECLPureCalDigits->isFailedFit());
1673 
1674  double sumHit = 0;
1675  int idx[10];
1676  for (int i = 0; i < 10; i++)
1677  idx[i] = -1;
1678 
1679  double wi[10];
1680  for (int i = 0; i < 10; i++)
1681  wi[i] = -1;
1682 
1683  int ii = 0;
1684  sumHit = 0;
1685 
1686  auto digitMCRelations = aECLPureCalDigits->getRelationsTo<MCParticle>();
1687  for (unsigned int i = 0; i < digitMCRelations.size(); ++i) {
1688  if (ii < 10) {
1689  const auto mcParticle = digitMCRelations.object(i);
1690  idx[ii] = mcParticle->getIndex() - 1;
1691  wi[ii] = digitMCRelations.weight(i);
1692  sumHit = sumHit + digitMCRelations.weight(i);
1693  ii++;
1694  }
1695  }
1696 
1697  //Re-ordering based on contribution
1698  int y = 0;
1699  while (y < 10) {
1700  for (int i = 0; i < 9; i++) {
1701  if (((idx[i]) > -1) && ((idx[i + 1]) > -1)) {
1702  if (wi[i] < wi[i + 1]) {
1703  int temp = idx[i];
1704  idx[i] = idx[i + 1];
1705  idx[i + 1] = temp;
1706 
1707  double wtemp = wi[i];
1708  wi[i] = wi[i + 1];
1709  wi[i + 1] = wtemp;
1710  }
1711  }
1712  }
1713  y++;
1714  }
1715 
1716  m_eclPureCalDigitToBkgWeight->push_back(aECLPureCalDigits->getEnergy() - sumHit);
1717  m_eclPureCalDigitSimHitSum->push_back(sumHit);
1718  if (idx[0] > -1) {
1719  m_eclPureCalDigitToMCWeight1->push_back(wi[0]);
1720  m_eclPureCalDigitToMC1->push_back(idx[0]);
1721  MCParticle* amcParticle = m_mcParticles[idx[0]];
1722  m_eclPureCalDigitToMC1PDG->push_back(amcParticle->getPDG());
1723  } else {
1724  m_eclPureCalDigitToMCWeight1->push_back(-1);
1725  m_eclPureCalDigitToMC1->push_back(-1);
1726  m_eclPureCalDigitToMC1PDG->push_back(-1);
1727  }
1728  if (idx[1] > -1) {
1729  m_eclPureCalDigitToMCWeight2->push_back(wi[1]);
1730  m_eclPureCalDigitToMC2->push_back(idx[1]);
1731  MCParticle* amcParticle = m_mcParticles[idx[1]];
1732  m_eclPureCalDigitToMC2PDG->push_back(amcParticle->getPDG());
1733  } else {
1734  m_eclPureCalDigitToMCWeight2->push_back(-1);
1735  m_eclPureCalDigitToMC2->push_back(-1);
1736  m_eclPureCalDigitToMC2PDG->push_back(-1);
1737  }
1738  if (idx[2] > -1) {
1739  m_eclPureCalDigitToMCWeight3->push_back(wi[2]);
1740  m_eclPureCalDigitToMC3->push_back(idx[2]);
1741  MCParticle* amcParticle = m_mcParticles[idx[2]];
1742  m_eclPureCalDigitToMC3PDG->push_back(amcParticle->getPDG());
1743  } else {
1744  m_eclPureCalDigitToMCWeight3->push_back(-1);
1745  m_eclPureCalDigitToMC3->push_back(-1);
1746  m_eclPureCalDigitToMC3PDG->push_back(-1);
1747  }
1748  if (idx[3] > -1) {
1749  m_eclPureCalDigitToMCWeight4->push_back(wi[3]);
1750  m_eclPureCalDigitToMC4->push_back(idx[3]);
1751  MCParticle* amcParticle = m_mcParticles[idx[3]];
1752  m_eclPureCalDigitToMC4PDG->push_back(amcParticle->getPDG());
1753  } else {
1754  m_eclPureCalDigitToMCWeight4->push_back(-1);
1755  m_eclPureCalDigitToMC4->push_back(-1);
1756  m_eclPureCalDigitToMC4PDG->push_back(-1);
1757  }
1758  if (idx[4] > -1) {
1759  m_eclPureCalDigitToMCWeight5->push_back(wi[4]);
1760  m_eclPureCalDigitToMC5->push_back(idx[4]);
1761  MCParticle* amcParticle = m_mcParticles[idx[4]];
1762  m_eclPureCalDigitToMC5PDG->push_back(amcParticle->getPDG());
1763  } else {
1764  m_eclPureCalDigitToMCWeight5->push_back(-1);
1765  m_eclPureCalDigitToMC5->push_back(-1);
1766  m_eclPureCalDigitToMC5PDG->push_back(-1);
1767  }
1768 
1769  if (aECLPureCalDigits->getRelated<ECLShower>() != (nullptr)) {
1770  const ECLShower* shower_caldigit = aECLPureCalDigits->getRelated<ECLShower>();
1771  m_eclPureCalDigitToShower->push_back(shower_caldigit->getArrayIndex());
1772  } else
1773  m_eclPureCalDigitToShower->push_back(-1);
1774 
1775  if (aECLPureCalDigits->getRelated<ECLConnectedRegion>(eclPureConnectedRegionArrayName()) != (nullptr)) {
1776  const ECLConnectedRegion* cr_caldigit = aECLPureCalDigits->getRelated<ECLConnectedRegion>(eclPureConnectedRegionArrayName());
1777  m_eclPureCalDigitToCR->push_back(cr_caldigit->getCRId());
1778  } else
1779  m_eclPureCalDigitToCR->push_back(-1);
1780 
1781  if (aECLPureCalDigits->getRelated<ECLLocalMaximum>(eclPureLocalMaximumArrayName()) != (nullptr)) {
1782  const ECLLocalMaximum* lm_caldigit = aECLPureCalDigits->getRelated<ECLLocalMaximum>(eclPureLocalMaximumArrayName());
1783  m_eclPureCalDigitToLM->push_back(lm_caldigit->getLMId());
1784  } else
1785  m_eclPureCalDigitToLM->push_back(-1);
1786 
1787  }
1788 
1789  //CR
1790  int PureCRmultip = m_eclPureConnectedRegions.getEntries();
1791  for (int i = 0; i < PureCRmultip; i++) {
1793  m_eclPureCRIdx->push_back(aECLPureCR->getCRId());
1794  m_eclPureCRIsTrack->push_back(aECLPureCR->isTrack());
1795  m_eclPureCRLikelihoodMIPNGamma->push_back(aECLPureCR->getLikelihoodMIPNGamma());
1798  m_eclPureCRLikelihoodNGamma->push_back(aECLPureCR->getLikelihoodNGamma());
1800  m_eclPureCRLikelihoodMergedPi0->push_back(aECLPureCR->getLikelihoodMergedPi0());
1801  }
1802 
1803  //LM
1805  for (unsigned int pure_ilms = 0; pure_ilms < (unsigned int)m_eclPureLocalMaximums.getEntries() ; pure_ilms++) {
1806  ECLLocalMaximum* aECLLMs = m_eclPureLocalMaximums[pure_ilms];
1807  m_eclPureLMId->push_back(aECLLMs->getLMId());
1808  m_eclPureLMType->push_back(aECLLMs->getType());
1809  m_eclPureLMCellId->push_back(aECLLMs->getCellId());
1810  }
1811 
1813  for (unsigned int iclusters = 0; iclusters < (unsigned int)m_eclPureClusters.getEntries() ; iclusters++) {
1814  ECLCluster* aECLClusters = m_eclPureClusters[iclusters];
1815  m_eclPureClusterIdx->push_back(iclusters);
1816 
1817  double clusterE = 0.0;
1818  if (aECLClusters->hasHypothesis(ECLCluster::EHypothesisBit::c_nPhotons)) clusterE = aECLClusters->getEnergy(
1820  else clusterE = aECLClusters->getEnergy(ECLCluster::EHypothesisBit::c_neutralHadron);
1821  m_eclPureClusterEnergy->push_back(clusterE);
1822 
1823  m_eclPureClusterEnergyError->push_back(aECLClusters->getUncertaintyEnergy());
1824  m_eclPureClusterTheta->push_back(aECLClusters->getTheta());
1825  m_eclPureClusterThetaError->push_back(aECLClusters->getUncertaintyTheta());
1826  m_eclPureClusterPhi->push_back(aECLClusters->getPhi());
1827  m_eclPureClusterPhiError->push_back(aECLClusters->getUncertaintyPhi());
1828  m_eclPureClusterR->push_back(aECLClusters->getR());
1829  m_eclPureClusterEnergyDepSum->push_back(aECLClusters->getEnergyRaw());
1830  m_eclPureClusterTiming->push_back(aECLClusters->getTime());
1831  m_eclPureClusterTimingError->push_back(aECLClusters->getDeltaTime99());
1832  m_eclPureClusterE9oE21->push_back(aECLClusters->getE9oE21());
1833  m_eclPureClusterHighestE->push_back(aECLClusters->getEnergyHighestCrystal());
1834  m_eclPureClusterCellId->push_back(aECLClusters->getMaxECellId());
1835  m_eclPureClusterLat->push_back(aECLClusters->getLAT());
1836  m_eclPureClusterNofCrystals->push_back(aECLClusters->getNumberOfCrystals());
1837  m_eclPureClusterCrystalHealth->push_back(aECLClusters->getStatus());
1838 
1839  m_eclPureClusterClosestTrackDist->push_back(aECLClusters->getMinTrkDistance());
1840  m_eclPureClusterAbsZernike40->push_back(aECLClusters->getAbsZernike40());
1841  m_eclPureClusterAbsZernike51->push_back(aECLClusters->getAbsZernike51());
1842  m_eclPureClusterZernikeMVA->push_back(aECLClusters->getZernikeMVA());
1843  m_eclPureClusterSecondMoment->push_back(aECLClusters->getSecondMoment());
1844 
1845  m_eclPureClusterIsTrack->push_back(aECLClusters->isTrack());
1846  m_eclPureClusterDeltaL->push_back(aECLClusters->getDeltaL());
1847 
1848  m_eclPureClusterE1oE9->push_back(aECLClusters->getE1oE9());
1849  m_eclPureClusterDeltaTime99->push_back(aECLClusters->getDeltaTime99());
1850  m_eclPureClusterDetectorRegion->push_back(aECLClusters->getDetectorRegion());
1853 
1854  //Dump MC Info - Multiple Matching
1855  double sumHit = 0;
1856  int idx[10];
1857  for (int i = 0; i < 10; i++)
1858  idx[i] = -1;
1859 
1860  double wi[10];
1861  for (int i = 0; i < 10; i++)
1862  wi[i] = -1;
1863 
1864  int ii = 0;
1865  sumHit = 0;
1866 
1867  auto clusterMCRelations = aECLClusters->getRelationsTo<MCParticle>();
1868  for (unsigned int i = 0; i < clusterMCRelations.size(); ++i) {
1869  if (ii < 10) {
1870  const auto mcParticle = clusterMCRelations.object(i);
1871  idx[ii] = mcParticle->getIndex() - 1;
1872  wi[ii] = clusterMCRelations.weight(i);
1873  sumHit = sumHit + clusterMCRelations.weight(i);
1874  ii++;
1875  }
1876  }
1877 
1878  //Re-ordering based on contribution
1879  int y = 0;
1880  while (y < 10) {
1881  for (int i = 0; i < 9; i++) {
1882  if (((idx[i]) > -1) && ((idx[i + 1]) > -1)) {
1883  if (wi[i] < wi[i + 1]) {
1884  int temp = idx[i];
1885  idx[i] = idx[i + 1];
1886  idx[i + 1] = temp;
1887 
1888  double wtemp = wi[i];
1889  wi[i] = wi[i + 1];
1890  wi[i + 1] = wtemp;
1891  }
1892  }
1893  }
1894  y++;
1895  }
1896 
1897  m_eclPureClusterToBkgWeight->push_back(clusterE - sumHit);
1898  if (idx[0] > -1) {
1899  m_eclPureClusterToMCWeight1->push_back(wi[0]);
1900  m_eclPureClusterToMC1->push_back(idx[0]);
1901  MCParticle* amcParticle = m_mcParticles[idx[0]];
1902  m_eclPureClusterToMC1PDG->push_back(amcParticle->getPDG());
1903  } else {
1904  m_eclPureClusterToMCWeight1->push_back(-1);
1905  m_eclPureClusterToMC1->push_back(-1);
1906  m_eclPureClusterToMC1PDG->push_back(-1);
1907  }
1908  if (idx[1] > -1) {
1909  m_eclPureClusterToMCWeight2->push_back(wi[1]);
1910  m_eclPureClusterToMC2->push_back(idx[1]);
1911  MCParticle* amcParticle = m_mcParticles[idx[1]];
1912  m_eclPureClusterToMC2PDG->push_back(amcParticle->getPDG());
1913  } else {
1914  m_eclPureClusterToMCWeight2->push_back(-1);
1915  m_eclPureClusterToMC2->push_back(-1);
1916  m_eclPureClusterToMC2PDG->push_back(-1);
1917  }
1918  if (idx[2] > -1) {
1919  m_eclPureClusterToMCWeight3->push_back(wi[2]);
1920  m_eclPureClusterToMC3->push_back(idx[2]);
1921  MCParticle* amcParticle = m_mcParticles[idx[2]];
1922  m_eclPureClusterToMC3PDG->push_back(amcParticle->getPDG());
1923  } else {
1924  m_eclPureClusterToMCWeight3->push_back(-1);
1925  m_eclPureClusterToMC3->push_back(-1);
1926  m_eclPureClusterToMC3PDG->push_back(-1);
1927  }
1928  if (idx[3] > -1) {
1929  m_eclPureClusterToMCWeight4->push_back(wi[3]);
1930  m_eclPureClusterToMC4->push_back(idx[3]);
1931  MCParticle* amcParticle = m_mcParticles[idx[3]];
1932  m_eclPureClusterToMC4PDG->push_back(amcParticle->getPDG());
1933  } else {
1934  m_eclPureClusterToMCWeight4->push_back(-1);
1935  m_eclPureClusterToMC4->push_back(-1);
1936  m_eclPureClusterToMC4PDG->push_back(-1);
1937  }
1938  if (idx[4] > -1) {
1939  m_eclPureClusterToMCWeight5->push_back(wi[4]);
1940  m_eclPureClusterToMC5->push_back(idx[4]);
1941  MCParticle* amcParticle = m_mcParticles[idx[4]];
1942  m_eclPureClusterToMC5PDG->push_back(amcParticle->getPDG());
1943  } else {
1944  m_eclPureClusterToMCWeight5->push_back(-1);
1945  m_eclPureClusterToMC5->push_back(-1);
1946  m_eclPureClusterToMC5PDG->push_back(-1);
1947  }
1948 
1949  }
1950  }
1951 
1952  m_eclShowerMultip = m_eclShowers.getEntries();
1953  for (uint ishowers = 0; ishowers < (uint)m_eclShowers.getEntries() ; ishowers++) {
1954  ECLShower* aECLShowers = m_eclShowers[ishowers];
1955  m_eclShowerIdx->push_back(ishowers);
1956  m_eclShowerEnergy->push_back(aECLShowers->getEnergy());
1957  m_eclShowerTheta->push_back(aECLShowers->getTheta());
1958  m_eclShowerPhi->push_back(aECLShowers->getPhi());
1959  m_eclShowerR->push_back(aECLShowers->getR());
1960  m_eclShowerNHits->push_back(aECLShowers->getNumberOfCrystals());
1961  m_eclShowerE9oE21->push_back(aECLShowers->getE9oE21());
1962  m_eclShowerUncEnergy->push_back(aECLShowers->getEnergyRaw());
1963  m_eclShowerTime->push_back(aECLShowers->getTime());
1964  m_eclShowerT99->push_back(aECLShowers->getDeltaTime99());
1965  m_eclShowerConnectedRegionId->push_back(aECLShowers->getConnectedRegionId());
1966  m_eclShowerHypothesisId->push_back(aECLShowers->getHypothesisId());
1967  m_eclShowerCentralCellId->push_back(aECLShowers->getCentralCellId());
1968  m_eclShowerEnergyError->push_back(aECLShowers->getUncertaintyEnergy());
1969  m_eclShowerThetaError->push_back(aECLShowers->getUncertaintyTheta());
1970  m_eclShowerPhiError->push_back(aECLShowers->getUncertaintyPhi());
1971  m_eclShowerTimeResolution->push_back(aECLShowers->getDeltaTime99());
1972  m_eclShowerHighestEnergy->push_back(aECLShowers->getEnergyHighestCrystal());
1973  m_eclShowerLateralEnergy->push_back(aECLShowers->getLateralEnergy());
1974  m_eclShowerMinTrkDistance->push_back(aECLShowers->getMinTrkDistance());
1975  m_eclShowerTrkDepth->push_back(aECLShowers->getTrkDepth());
1976  m_eclShowerShowerDepth->push_back(aECLShowers->getShowerDepth());
1977  m_eclShowerAbsZernike40->push_back(aECLShowers->getAbsZernikeMoment(4, 0));
1978  m_eclShowerAbsZernike51->push_back(aECLShowers->getAbsZernikeMoment(5, 1));
1979  m_eclShowerZernikeMVA->push_back(aECLShowers->getZernikeMVA());
1980  m_eclShowerSecondMoment->push_back(aECLShowers->getSecondMoment());
1981  m_eclShowerE1oE9->push_back(aECLShowers->getE1oE9());
1982  m_eclShowerIsTrack->push_back(aECLShowers->getIsTrack());
1984 
1985  double fe = 0.;
1986  double se = 0.;
1987 
1988  auto showerDigitRelations = aECLShowers->getRelationsTo<ECLCalDigit>();
1989  for (unsigned int i = 0; i < showerDigitRelations.size(); ++i) {
1990  const auto aECLCalDigits = showerDigitRelations.object(i);
1991  if (aECLCalDigits->getEnergy() > fe) {
1992  se = fe;
1993  fe = aECLCalDigits->getEnergy();
1994  }
1995  }
1996  if (fe > 0 && se > 0)
1997  m_eclShowerHighestE1mE2->push_back(fe - se);
1998  else
1999  m_eclShowerHighestE1mE2->push_back(-1);
2000 
2001  int lm1[5] = { -1, -1, -1, -1, -1};
2002 
2003  auto showerLMRelations = aECLShowers->getRelationsTo<ECLLocalMaximum>();
2004  for (unsigned int i = 0; i < showerLMRelations.size(); ++i) {
2005  const auto aECLLM = showerLMRelations.object(i);
2006  lm1[i] = aECLLM->getLMId();
2007  }
2008  m_eclShowerToLM1->push_back(lm1[0]);
2009  m_eclShowerToLM2->push_back(lm1[1]);
2010  m_eclShowerToLM3->push_back(lm1[2]);
2011  m_eclShowerToLM4->push_back(lm1[3]);
2012  m_eclShowerToLM5->push_back(lm1[4]);
2013 
2014  double sumHit = 0;
2015 
2016  int idx[10];
2017  for (int i = 0; i < 10; i++)
2018  idx[i] = -1;
2019 
2020  double wi[10];
2021  for (int i = 0; i < 10; i++)
2022  wi[i] = -1;
2023 
2024  int ii = 0;
2025  sumHit = 0;
2026 
2027  auto showerMCRelations = aECLShowers->getRelationsTo<MCParticle>();
2028  for (unsigned int i = 0; i < showerMCRelations.size(); ++i) {
2029  if (ii < 10) {
2030  const auto mcParticle = showerMCRelations.object(i);
2031  idx[ii] = mcParticle->getIndex() - 1;
2032  wi[ii] = showerMCRelations.weight(i);
2033  sumHit = sumHit + showerMCRelations.weight(i);
2034  ii++;
2035  }
2036  }
2037 
2038  //Re-ordering based on contribution
2039  int y = 0;
2040  while (y < 10) {
2041  for (int i = 0; i < 9; i++) {
2042  if (((idx[i]) > -1) && ((idx[i + 1]) > -1)) {
2043  if (wi[i] < wi[i + 1]) {
2044  int temp = idx[i];
2045  idx[i] = idx[i + 1];
2046  idx[i + 1] = temp;
2047 
2048  double wtemp = wi[i];
2049  wi[i] = wi[i + 1];
2050  wi[i + 1] = wtemp;
2051  }
2052  }
2053  }
2054  y++;
2055  }
2056 
2057  int no_Primary = 1;
2058 
2059  for (unsigned int i = 0; i < showerMCRelations.size(); ++i) {
2060  const auto mcParticle = showerMCRelations.object(i);
2061  if (mcParticle->getSecondaryPhysicsProcess() == 0 && mcParticle->getPDG() == Const::Klong.getPDGCode()) {
2062  double vtxx = mcParticle->getDecayVertex().X();
2063  double vtxy = mcParticle->getDecayVertex().Y();
2064  double vtxz = mcParticle->getDecayVertex().Z();
2065  if ((TMath::Sqrt(vtxx * vtxx + vtxy * vtxy) > 118) || (vtxz > 196.16) || (vtxz < -102.16))
2066  no_Primary = 0;
2067  } else if (mcParticle->getSecondaryPhysicsProcess() != 0 && mcParticle->getMother()->getPDG() == Const::Klong.getPDGCode()) {
2068  double vtxx = mcParticle->getProductionVertex().X();
2069  double vtxy = mcParticle->getProductionVertex().Y();
2070  double vtxz = mcParticle->getProductionVertex().Z();
2071  if ((TMath::Sqrt(vtxx * vtxx + vtxy * vtxy) > 118) || (vtxz > 196.16) || (vtxz < -102.16))
2072  no_Primary = 0;
2073  }
2074  }
2075 
2076  if (no_Primary == 0)
2077  m_eclShowerMCVtxInEcl->push_back(1);
2078  else
2079  m_eclShowerMCVtxInEcl->push_back(0);
2080 
2081  double no_fMatch = 0;
2082  double no_fFMatch = 0;
2083 
2084  for (unsigned int i = 0; i < showerMCRelations.size(); ++i) {
2085  const auto mcParticle = showerMCRelations.object(i);
2086  if (mcParticle->getSecondaryPhysicsProcess() == 0) {
2087  double vtxx = mcParticle->getDecayVertex().X();
2088  double vtxy = mcParticle->getDecayVertex().Y();
2089  double vtxz = mcParticle->getDecayVertex().Z();
2090  double px = mcParticle->getMomentum().X();
2091  double py = mcParticle->getMomentum().Y();
2092  double pz = mcParticle->getMomentum().Z();
2093  double p = TMath::Sqrt(px * px + py * py + pz * pz);
2094  double pTheta = TMath::ACos(pz / p);
2095  double pPhi = 10.;
2096  if (py > 0) {
2097  if (px > 0)
2098  pPhi = TMath::ATan(py / px);
2099  if (px < 0)
2100  pPhi = TMath::ATan(py / px) + M_PI;
2101  } else {
2102  if (px > 0)
2103  pPhi = TMath::ATan(py / px) ;
2104  if (px < 0)
2105  pPhi = TMath::ATan(py / px) - M_PI;
2106  }
2107  if ((TMath::Sqrt(vtxx * vtxx + vtxy * vtxy) > 118) || (vtxz > 196.16) || (vtxz < -102.16)) {
2108  if (TMath::Abs(aECLShowers->getTheta() - pTheta) < 0.05 && TMath::Abs(aECLShowers->getPhi() - pPhi) < 0.05)
2109  no_fMatch = 1;
2110  no_fFMatch = 1;
2111  }
2112  } else if (mcParticle->getMother()->getPDG() == Const::Klong.getPDGCode()) {
2113  double vtxx = mcParticle->getProductionVertex().X();
2114  double vtxy = mcParticle->getProductionVertex().Y();
2115  double vtxz = mcParticle->getProductionVertex().Z();
2116  MCParticle* amcParticle = mcParticle->getMother();
2117  double px = amcParticle->getMomentum().X();
2118  double py = amcParticle->getMomentum().Y();
2119  double pz = amcParticle->getMomentum().Z();
2120  double p = TMath::Sqrt(px * px + py * py + pz * pz);
2121  double pTheta = TMath::ACos(pz / p);
2122  double pPhi = 10.;
2123  if (py > 0) {
2124  if (px > 0)
2125  pPhi = TMath::ATan(py / px);
2126  if (px < 0)
2127  pPhi = TMath::ATan(py / px) + M_PI;
2128  } else {
2129  if (px > 0)
2130  pPhi = TMath::ATan(py / px) ;
2131  if (px < 0)
2132  pPhi = TMath::ATan(py / px) - M_PI;
2133  }
2134  if ((TMath::Sqrt(vtxx * vtxx + vtxy * vtxy) > 118) || (vtxz > 196.16) || (vtxz < -102.16)) {
2135  if (TMath::Abs(aECLShowers->getTheta() - pTheta) < 0.05 && TMath::Abs(aECLShowers->getPhi() - pPhi) < 0.05)
2136  no_fMatch = 1;
2137  }
2138  }
2139  }
2140 
2141  if (no_fMatch == 1)
2142  m_eclShowerMCFlightMatch->push_back(1);
2143  else
2144  m_eclShowerMCFlightMatch->push_back(0);
2145 
2146  if (no_fFMatch == 1)
2147  m_eclShowerMCFFlightMatch->push_back(1);
2148  else
2149  m_eclShowerMCFFlightMatch->push_back(0);
2150 
2151  if (idx[0] > -1) {
2152  m_eclShowerToMCWeight1->push_back(wi[0]);
2153  m_eclShowerToMC1->push_back(idx[0]);
2154  MCParticle* amcParticle = m_mcParticles[idx[0]];
2155  m_eclShowerToMC1PDG->push_back(amcParticle->getPDG());
2156  if (amcParticle->getMother() != nullptr) {
2157  m_eclShowerToMC1Moth->push_back(amcParticle->getMother()->getIndex());
2158  m_eclShowerToMC1MothPDG->push_back(amcParticle->getMother()->getPDG());
2159  if (amcParticle->getMother()->getMother() != nullptr) {
2160  m_eclShowerToMC1GMoth->push_back(amcParticle->getMother()->getMother()->getIndex());
2161  m_eclShowerToMC1GMothPDG->push_back(amcParticle->getMother()->getMother()->getPDG());
2162  } else {
2163  m_eclShowerToMC1GMoth->push_back(-999);
2164  m_eclShowerToMC1GMothPDG->push_back(-999);
2165  }
2166  } else {
2167  m_eclShowerToMC1Moth->push_back(-999);
2168  m_eclShowerToMC1MothPDG->push_back(-999);
2169  m_eclShowerToMC1GMoth->push_back(-999);
2170  m_eclShowerToMC1GMothPDG->push_back(-999);
2171  }
2172  } else {
2173  m_eclShowerToMCWeight1->push_back(-1);
2174  m_eclShowerToMC1->push_back(-1);
2175  m_eclShowerToMC1PDG->push_back(-1);
2176  m_eclShowerToMC1Moth->push_back(-1);
2177  m_eclShowerToMC1MothPDG->push_back(-1);
2178  m_eclShowerToMC1GMoth->push_back(-1);
2179  m_eclShowerToMC1GMothPDG->push_back(-1);
2180  }
2181  if (idx[1] > -1) {
2182  m_eclShowerToMCWeight2->push_back(wi[1]);
2183  m_eclShowerToMC2->push_back(idx[1]);
2184  MCParticle* amcParticle = m_mcParticles[idx[1]];
2185  m_eclShowerToMC2PDG->push_back(amcParticle->getPDG());
2186  if (amcParticle->getMother() != nullptr) {
2187  m_eclShowerToMC2Moth->push_back(amcParticle->getMother()->getIndex());
2188  m_eclShowerToMC2MothPDG->push_back(amcParticle->getMother()->getPDG());
2189  if (amcParticle->getMother()->getMother() != nullptr) {
2190  m_eclShowerToMC2GMoth->push_back(amcParticle->getMother()->getMother()->getIndex());
2191  m_eclShowerToMC2GMothPDG->push_back(amcParticle->getMother()->getMother()->getPDG());
2192  } else {
2193  m_eclShowerToMC2GMoth->push_back(-999);
2194  m_eclShowerToMC2GMothPDG->push_back(-999);
2195  }
2196  } else {
2197  m_eclShowerToMC2Moth->push_back(-999);
2198  m_eclShowerToMC2MothPDG->push_back(-999);
2199  m_eclShowerToMC2GMoth->push_back(-999);
2200  m_eclShowerToMC2GMothPDG->push_back(-999);
2201  };
2202  } else {
2203  m_eclShowerToMCWeight2->push_back(-1);
2204  m_eclShowerToMC2->push_back(-1);
2205  m_eclShowerToMC2PDG->push_back(-1);
2206  m_eclShowerToMC2Moth->push_back(-1);
2207  m_eclShowerToMC2MothPDG->push_back(-1);
2208  m_eclShowerToMC2GMoth->push_back(-1);
2209  m_eclShowerToMC2GMothPDG->push_back(-1);
2210  }
2211  if (idx[2] > -1) {
2212  m_eclShowerToMCWeight3->push_back(wi[2]);
2213  m_eclShowerToMC3->push_back(idx[2]);
2214  MCParticle* amcParticle = m_mcParticles[idx[2]];
2215  m_eclShowerToMC3PDG->push_back(amcParticle->getPDG());
2216  if (amcParticle->getMother() != nullptr) {
2217  m_eclShowerToMC3Moth->push_back(amcParticle->getMother()->getIndex());
2218  m_eclShowerToMC3MothPDG->push_back(amcParticle->getMother()->getPDG());
2219  if (amcParticle->getMother()->getMother() != nullptr) {
2220  m_eclShowerToMC3GMoth->push_back(amcParticle->getMother()->getMother()->getIndex());
2221  m_eclShowerToMC3GMothPDG->push_back(amcParticle->getMother()->getMother()->getPDG());
2222  } else {
2223  m_eclShowerToMC3GMoth->push_back(-999);
2224  m_eclShowerToMC3GMothPDG->push_back(-999);
2225  }
2226  } else {
2227  m_eclShowerToMC3Moth->push_back(-999);
2228  m_eclShowerToMC3MothPDG->push_back(-999);
2229  m_eclShowerToMC3GMoth->push_back(-999);
2230  m_eclShowerToMC3GMothPDG->push_back(-999);
2231  }
2232  } else {
2233  m_eclShowerToMCWeight3->push_back(-1);
2234  m_eclShowerToMC3->push_back(-1);
2235  m_eclShowerToMC3PDG->push_back(-1);
2236  m_eclShowerToMC3Moth->push_back(-1);
2237  m_eclShowerToMC3MothPDG->push_back(-1);
2238  m_eclShowerToMC3GMoth->push_back(-1);
2239  m_eclShowerToMC3GMothPDG->push_back(-1);
2240  }
2241  if (idx[3] > -1) {
2242  m_eclShowerToMCWeight4->push_back(wi[3]);
2243  m_eclShowerToMC4->push_back(idx[3]);
2244  MCParticle* amcParticle = m_mcParticles[idx[3]];
2245  m_eclShowerToMC4PDG->push_back(amcParticle->getPDG());
2246  if (amcParticle->getMother() != nullptr) {
2247  m_eclShowerToMC4Moth->push_back(amcParticle->getMother()->getIndex());
2248  m_eclShowerToMC4MothPDG->push_back(amcParticle->getMother()->getPDG());
2249  if (amcParticle->getMother()->getMother() != nullptr) {
2250  m_eclShowerToMC4GMoth->push_back(amcParticle->getMother()->getMother()->getIndex());
2251  m_eclShowerToMC4GMothPDG->push_back(amcParticle->getMother()->getMother()->getPDG());
2252  } else {
2253  m_eclShowerToMC4GMoth->push_back(-999);
2254  m_eclShowerToMC4GMothPDG->push_back(-999);
2255  }
2256  } else {
2257  m_eclShowerToMC4Moth->push_back(-999);
2258  m_eclShowerToMC4MothPDG->push_back(-999);
2259  m_eclShowerToMC4GMoth->push_back(-999);
2260  m_eclShowerToMC4GMothPDG->push_back(-999);
2261  }
2262  } else {
2263  m_eclShowerToMCWeight4->push_back(-1);
2264  m_eclShowerToMC4->push_back(-1);
2265  m_eclShowerToMC4PDG->push_back(-1);
2266  m_eclShowerToMC4Moth->push_back(-1);
2267  m_eclShowerToMC4MothPDG->push_back(-1);
2268  m_eclShowerToMC4GMoth->push_back(-1);
2269  m_eclShowerToMC4GMothPDG->push_back(-1);
2270  }
2271  if (idx[4] > -1) {
2272  m_eclShowerToMCWeight5->push_back(wi[4]);
2273  m_eclShowerToMC5->push_back(idx[4]);
2274  MCParticle* amcParticle = m_mcParticles[idx[4]];
2275  m_eclShowerToMC5PDG->push_back(amcParticle->getPDG());
2276  if (amcParticle->getMother() != nullptr) {
2277  m_eclShowerToMC5Moth->push_back(amcParticle->getMother()->getIndex());
2278  m_eclShowerToMC5MothPDG->push_back(amcParticle->getMother()->getPDG());
2279  if (amcParticle->getMother()->getMother() != nullptr) {
2280  m_eclShowerToMC5GMoth->push_back(amcParticle->getMother()->getMother()->getIndex());
2281  m_eclShowerToMC5GMothPDG->push_back(amcParticle->getMother()->getMother()->getPDG());
2282  } else {
2283  m_eclShowerToMC5GMoth->push_back(-999);
2284  m_eclShowerToMC5GMothPDG->push_back(-999);
2285  }
2286  } else {
2287  m_eclShowerToMC5Moth->push_back(-999);
2288  m_eclShowerToMC5MothPDG->push_back(-999);
2289  m_eclShowerToMC5GMoth->push_back(-999);
2290  m_eclShowerToMC5GMothPDG->push_back(-999);
2291  }
2292  } else {
2293  m_eclShowerToMCWeight5->push_back(-1);
2294  m_eclShowerToMC5->push_back(-1);
2295  m_eclShowerToMC5PDG->push_back(-1);
2296  m_eclShowerToMC5Moth->push_back(-1);
2297  m_eclShowerToMC5MothPDG->push_back(-1);
2298  m_eclShowerToMC5GMoth->push_back(-1);
2299  m_eclShowerToMC5GMothPDG->push_back(-1);
2300  }
2301  m_eclShowerToBkgWeight->push_back(aECLShowers->getEnergy() - sumHit);
2302  }
2303 
2305  for (int imcpart = 0; imcpart < m_mcParticles.getEntries(); imcpart++) {
2306  MCParticle* amcParticle = m_mcParticles[imcpart];
2307  m_mcIdx->push_back(amcParticle->getArrayIndex());
2308  m_mcPdg->push_back(amcParticle->getPDG());
2309  if (amcParticle->getMother() != nullptr) m_mcMothPdg->push_back(amcParticle->getMother()->getPDG());
2310  else m_mcMothPdg->push_back(-999);
2311  if (amcParticle->getMother() != nullptr
2312  && amcParticle->getMother()->getMother() != nullptr) m_mcGMothPdg->push_back(amcParticle->getMother()->getMother()->getPDG());
2313  else m_mcGMothPdg->push_back(-999);
2314  if (amcParticle->getMother() != nullptr && amcParticle->getMother()->getMother() != nullptr
2315  && amcParticle->getMother()->getMother()->getMother() != nullptr)
2316  m_mcGGMothPdg->push_back(amcParticle->getMother()->getMother()->getMother()->getPDG());
2317  else m_mcGGMothPdg->push_back(-999);
2318  m_mcEnergy->push_back(amcParticle->getEnergy());
2319  m_mcSecondaryPhysProc->push_back(amcParticle->getSecondaryPhysicsProcess());
2320 
2321  m_mcPx->push_back(amcParticle->getMomentum().X());
2322  m_mcPy->push_back(amcParticle->getMomentum().Y());
2323  m_mcPz->push_back(amcParticle->getMomentum().Z());
2324 
2325  m_mcDecayVtxX->push_back(amcParticle->getDecayVertex().X());
2326  m_mcDecayVtxY->push_back(amcParticle->getDecayVertex().Y());
2327  m_mcDecayVtxZ->push_back(amcParticle->getDecayVertex().Z());
2328 
2329  m_mcProdVtxX->push_back(amcParticle->getProductionVertex().X());
2330  m_mcProdVtxY->push_back(amcParticle->getProductionVertex().Y());
2331  m_mcProdVtxZ->push_back(amcParticle->getProductionVertex().Z());
2332 
2333  }
2334 
2335  if (m_doTracking == true) {
2336  m_trkMultip = 0;
2337  for (const Track& itrk : m_tracks) {
2338  const TrackFitResult* atrk = itrk.getTrackFitResult(Const::pion);
2339  if (atrk == nullptr) continue;
2340 
2341  m_trkIdx->push_back(m_trkMultip);
2342  m_trkPdg->push_back(atrk->getParticleType().getPDGCode());
2343  m_trkCharge->push_back(atrk->getChargeSign());
2344  m_trkPx->push_back(atrk->getMomentum().X());
2345  m_trkPy->push_back(atrk->getMomentum().Y());
2346  m_trkPz->push_back(atrk->getMomentum().Z());
2347  m_trkP->push_back(atrk->getMomentum().R());
2348  m_trkTheta->push_back(atrk->getMomentum().Theta());
2349  m_trkPhi->push_back(atrk->getMomentum().Phi());
2350  m_trkX->push_back(atrk->getPosition().X());
2351  m_trkY->push_back(atrk->getPosition().Y());
2352  m_trkZ->push_back(atrk->getPosition().Z());
2353 
2354  const ECLPidLikelihood* eclpid = itrk.getRelatedTo<ECLPidLikelihood>() ;
2355 
2356  if (eclpid != nullptr) {
2357  m_eclpidtrkIdx -> push_back(m_trkMultip);
2358  m_eclpidEnergy -> push_back(eclpid-> energy());
2359  m_eclpidEop -> push_back(eclpid-> eop());
2360  m_eclpidE9E21 -> push_back(eclpid-> e9e25());
2361  m_eclpidNCrystals -> push_back(eclpid-> nCrystals());
2362  m_eclpidNClusters -> push_back(eclpid-> nClusters());
2363  m_eclLogLikeEl -> push_back(eclpid-> getLogLikelihood(Const::electron));
2364  m_eclLogLikeMu -> push_back(eclpid-> getLogLikelihood(Const::muon));
2365  m_eclLogLikePi -> push_back(eclpid-> getLogLikelihood(Const::pion));
2366  } else {
2367  m_eclpidtrkIdx -> push_back(m_trkMultip);
2368  m_eclpidEnergy -> push_back(0);
2369  m_eclpidEop -> push_back(0);
2370  m_eclpidE9E21 -> push_back(0);
2371  m_eclpidNCrystals -> push_back(0);
2372  m_eclpidNClusters -> push_back(0);
2373  m_eclLogLikeEl -> push_back(0);
2374  m_eclLogLikeMu -> push_back(0);
2375  m_eclLogLikePi -> push_back(0);
2376  }
2377  m_trkMultip++;
2378  }
2379  }
2380 
2381  m_tree->Fill();
2382 }
int getPDGCode() const
PDG code.
Definition: Const.h:464
static const ChargedStable muon
muon particle
Definition: Const.h:651
static const ChargedStable pion
charged pion particle
Definition: Const.h:652
static const ParticleType Klong
K^0_L particle.
Definition: Const.h:669
static const ChargedStable electron
electron particle
Definition: Const.h:650
Class to store calibrated ECLDigits: ECLCalDigits.
Definition: ECLCalDigit.h:23
int getCellId() const
Get Cell ID.
Definition: ECLCalDigit.h:114
double getEnergy() const
Get Calibrated Energy.
Definition: ECLCalDigit.h:119
double getTime() const
Get Calibrated Time.
Definition: ECLCalDigit.h:159
ECL cluster data.
Definition: ECLCluster.h:27
unsigned short getMaxECellId() const
Return cellID of maximum energy crystal.
Definition: ECLCluster.h:247
bool isTrack() const
Return true if the cluster matches with track.
Definition: ECLCluster.h:235
bool hasHypothesis(EHypothesisBit bitmask) const
Return if specific hypothesis bit is set.
Definition: ECLCluster.h:348
double getPhi() const
Return Corrected Phi of Shower (radian).
Definition: ECLCluster.h:301
double getE1oE9() const
Return E1/E9 (shower shape variable).
Definition: ECLCluster.h:274
double getDeltaL() const
Return deltaL.
Definition: ECLCluster.h:262
double getR() const
Return R.
Definition: ECLCluster.h:307
double getEnergyRaw() const
Return Uncorrected Energy deposited (GeV)
Definition: ECLCluster.h:313
double getUncertaintyTheta() const
Return Uncertainty on Theta of Shower.
Definition: ECLCluster.h:322
double getLAT() const
Return LAT (shower shape variable).
Definition: ECLCluster.h:289
double getE9oE21() const
Return E9/E21 (shower shape variable).
Definition: ECLCluster.h:277
int getDetectorRegion() const
Return detector region: 0: below acceptance, 1: FWD, 2: BRL, 3: BWD, 11: FWDGAP, 13: BWDGAP.
Definition: ECLCluster.cc:70
unsigned short getStatus() const
Return status.
Definition: ECLCluster.h:241
double getEnergy(EHypothesisBit hypothesis) const
Return Energy (GeV).
Definition: ECLCluster.cc:23
double getUncertaintyEnergy() const
Return Uncertainty on Energy of Shower.
Definition: ECLCluster.h:319
double getMinTrkDistance() const
Get distance between cluster COG and track extrapolation to ECL.
Definition: ECLCluster.h:256
double getNumberOfCrystals() const
Return number of a crystals in a shower (sum of weights).
Definition: ECLCluster.h:292
double getEnergyHighestCrystal() const
Return energy of highest energetic crystal in cluster (GeV)
Definition: ECLCluster.h:316
double getZernikeMVA() const
Return MVA based hadron/photon value based on Zernike moments (shower shape variable).
Definition: ECLCluster.h:271
double getUncertaintyPhi() const
Return Uncertainty on Phi of Shower.
Definition: ECLCluster.h:325
double getAbsZernike40() const
Return Zernike moment 40 (shower shape variable).
Definition: ECLCluster.h:265
double getSecondMoment() const
Return second moment (shower shape variable).
Definition: ECLCluster.h:286
double getTheta() const
Return Corrected Theta of Shower (radian).
Definition: ECLCluster.h:304
double getDeltaTime99() const
Return cluster delta time 99.
Definition: ECLCluster.h:298
double getTime() const
Return cluster time.
Definition: ECLCluster.h:295
@ c_nPhotons
CR is split into n photons (N1)
@ c_neutralHadron
CR is reconstructed as a neutral hadron (N2)
double getAbsZernike51() const
Return Zernike moment 51 (shower shape variable).
Definition: ECLCluster.h:268
Class to store connected regions (CRs)
float getLikelihoodChargedHadron() const
Get Charged Hadron likelihood (ECL based only) T2.
bool isTrack() const
Get boolean to flag if a track is matched to the CR.
float getLikelihoodNeutralHadron() const
Get Neutral Hadron likelihood (ECL based only) N2.
float getLikelihoodMIPNGamma() const
Get MIPNGamma likelihood (ECL based only) T1.
float getLikelihoodNGamma() const
Get NGamma likelihood (ECL based only) N1.
int getCRId() const
Get CR identifieer.
float getLikelihoodMergedPi0() const
Get Merged Pi0 likelihood (ECL based only) N3.
float getLikelihoodElectronNGamma() const
Get ElectronNGamma likelihood (ECL based only) T3.
std::vector< int > * m_eclClusterToMC4PDG
PDG code of fourth MCParticle related to ECLCluster.
std::vector< int > * m_eclShowerToLM5
Index of 5th maximum related to ECLShower.
std::vector< int > * m_eclShowerToMC2PDG
PDG code of second MCParticle related to ECLShower.
std::vector< double > * m_eclShowerTimeResolution
Shower Time Resolution.
bool m_doPureCsI
if true, info on pureCsI upgrade is stored
std::vector< int > * m_eclPureCalDigitToMC5PDG
PDG code of fifth MCParticle related to CalDigit, PureCsI option.
std::vector< double > * m_eclPureCalDigitToMCWeight5
Energy contribution of fifth MCParticle related to CalDigit, PureCsI option.
std::vector< int > * m_eclShowerToMC5GMothPDG
PDG code of Gparent of fifth MCParticle related to ECLShower.
std::vector< double > * m_eclLogLikeEl
PID track electron likelyhood.
int m_eclDigitMultip
Number of ECLDigits per event.
std::vector< double > * m_eclClusterToMCWeight5
Energy contribution of 5th MCParticle related to ECLCluster.
bool m_doHits
if true, info on Hits and SimHits is stored
std::vector< int > * m_eclShowerToMC4MothPDG
PDG code of parent of fourth MCParticle related to ECLShower.
std::vector< double > * m_mcPy
MCParticle momentum Y direction.
std::vector< double > * m_eclCalDigitToMCWeight1
Energy contribution of first MCParticle related to ECLCalDigit.
std::vector< double > * m_eclClusterTheta
ECLCluster polar direction.
std::vector< int > * m_eclClusterNofCrystals
Number of crystals in ECLCluster.
std::vector< double > * m_eclPureClusterToBkgWeight
Remaining energy contribution not associated to first five MCParticles related to ECLCluster,...
std::vector< double > * m_eclPureCRLikelihoodNeutralHadron
Connected Region Neutral Hadron Likelihood, PureCsI option.
std::vector< int > * m_eclPureCalDigitToMC3PDG
PDG code of third MCParticle related to CalDigit, PureCsI option.
std::vector< int > * m_eclClusterDetectorRegion
Cluster Detector Region.
std::vector< int > * m_eclPureCalDigitToMC2
Index of second MCParticle related to CalDigit, PureCsI option.
std::vector< double > * m_eclCalDigitToMCWeight2
Energy contribution of second MCParticle related to ECLCalDigit.
std::vector< int > * m_eclCRIdx
Connected Region ID.
std::vector< int > * m_eclClusterCellId
CellId with highest energy deposit in ECLCluster.
std::vector< int > * m_eclPureCalDigitToShower
Index of ECLShower related to that CalDigit, PureCsI option.
std::vector< int > * m_eclHitToMC
Index of MCParticle related to ECLHit.
std::vector< int > * m_eclClusterToMC3PDG
PDG code of third MCParticle related to ECLCluster.
std::vector< double > * m_eclCRLikelihoodElectronNGamma
Connected Region Electron Likelihood.
std::vector< double > * m_eclCalDigitTimeFit
ECLCalDigit timing.
std::vector< double > * m_eclPureClusterDeltaL
Reconstructed Cluster DeltaL, PureCsI option.
TTree * m_tree
Root tree and file for saving the output.
StoreArray< ECLShower > m_eclShowers
Store array: ECLShower.
std::vector< double > * m_eclCalDigitToMCWeight5
Energy contribution of fifth MCParticle related to ECLCalDigit.
std::vector< double > * m_eclSimHitFlightTime
ECLSimhit Flight Time.
std::vector< int > * m_eclClusterIdx
ECLCluster index.
std::vector< int > * m_eclPureClusterToMC5
Index of fifth MCParticle related to ECLCluster, PureCsI option.
std::vector< double > * m_eclPureCalDigitToBkgWeight
Remaining energy contribution not associated to first five MCParticles related to CalDigit,...
std::vector< double > * m_eclShowerEnergyError
Shower Energy Error.
StoreArray< ECLConnectedRegion > m_eclConnectedRegions
Store array: ECLConnectedRegion.
std::vector< double > * m_eclShowerTime
Shower Timing.
int m_trkMultip
Track Multiplicity.
std::vector< double > * m_eclShowerTheta
Shower Theta.
std::vector< double > * m_eclShowerShowerDepth
Shower Depth.
std::vector< int > * m_eclShowerToMC4GMoth
GMother index of fourth MCParticle related to ECLShower.
std::vector< double > * m_eclCalDigitToMCWeight4
Energy contribution of fourth MCParticle related to ECLCalDigit.
std::vector< int > * m_eclPureCalDigitCellId
Number of CalDigit CellId, PureCsI option.
std::vector< double > * m_eclClusterR
ECLCluster distance from IP.
std::vector< bool > * m_eclPureClusterIsTrack
Flag for charged clusters, PureCsI option.
std::vector< int > * m_eclPureCalDigitToMC1
Index of first MCParticle related to CalDigit, PureCsI option.
std::vector< int > * m_eclPureClusterToMC5PDG
PDG code of fifth MCParticle related to ECLCluster, PureCsI option.
std::vector< double > * m_eclShowerE9oE21
Shower E9oE21.
std::vector< double > * m_eclPureClusterTimingError
Cluster time error, PureCsI option.
std::vector< int > * m_eclPureClusterToMC3
Index of third MCParticle related to ECLCluster, PureCsI option.
std::vector< int > * m_eclPureDigitToCluster
ECLDigit To Cluster, PureCsI option.
bool m_doDigits
if true, info on Digits and CalDigits is stored
std::vector< double > * m_eclPureClusterEnergyDepSum
Cluster simulated energy, PureCsI option.
std::vector< double > * m_eclShowerNumberOfCrystalsForEnergy
Number of crystals used for energy calculation.
std::vector< bool > * m_eclShowerIsCluster
Shower Cluster Match.
std::vector< int > * m_eclPureClusterToMC3PDG
PDG code of third MCParticle related to ECLCluster, PureCsI option.
std::vector< int > * m_eclCalDigitToMC2PDG
PDG code of second MCParticle related to ECLCalDigit.
std::vector< double > * m_mcDecayVtxZ
MCParticle decay vertex Z.
std::vector< int > * m_eclPureDigitToMC
Index of MCParticle related to that ECLDigit, PureCsI option.
std::vector< int > * m_eclClusterToMC5PDG
PDG code of fifth MCParticle related to ECLCluster.
std::vector< double > * m_eclPureClusterZernikeMVA
Output of MVA classifier based on Zernike Momenta, PureCsI option.
std::vector< double > * m_eclSimHitX
ECLSimHit X position.
std::vector< int > * m_eclCalDigitToMC2
Index of second MCParticle related to ECLCalDigit.
StoreArray< ECLCalDigit > m_eclPureCalDigits
Store array: ECLPureCalDigit.
std::vector< int > * m_eclShowerHypothesisId
Shower Particle Hypothesis ID.
std::vector< double > * m_eclSimHitPz
ECLSimHit PZ.
std::vector< int > * m_eclShowerMCVtxInEcl
Int, 1 if particle decays (interacts) in ECL, 0 otherwise.
std::vector< int > * m_eclPureCalDigitToCR
Index of CR related to that CalDigit, PureCsI option.
std::vector< double > * m_eclShowerToMCWeight4
Energy contribution of fourth MCParticle related to ECLShower.
std::vector< double > * m_eclPureClusterDeltaTime99
Reconstructed DeltaT99, PureCsI option.
int m_eclHitMultip
Number of ECLHits per event.
std::vector< double > * m_eclClusterZernikeMVA
Zernike MVA.
std::vector< int > * m_eclShowerToMC5PDG
PDG code of fifth MCParticle related to ECLShower.
std::vector< int > * m_eclShowerToMC3PDG
PDG code of third MCParticle related to ECLShower.
std::vector< int > * m_eclPureLMType
Local Maximum type, PureCsI option.
std::vector< int > * m_trkCharge
Track charge.
std::vector< int > * m_eclShowerToMC2
Index of second MCParticle related to ECLShower.
std::vector< double > * m_eclShowerToBkgWeight
Remaining energy contribution not associated to first five MCParticles related to ECLShower.
std::vector< double > * m_trkPx
Track momentum along X direction.
std::vector< double > * m_eclPureClusterAbsZernike51
Reconstructed Zernike51, PureCsI option.
std::vector< int > * m_eclDigitToMC
Index of MCParticle related to that ECLDigit.
std::vector< double > * m_eclPureCRLikelihoodMergedPi0
Connected Region Merged Pi0 Likelihood, PureCsI option.
std::vector< double > * m_eclCRLikelihoodMIPNGamma
Connected Region MIP Likelihood.
std::vector< int > * m_eclClusterToMC4
Index of fourth MCParticle related to ECLCluster.
std::vector< int > * m_eclSimHitCellId
ECLSimHit CellId.
StoreArray< ECLLocalMaximum > m_eclLocalMaximums
Store array: ECLLocalMaximum.
std::vector< double > * m_eclCRLikelihoodNeutralHadron
Connected Region Neutral Hadron Likelihood.
std::vector< double > * m_eclPureClusterTiming
Cluster time, PureCsI option.
std::vector< double > * m_trkZ
Track DOCA Z (?)
std::vector< double > * m_eclCalDigitSimHitSum
Full energy contribution related to ECLCalDigit.
std::vector< int > * m_eclPureClusterHasNPhotonHypothesis
Cluster has n-photon hypothesis, PureCsI option.
std::vector< double > * m_eclPureCalDigitToMCWeight4
Energy contribution of fourth MCParticle related to CalDigit, PureCsI option.
std::vector< int > * m_eclCalDigitFitQuality
ECLCalDigit fit quality.
std::vector< int > * m_eclShowerToMC5GMoth
GMother index of fifth MCParticle related to ECLShower.
std::vector< int > * m_eclCalDigitToMC4
Index of fourth MCParticle related to ECLCalDigit.
std::vector< double > * m_eclHitEnergyDep
ECLHit energy.
std::vector< double > * m_eclCRLikelihoodChargedHadron
Connected Region Charged Hadron Likelihood.
std::vector< int > * m_eclShowerMCFlightMatch
Int, 1 if particle flight direction is "well" reconstructed in ECL, 0 otherwise.
std::vector< double > * m_eclClusterPhi
ECLCluster azimuthal direction.
std::vector< double > * m_eclClusterAbsZernike40
Reconstructed Abs Zernike40.
int m_eclCalDigitMultip
Number of ECLCalDigits per event.
std::vector< int > * m_eclShowerToMC4Moth
Mother index of fourth MCParticle related to ECLShower.
std::vector< int > * m_eclShowerToMC3GMoth
GMother index of third MCParticle related to ECLShower.
std::vector< double > * m_eclPureClusterHighestE
Highest energy deposit (per crystal) in Cluster, PureCsI option.
std::vector< int > * m_eclClusterHasNPhotonHypothesis
Cluster has n-photon hypothesis.
std::vector< int > * m_eclPureClusterToMC2PDG
PDG code of second MCParticle related to ECLCluster, PureCsI option.
std::vector< double > * m_eclShowerToMCWeight2
Energy contribution of second MCParticle related to ECLShower.
std::vector< int > * m_eclShowerToMC1PDG
PDG code of first MCParticle related to ECLShower.
uint16_t m_nECLCalDigitsOutOfTimeFWD
Number of out of time, energetic ECLCalDigits, FWD.
std::vector< double > * m_eclSimHitEnergyDep
Energy deposition of ECLSimHit.
std::vector< int > * m_eclPureCalDigitToMC2PDG
PDG code of second MCParticle related to CalDigit, PureCsI option.
std::vector< double > * m_trkPz
Track momentum along Z direction.
std::vector< double > * m_eclClusterToMCWeight1
Energy contribution of first MCParticle related to ECLCluster.
std::vector< int > * m_eclShowerToLM2
Index of 2nd maximum related to ECLShower.
std::vector< int > * m_eclPureCalDigitToMC4
Index of fourth MCParticle related to CalDigit, PureCsI option.
std::vector< int > * m_eclPureClusterNofCrystals
Number of crystals in Cluster, PureCsI option.
std::vector< int > * m_eclHitToPureDigit
Index of ECLDigit related to ECLHit, PureCsI option.
std::vector< int > * m_eclShowerToMC3GMothPDG
PDG code of Gparent of third MCParticle related to ECLShower.
int m_eclPureClusterMultip
Number of ECLClusterss per event, PureCsI option.
std::vector< double > * m_eclShowerMinTrkDistance
Shower Min Dist to Track.
std::vector< double > * m_eclSimHitPx
ECLSimHit PX.
std::vector< int > * m_eclPureClusterCellId
CellId with highest energy deposit in Cluster, PureCsI option.
std::vector< int > * m_eclCalDigitToShower
Index of ECLShower related to that ECLCalDigit.
std::vector< double > * m_eclSimHitZ
ECLSimHit Z position.
std::vector< double > * m_eclClusterThetaError
ECLCluster error on polar direction.
uint8_t m_nECLShowersRejectedBWD
Number of photon showers that are rejected before storing to mdst (max.
std::vector< int > * m_eclPureClusterToMC2
Index of second MCParticle related to ECLCluster, PureCsI option.
std::vector< double > * m_eclClusterAbsZernike51
Reconstructed Abs Zernike51.
std::vector< int > * m_eclDigitAmp
ECLDigit amplitude.
std::vector< double > * m_trkPy
Track momentum along Y direction.
std::vector< double > * m_eclClusterEnergyDepSum
ECLCluster simulated energy.
std::vector< double > * m_eclPureClusterThetaError
Cluster error on polar direction, PureCsI option.
std::vector< int > * m_eclPureDigitIdx
ECLDigit index, PureCsI option.
std::vector< int > * m_eclShowerToMC2GMothPDG
PDG code of Gparent of second MCParticle related to ECLShower.
std::vector< int > * m_mcPdg
MCParticle PDG code.
std::vector< double > * m_eclShowerSecondMoment
Shower Second Moment.
std::vector< int > * m_eclShowerToMC5
Index of fifth MCParticle related to ECLShower.
std::vector< double > * m_mcDecayVtxY
MCParticle decay vertex Y.
std::vector< int > * m_eclShowerToMC3MothPDG
PDG code of parent of first MCParticle related to ECLShower.
StoreArray< ECLSimHit > m_eclSimHits
Store array: ECLSimHit.
std::vector< int > * m_eclClusterToMC5
Index of fifth MCParticle related to ECLCluster.
std::vector< int > * m_eclShowerToMC4GMothPDG
PDG code of Gparent of fourth MCParticle related to ECLShower.
std::vector< double > * m_eclPureClusterToMCWeight5
Energy contribution of 5th MCParticle related to ECLCluster, PureCsI option.
std::vector< int > * m_eclShowerToLM3
Index of 3rd maximum related to ECLShower.
std::vector< double > * m_eclPureClusterToMCWeight1
Energy contribution of first MCParticle related to ECLCluster, PureCsI option.
std::vector< int > * m_eclPureDigitFitQuality
ECLDigit fit quality, PureCsI option.
StoreArray< ECLDigit > m_eclDigits
Store array: ECLDigit.
std::vector< double > * m_eclClusterEnergyError
ECLCluster energy error.
std::vector< double > * m_eclClusterPhiError
ECLCluster error on azimuthal direction.
std::vector< int > * m_trkIdx
Track index.
std::vector< int > * m_eclCalDigitToCR
Index of CR related to that ECLCalDigit.
std::vector< int > * m_eclClusterToMC3
Index of third MCParticle related to ECLCluster.
std::vector< double > * m_eclClusterSimHitSum
Energy contribution of 1st MCParticle related to ECLCluster.
std::vector< int > * m_eclPureCalDigitFitQuality
CalDigit fit quality, PureCsI option.
std::vector< int > * m_eclPureCalDigitToMC1PDG
PDG code of first MCParticle related to CalDigit, PureCsI option.
std::vector< double > * m_eclPureCRLikelihoodNGamma
Connected Region Gamma Likelihood, PureCsI option.
std::vector< int > * m_eclPureCalDigitToMC3
Index of third MCParticle related to CalDigit, PureCsI option.
int m_eclPureLMMultip
Local Maxima multiplicity, PureCsI option.
std::vector< int > * m_mcMothPdg
MCParticle mother particle PDG code.
std::vector< int > * m_eclClusterToMC1
Index of first MCParticle related to ECLCluster.
std::vector< int > * m_eclShowerToLM4
Index of 4th maximum related to ECLShower.
std::vector< double > * m_eclClusterToMCWeight2
Energy contribution of second MCParticle related to ECLCluster.
std::vector< double > * m_eclLogLikePi
PID track pion likelyhood.
std::vector< double > * m_eclClusterE1oE9
Reconstructed E1 over E9.
std::vector< double > * m_eclPureCalDigitTimeFit
CalDigit timing, PureCsI option.
virtual const char * eclPureDigitArrayName() const
Default name ECLPureDigits array.
std::vector< double > * m_eclShowerUncEnergy
Shower bare energy.
std::vector< double > * m_eclCalDigitToBkgWeight
Remaining energy contribution not associated to first five MCParticles related to ECLCalDigit.
std::vector< int > * m_eclHitToDigit
Index of ECLDigit related to ECLHit.
StoreArray< ECLDigit > m_eclPureDigits
Store array: ECLPureDigit.
std::vector< int > * m_eclClusterHasNeutralHadronHypothesis
Cluster has neutral hadron hypothesis.
std::vector< int > * m_eclShowerToMC2Moth
Mother index of first MCParticle related to ECLShower.
std::vector< double > * m_eclShowerT99
Shower T99.
std::vector< int > * m_eclShowerToLM1
Index of first maximum related to ECLShower.
std::vector< int > * m_eclLMCellId
Local Maximum Cell ID.
std::vector< double > * m_eclShowerToMCWeight3
Energy contribution of third MCParticle related to ECLShower.
std::vector< int > * m_eclHitToDigitAmp
Amplitude of ECLDigit related to ECLHit.
int m_eclClusterTrueMultip
Number of ECLClusters per event.
std::vector< int > * m_eclDigitTimeFit
ECLDigit timing.
std::vector< double > * m_eclPureClusterClosestTrackDist
Reconstructed Distance to Closest Track, PureCsI option.
std::vector< double > * m_eclClusterToMCWeight4
Energy contribution of fourth MCParticle related to ECLCluster.
std::vector< double > * m_eclShowerHighestEnergy
Shower Highest Energy Crystal Energy.
std::vector< double > * m_eclPureCRLikelihoodElectronNGamma
Connected Region Electron Likelihood, PureCsI option.
std::vector< int > * m_eclClusterToMC2
Index of second MCParticle related to ECLCluster.
std::vector< int > * m_eclShowerIdx
Shower Index.
std::vector< int > * m_eclPureCalDigitIdx
ECLCalDigit index, PureCsI option.
std::vector< int > * m_eclSimHitToMC
Index of MCParticle related to that ECLSimHit.
std::vector< double > * m_eclClusterToBkgWeight
Remaining energy contribution not associated to first five MCParticles related to ECLCluster.
std::vector< int > * m_eclDigitToCalDigit
Index of CalDigit related to that ECLDigit.
std::vector< int > * m_eclShowerToMC3Moth
Mother index of first MCParticle related to ECLShower.
std::vector< double > * m_eclPureCalDigitToMCWeight2
Energy contribution of second MCParticle related to CalDigit, PureCsI option.
std::vector< int > * m_eclDigitIdx
ECLDigit index.
int m_eclClusterGammaMultip
Number of ECLClusters per event.
std::vector< double > * m_eclPureClusterE1oE9
Reconstructed E1oE9, PureCsI option.
std::vector< double > * m_eclShowerThetaError
Shower Theta Error.
std::vector< double > * m_eclShowerSimHitSum
Full energy contribution related to ECLShower.
StoreArray< Track > m_tracks
Tracks storeArray.
StoreArray< ECLLocalMaximum > m_eclPureLocalMaximums
Store array: ECLPureLocalMaximum.
std::vector< int > * m_eclPureLMCellId
Local Maximum Cell ID, PureCsI option.
std::vector< int > * m_eclCalDigitToMC5PDG
PDG code of fifth MCParticle related to ECLCalDigit.
std::vector< int > * m_eclShowerIsTrack
Shower Track Match.
std::vector< int > * m_mcGMothPdg
MCParticle grandmother particle PDG code.
std::vector< double > * m_eclpidEnergy
PID track energy.
std::vector< int > * m_eclpidNClusters
PID track number of clusters.
std::vector< double > * m_eclShowerPhi
Shower Phi.
int m_mcMultip
Multiplicity of MCParticles.
std::vector< double > * m_eclPureCRLikelihoodMIPNGamma
Connected Region MIP Likelihood, PureCsI option.
std::vector< double > * m_eclPureClusterE9oE21
Ratio of 3x3 over 5x5 crystal matrices energies for Cluster, PureCsI option.
std::vector< int > * m_eclLMType
Local Maximum type.
std::vector< double > * m_eclShowerTrkDepth
Shower Track Depth.
std::vector< int > * m_eclLMId
Local Maximum ID.
std::vector< double > * m_trkP
Track momentum.
std::vector< double > * m_eclPureClusterEnergy
Cluster energy, PureCsI option.
std::vector< int > * m_eclHitToPureDigitAmp
Amplitude of ECLDigit related to ECLHit, PureCsI option.
std::vector< double > * m_eclClusterTimingError
ECLCluster time error.
std::vector< int > * m_eclShowerToMC4
Index of fourth MCParticle related to ECLShower.
std::vector< double > * m_mcProdVtxZ
MCParticle production vertex Z.
std::vector< double > * m_mcEnergy
MCParticle energyx.
std::vector< int > * m_eclpidtrkIdx
PID track index.
std::vector< int > * m_eclShowerCentralCellId
Cell ID for most energetic crystal.
std::vector< double > * m_eclShowerToMCWeight1
Energy contribution of first MCParticle related to ECLShower.
StoreArray< ECLCluster > m_eclClusters
Store array: ECLCluster.
std::vector< int > * m_eclCalDigitToMC3
Index of third MCParticle related to ECLCalDigit.
std::vector< int > * m_eclPureCalDigitToMC4PDG
PDG code of fourth MCParticle related to CalDigit, PureCsI option.
std::vector< int > * m_eclHitIdx
Index of ECLHits.
std::vector< int > * m_eclClusterToMC1PDG
PDG code of first MCParticle related to ECLCluster.
std::vector< int > * m_eclPureClusterDetectorRegion
Clusters detector region, PureCsI option.
std::vector< double > * m_mcDecayVtxX
MCParticle decay vertex X.
std::vector< double > * m_trkY
Track DOCA Y (?)
std::vector< int > * m_eclShowerToMC5Moth
Mother index of fifth MCParticle related to ECLShower.
std::vector< double > * m_eclPureCalDigitAmp
CalDigit amplitude, PureCsI option.
std::vector< int > * m_eclPureCalDigitToLM
Index of LM related to that CalDigit, PureCsI option.
std::vector< int > * m_eclCalDigitIdx
ECLCalDigit index.
std::vector< int > * m_eclSimHitIdx
Index of ECLSimHit.
std::vector< int > * m_eclClusterToMC2PDG
PDG code of second MCParticle related to ECLCluster.
StoreArray< ECLConnectedRegion > m_eclPureConnectedRegions
Store array: ECLPureConnectedRegion.
std::vector< int > * m_eclPureDigitCellId
Number of ECLDigit CellId, PureCsI option.
std::vector< int > * m_eclDigitFitQuality
ECLDigit fit quality.
int m_eclPureCalDigitMultip
Number of ECLCalDigits per event, PureCsI option.
std::vector< double > * m_eclPureClusterLat
Cluster shape parameter LAT, PureCsI option.
std::vector< int > * m_eclPureClusterToMC4PDG
PDG code of fourth MCParticle related to ECLCluster, PureCsI option.
std::vector< int > * m_eclShowerMCFFlightMatch
Int, 1 if primary particle flight direction is "well" reconstructed in ECL, 0 otherwise,...
std::vector< int > * m_eclCalDigitToMC1PDG
PDG code of first MCParticle related to ECLCalDigit.
std::vector< double > * m_eclCalDigitAmp
ECLCalDigit amplitude.
std::vector< double > * m_mcPx
MCParticle momentum X direction.
std::vector< int > * m_eclShowerToMC2MothPDG
PDG code of parent of first MCParticle related to ECLShower.
std::vector< int > * m_eclpidNCrystals
PID track number of crystals.
std::vector< int > * m_mcIdx
MCParticle index.
std::vector< int > * m_eclPureClusterToMC1PDG
PDG code of first MCParticle related to ECLCluster, PureCsI option.
std::vector< double > * m_eclShowerZernikeMVA
Shower ZernikeMVA.
std::vector< double > * m_eclPureClusterAbsZernike40
Reconstructed Zernike40, PureCsI option.
std::vector< double > * m_eclPureClusterSecondMoment
Reconstructed Cluster Second Moment, PureCsI option.
int m_eclPureDigitMultip
Number of ECLDigits per event, PureCsI option.
uint8_t m_nECLShowersRejectedBarrel
Number of photon showers that are rejected before storing to mdst (max.
std::vector< double > * m_eclClusterTiming
ECLCluster time.
std::vector< int > * m_eclCalDigitCellId
Number of ECLCalDigit CellId.
std::vector< double > * m_mcProdVtxX
MCParticle production vertex X.
std::vector< double > * m_eclShowerEnergy
Shower Energy.
StoreArray< ECLHit > m_eclHits
Store array: ECLHit.
std::vector< int > * m_eclPureCRIdx
Connected Region ID, PureCsI option.
std::vector< double > * m_eclCRLikelihoodMergedPi0
Connected Region Merged Pi0 Likelihood.
uint8_t m_nECLShowersRejectedFWD
Number of photon showers that are rejected before storing to mdst (max.
std::vector< int > * m_eclShowerToMC5MothPDG
PDG code of parent of fifth MCParticle related to ECLShower.
std::vector< double > * m_eclPureClusterToMCWeight2
Energy contribution of second MCParticle related to ECLCluster, PureCsI option.
std::vector< double > * m_trkX
Track DOCA X (?)
std::vector< double > * m_eclPureClusterToMCWeight3
Energy contribution of third MCParticle related to ECLCluster, PureCsI option.
int m_eclClusterMultip
Number of ECLClusters per event.
std::vector< double > * m_eclShowerLateralEnergy
Shower Lateral Energy.
std::vector< double > * m_mcPz
MCParticle momentum Z direction.
std::vector< int > * m_eclPureClusterHasNeutralHadronHypothesis
Cluster has neutral hadron hypothesis, PureCsI option.
std::vector< double > * m_eclPureCalDigitSimHitSum
Full energy contribution related to CalDigit, PureCsI option.
std::vector< int > * m_eclCalDigitToMC5
Index of fifth MCParticle related to ECLCalDigit.
StoreArray< MCParticle > m_mcParticles
MCParticles StoreArray.
std::vector< double > * m_eclClusterHighestE
Highest energy deposit (per crystal) in ECLCluster.
std::vector< int > * m_eclPureDigitAmp
ECLDigit amplitude, PureCsI option.
StoreObjPtr< EventMetaData > m_eventmetadata
Store object pointer: EventMetaData.
std::vector< int > * m_eclCRIsTrack
Int for Connected Region - Track Match.
std::vector< int > * m_eclShowerConnectedRegionId
Matched Connetcted Region Idx.
std::vector< double > * m_eclPureClusterToMCWeight4
Energy contribution of fourth MCParticle related to ECLCluster, PureCsI option.
std::vector< double > * m_eclPureClusterPhiError
Cluster error on azimuthal direction, PureCsI option.
bool m_doTracking
if true, info on tracking will be stored, job will fail if doTracking==1 and the tracking modules are...
std::vector< double > * m_eclShowerAbsZernike51
Shower Zernike51 Moment.
std::vector< double > * m_eclShowerR
Shower R.
std::vector< int > * m_eclPureClusterToMC1
Index of first MCParticle related to ECLCluster, PureCsI option.
std::vector< double > * m_eclShowerToMCWeight5
Energy contribution of fifth MCParticle related to ECLShower.
std::vector< double > * m_eclHitTimeAve
ECLHit time.
StoreArray< ECLCluster > m_eclPureClusters
Store array: ECLPureCluster.
int m_eclLMMultip
Local Maxima multiplicity.
std::vector< int > * m_eclSimHitPdg
PDG code of MCParticle associted to that ECLDigit.
std::vector< double > * m_trkPhi
Track azimuthal direction.
std::vector< int > * m_eclCalDigitToMC3PDG
PDG code of third MCParticle related to ECLCalDigit.
std::vector< int > * m_eclDigitCellId
Number of ECLDigit CellId.
std::vector< double > * m_eclPureCalDigitToMCWeight1
Energy contribution of first MCParticle related to CalDigit, PureCsI option.
std::vector< double > * m_eclPureClusterR
Cluster distance from IP, PureCsI option.
std::vector< double > * m_eclPureClusterTheta
Cluster polar direction, PureCsI option.
std::vector< double > * m_trkTheta
Track polar direction.
uint16_t m_nECLCalDigitsOutOfTimeBarrel
Number of out of time, energetic ECLCalDigits, Barrel.
std::vector< double > * m_eclLogLikeMu
PID track muon likelyhood.
std::vector< int > * m_eclCalDigitToMC4PDG
PDG code of fourth MCParticle related to ECLCalDigit.
virtual const char * eclPureConnectedRegionArrayName() const
Default name ECLPureConnectedRegions array.
std::vector< int > * m_eclPureClusterToMC4
Index of fourth MCParticle related to ECLCluster, PureCsI option.
std::vector< int > * m_eclPureClusterIdx
ECLCluster index, PureCsI option.
std::vector< double > * m_eclClusterEnergy
ECLCluster energy.
std::vector< int > * m_eclShowerToMC1
Index of first MCParticle related to ECLShower.
std::vector< double > * m_eclSimHitPy
ECLSimHit PY.
std::vector< int > * m_eclCalDigitToLM
Index of LM related to that ECLCalDigit.
std::vector< double > * m_eclClusterClosestTrackDist
Flag for charged clusters.
std::vector< double > * m_eclSimHitY
ECLSimHit Y position.
std::vector< double > * m_eclPureCRLikelihoodChargedHadron
Connected Region Charged Hadron Likelihood, PureCsI option.
int m_eclSimHitMultip
Number of ECLSimHits per event.
std::vector< double > * m_eclClusterLAT
Reconstructed LAT.
std::vector< double > * m_eclShowerHighestE1mE2
Energy difference for 2 highest energy deposits in shower.
std::vector< double > * m_eclClusterDeltaTime99
DeltaTime99.
std::vector< int > * m_eclHitCellId
ECLHit CellID.
StoreObjPtr< EventLevelClusteringInfo > m_eventLevelClusteringInfo
Store object pointer: EventLevelClusteringInfo.
std::vector< int > * m_mcSecondaryPhysProc
Flag for secondary physics process.
std::vector< int > * m_eclShowerToMC1Moth
Mother index of first MCParticle related to ECLShower.
std::vector< double > * m_eclShowerE1oE9
Shower E1/E9.
std::vector< int > * m_eclShowerToMC3
Index of third MCParticle related to ECLShower.
std::vector< int > * m_eclShowerToMC1GMothPDG
PDG code of Gparent of first MCParticle related to ECLShower.
std::vector< double > * m_mcProdVtxY
MCParticle production vertex Y.
std::vector< double > * m_eclClusterSecondMoment
Reconstructed Second Moment.
std::vector< double > * m_eclPureClusterEnergyError
Cluster energy error, PureCsI option.
std::vector< int > * m_eclShowerToMC2GMoth
GMother index of second MCParticle related to ECLShower.
std::vector< double > * m_eclClusterE9oE21
Ratio of 3x3 over 5x5 crystal matrices energies for ECLCluster.
std::vector< int > * m_eclPureLMId
Local Maximum ID, PureCsI option.
std::vector< int > * m_eclShowerToMC4PDG
PDG code of fourth MCParticle related to ECLShower.
std::vector< int > * m_eclCalDigitToMC1
Index of first MCParticle related to ECLCalDigit.
std::vector< double > * m_eclPureClusterPhi
Cluster azimuthal direction, PureCsI option.
std::vector< int > * m_eclClusterCrystalHealth
Crystal healt flag.
std::vector< bool > * m_eclClusterIsTrack
Flag for charged clusters.
std::vector< int > * m_eclClusterToShower
Index of ECLShower related to ECLCluster.
std::vector< double > * m_eclCalDigitToMCWeight3
Energy contribution of third MCParticle related to ECLCalDigit.
StoreArray< ECLCalDigit > m_eclCalDigits
Store array: ECLCalDigit.
std::vector< double > * m_eclpidE9E21
PID track ration of 3x3 over 5x5 crystal matrices energies.
std::vector< int > * m_eclPureCRIsTrack
Int for Connected Region - Track Match, PureCsI option.
std::vector< double > * m_eclCRLikelihoodNGamma
Connected Region Gamma Likelihood.
std::vector< int > * m_eclPureDigitTimeFit
ECLDigit timing, PureCsI option.
std::vector< int > * m_eclPureCalDigitToMC5
Index of fifth MCParticle related to CalDigit, PureCsI option.
std::vector< int > * m_trkPdg
Track PDG code.
std::vector< double > * m_eclPureCalDigitToMCWeight3
Energy contribution of third MCParticle related to CalDigit, PureCsI option.
std::vector< double > * m_eclClusterDeltaL
Reconstructed Cluster DeltaL.
std::vector< int > * m_mcGGMothPdg
MCParticle greand-grandmother particle PDG code.
std::vector< int > * m_eclShowerToMC1MothPDG
PDG code of parent of first MCParticle related to ECLShower.
uint16_t m_nECLCalDigitsOutOfTimeBWD
Number of out of time, energetic ECLCalDigits, BWD.
std::vector< int > * m_eclPureClusterCrystalHealth
Crystal healt flag, PureCsI option.
std::vector< double > * m_eclShowerPhiError
Shower Phi Error.
virtual const char * eclPureLocalMaximumArrayName() const
Default name ECLPureLocalMaxima array.
std::vector< double > * m_eclpidEop
PID track E/p.
std::vector< int > * m_eclShowerToMC1GMoth
GMother index of first MCParticle related to ECLShower.
std::vector< double > * m_eclShowerAbsZernike40
Shower Zernike40 Moment.
std::vector< double > * m_eclShowerNHits
Shower NHits.
int m_eclShowerMultip
Number of ECLShowers per event.
std::vector< double > * m_eclClusterToMCWeight3
Energy contribution of third MCParticle related to ECLCluster.
Class to store ECL digitized hits (output of ECLDigi) relation to ECLHit filled in ecl/modules/eclDig...
Definition: ECLDigit.h:24
int getAmp() const
Get Fitting Amplitude.
Definition: ECLDigit.h:70
int getQuality() const
Get Fitting Quality.
Definition: ECLDigit.h:80
int getCellId() const
Get Cell ID.
Definition: ECLDigit.h:64
int getTimeFit() const
Get Fitting Time.
Definition: ECLDigit.h:75
Class to store simulated hits which equate to average of ECLSImHit on crystals input for digitization...
Definition: ECLHit.h:25
double getTimeAve() const
Get average time.
Definition: ECLHit.h:75
int getCellId() const
Get Cell ID.
Definition: ECLHit.h:65
double getEnergyDep() const
Get deposit energy.
Definition: ECLHit.h:70
Class to store local maxima (LM)
int getCellId() const
Get CellId.
int getLMId() const
Get LM identifier.
int getType() const
Get type.
Container for likelihoods with ECL PID (ECLChargedPIDModule)
Class to store ECL Showers.
Definition: ECLShower.h:30
double getAbsZernikeMoment(unsigned int n, unsigned int m) const
Get absolute value of Zernike Moment nm.
Definition: ECLShower.h:377
int getHypothesisId() const
Get Hypothesis Id.
Definition: ECLShower.h:277
double getPhi() const
Get Phi.
Definition: ECLShower.h:302
double getLateralEnergy() const
Get Lateral Energy in Shower.
Definition: ECLShower.h:352
double getE1oE9() const
Get energy ratio E1oE9.
Definition: ECLShower.h:392
double getEnergy() const
Get Energy.
Definition: ECLShower.h:287
double getShowerDepth() const
path on track extrapolation to POCA to average cluster direction
Definition: ECLShower.h:367
int getConnectedRegionId() const
Get Connected region Id.
Definition: ECLShower.h:272
double getR() const
Get R.
Definition: ECLShower.h:307
double getEnergyRaw() const
Get Energy Sum.
Definition: ECLShower.h:292
double getUncertaintyTheta() const
Get Error of theta.
Definition: ECLShower.h:327
double getE9oE21() const
Get energy ratio E9oE21.
Definition: ECLShower.h:397
double getNumberOfCrystalsForEnergy() const
Get number of crystals used for energy calculation.
Definition: ECLShower.h:417
double getUncertaintyEnergy() const
Get Error of Energy.
Definition: ECLShower.h:322
double getTrkDepth() const
path on track extrapolation to POCA to average cluster direction
Definition: ECLShower.h:362
double getMinTrkDistance() const
Get distance to closest Track.
Definition: ECLShower.h:357
double getNumberOfCrystals() const
Get NofCrystals.
Definition: ECLShower.h:372
double getEnergyHighestCrystal() const
Get Highest Energy in Shower.
Definition: ECLShower.h:347
double getZernikeMVA() const
Get Zernike MVA.
Definition: ECLShower.h:382
bool getIsTrack() const
Get if matched with a Track.
Definition: ECLShower.h:257
double getUncertaintyPhi() const
Get Error of phi.
Definition: ECLShower.h:332
int getCentralCellId() const
Get central cell Id.
Definition: ECLShower.h:282
double getSecondMoment() const
Get second moment.
Definition: ECLShower.h:387
double getTheta() const
Get Theta.
Definition: ECLShower.h:297
double getDeltaTime99() const
Get Time Resolution.
Definition: ECLShower.h:342
double getTime() const
Get Time.
Definition: ECLShower.h:337
ClassECLSimHit - Geant4 simulated hit for the ECL.
Definition: ECLSimHit.h:29
int getPDGCode() const
Get Particle PDG (can be one of secondaries)
Definition: ECLSimHit.h:96
int getCellId() const
Get Cell ID.
Definition: ECLSimHit.h:86
double getFlightTime() const
Get Flight time from IP.
Definition: ECLSimHit.h:101
double getEnergyDep() const
Get Deposit energy.
Definition: ECLSimHit.h:106
G4ThreeVector getPosition() const
Get Position.
Definition: ECLSimHit.h:126
G4ThreeVector getMomentum() const
Get Momentum.
Definition: ECLSimHit.h:116
A Class to store the Monte Carlo particle information.
Definition: MCParticle.h:32
float getEnergy() const
Return particle energy in GeV.
Definition: MCParticle.h:147
int getIndex() const
Get 1-based index of the particle in the corresponding MCParticle list.
Definition: MCParticle.h:230
ROOT::Math::XYZVector getDecayVertex() const
Return decay vertex.
Definition: MCParticle.h:219
int getArrayIndex() const
Get 0-based index of the particle in the corresponding MCParticle list.
Definition: MCParticle.h:244
ROOT::Math::XYZVector getProductionVertex() const
Return production vertex position.
Definition: MCParticle.h:189
int getPDG() const
Return PDG code of particle.
Definition: MCParticle.h:112
ROOT::Math::XYZVector getMomentum() const
Return momentum.
Definition: MCParticle.h:198
int getSecondaryPhysicsProcess() const
Returns the physics process type of a secondary particle.
Definition: MCParticle.h:297
int getArrayIndex() const
Returns this object's array index (in StoreArray), or -1 if not found.
RelationVector< TO > getRelationsTo(const std::string &name="", const std::string &namedRelation="") const
Get the relations that point from this object to another store array.
T * getRelated(const std::string &name="", const std::string &namedRelation="") const
Get the object to or from which this object has a relation.
TO * getRelatedTo(const std::string &name="", const std::string &namedRelation="") const
Get the object to which this object has a relation.
int getEntries() const
Get the number of objects in the array.
Definition: StoreArray.h:216
Values of the result of a track fit with a given particle hypothesis.
short getChargeSign() const
Return track charge (1 or -1).
Const::ParticleType getParticleType() const
Getter for ParticleType of the mass hypothesis of the track fit.
ROOT::Math::XYZVector getMomentum() const
Getter for vector of momentum at closest approach of track in r/phi projection.
ROOT::Math::XYZVector getPosition() const
Getter for vector of position at closest approach of track in r/phi projection.
Class that bundles various TrackFitResults.
Definition: Track.h:25
bool isFailedFit() const
Get Boolean Fit Failed Status.
Definition: ECLCalDigit.h:250
MCParticle * getMother() const
Returns a pointer to the mother particle.
Definition: MCParticle.h:600

◆ getAfterConditionPath()

Module::EAfterConditionPath getAfterConditionPath ( ) const
inherited

What to do after the conditional path is finished.

(defaults to c_End if no condition is set)

Definition at line 133 of file Module.cc.

◆ getConditionPath()

std::shared_ptr< Path > getConditionPath ( ) const
inherited

Returns the path of the last true condition (if there is at least one, else reaturn a null pointer).


Definition at line 113 of file Module.cc.

◆ getFileNames()

virtual std::vector<std::string> getFileNames ( bool  outputFiles)
inlinevirtualinherited

Return a list of output filenames for this modules.

This will be called when basf2 is run with "--dry-run" if the module has set either the c_Input or c_Output properties.

If the parameter outputFiles is false (for modules with c_Input) the list of input filenames should be returned (if any). If outputFiles is true (for modules with c_Output) the list of output files should be returned (if any).

If a module has sat both properties this member is called twice, once for each property.

The module should return the actual list of requested input or produced output filenames (including handling of input/output overrides) so that the grid system can handle input/output files correctly.

This function should return the same value when called multiple times. This is especially important when taking the input/output overrides from Environment as they get consumed when obtained so the finalized list of output files should be stored for subsequent calls.

Reimplemented in RootOutputModule, StorageRootOutputModule, and RootInputModule.

Definition at line 134 of file Module.h.

◆ getName()

const std::string& getName ( ) const
inlineinherited

Returns the name of the module.

This can be changed via e.g. set_name() in the steering file to give more useful names if there is more than one module of the same type.

For identifying the type of a module, using getType() (or type() in Python) is recommended.

Definition at line 187 of file Module.h.

◆ getParamInfoListPython()

std::shared_ptr< boost::python::list > getParamInfoListPython ( ) const
inherited

Returns a python list of all parameters.

Each item in the list consists of the name of the parameter, a string describing its type, a python list of all default values and the description of the parameter.

Returns
A python list containing the parameters of this parameter list.

Definition at line 279 of file Module.cc.

◆ getReturnValue()

int getReturnValue ( ) const
inlineinherited

Return the return value set by this module.

This value is only meaningful if hasReturnValue() is true

Definition at line 381 of file Module.h.

◆ getType()

const std::string & getType ( ) const
inherited

Returns the type of the module (i.e.

class name minus 'Module')

Definition at line 41 of file Module.cc.

◆ hasProperties()

bool hasProperties ( unsigned int  propertyFlags) const
inherited

Returns true if all specified property flags are available in this module.

Parameters
propertyFlagsOred EModulePropFlags which should be compared with the module flags.

Definition at line 160 of file Module.cc.

◆ if_false()

void if_false ( const std::shared_ptr< Path > &  path,
EAfterConditionPath  afterConditionPath = EAfterConditionPath::c_End 
)
inherited

A simplified version to add a condition to the module.

Please note that successive calls of this function will add more than one condition to the module. If more than one condition results in true, only the last of them will be used.

Please be careful: Avoid creating cyclic paths, e.g. by linking a condition to a path which is processed before the path where this module is located in.

It is equivalent to the if_value() method, using the expression "<1". This method is meant to be used together with the setReturnValue(bool value) method.

Parameters
pathShared pointer to the Path which will be executed if the return value is false.
afterConditionPathWhat to do after executing 'path'.

Definition at line 85 of file Module.cc.

◆ if_true()

void if_true ( const std::shared_ptr< Path > &  path,
EAfterConditionPath  afterConditionPath = EAfterConditionPath::c_End 
)
inherited

A simplified version to set the condition of the module.

Please note that successive calls of this function will add more than one condition to the module. If more than one condition results in true, only the last of them will be used.

Please be careful: Avoid creating cyclic paths, e.g. by linking a condition to a path which is processed before the path where this module is located in.

It is equivalent to the if_value() method, using the expression ">=1". This method is meant to be used together with the setReturnValue(bool value) method.

Parameters
pathShared pointer to the Path which will be executed if the return value is true.
afterConditionPathWhat to do after executing 'path'.

Definition at line 90 of file Module.cc.

◆ if_value()

void if_value ( const std::string &  expression,
const std::shared_ptr< Path > &  path,
EAfterConditionPath  afterConditionPath = EAfterConditionPath::c_End 
)
inherited

Add a condition to the module.

Please note that successive calls of this function will add more than one condition to the module. If more than one condition results in true, only the last of them will be used.

See https://confluence.desy.de/display/BI/Software+ModCondTut or ModuleCondition for a description of the syntax.

Please be careful: Avoid creating cyclic paths, e.g. by linking a condition to a path which is processed before the path where this module is located in.

Parameters
expressionThe expression of the condition.
pathShared pointer to the Path which will be executed if the condition is evaluated to true.
afterConditionPathWhat to do after executing 'path'.

Definition at line 79 of file Module.cc.

◆ initialize()

void initialize ( void  )
overridevirtual

Initializes the Module.

SHOWERS

Reimplemented from Module.

Definition at line 440 of file ECLDataAnalysisModule.cc.

◆ setDescription()

void setDescription ( const std::string &  description)
protectedinherited

Sets the description of the module.

Parameters
descriptionA description of the module.

Definition at line 214 of file Module.cc.

◆ setLogInfo()

void setLogInfo ( int  logLevel,
unsigned int  logInfo 
)
inherited

Configure the printed log information for the given level.

Parameters
logLevelThe log level (one of LogConfig::ELogLevel)
logInfoWhat kind of info should be printed? ORed combination of LogConfig::ELogInfo flags.

Definition at line 73 of file Module.cc.

◆ setName()

void setName ( const std::string &  name)
inlineinherited

Set the name of the module.

Note
The module name is set when using the REG_MODULE macro, but the module can be renamed before calling process() using the set_name() function in your steering file.
Parameters
nameThe name of the module

Definition at line 214 of file Module.h.

◆ setParamPython()

void setParamPython ( const std::string &  name,
const boost::python::object &  pyObj 
)
privateinherited

Implements a method for setting boost::python objects.

The method supports the following types: list, dict, int, double, string, bool The conversion of the python object to the C++ type and the final storage of the parameter value is done in the ModuleParam class.

Parameters
nameThe unique name of the parameter.
pyObjThe object which should be converted and stored as the parameter value.

Definition at line 234 of file Module.cc.

◆ setParamPythonDict()

void setParamPythonDict ( const boost::python::dict &  dictionary)
privateinherited

Implements a method for reading the parameter values from a boost::python dictionary.

The key of the dictionary has to be the name of the parameter and the value has to be of one of the supported parameter types.

Parameters
dictionaryThe python dictionary from which the parameter values are read.

Definition at line 249 of file Module.cc.

◆ setPropertyFlags()

void setPropertyFlags ( unsigned int  propertyFlags)
inherited

Sets the flags for the module properties.

Parameters
propertyFlagsbitwise OR of EModulePropFlags

Definition at line 208 of file Module.cc.

◆ setReturnValue() [1/2]

void setReturnValue ( bool  value)
protectedinherited

Sets the return value for this module as bool.

The bool value is saved as an integer with the convention 1 meaning true and 0 meaning false. The value can be used in the steering file to divide the analysis chain into several paths.

Parameters
valueThe value of the return value.

Definition at line 227 of file Module.cc.

◆ setReturnValue() [2/2]

void setReturnValue ( int  value)
protectedinherited

Sets the return value for this module as integer.

The value can be used in the steering file to divide the analysis chain into several paths.

Parameters
valueThe value of the return value.

Definition at line 220 of file Module.cc.

◆ setType()

void setType ( const std::string &  type)
protectedinherited

Set the module type.

Only for use by internal modules (which don't use the normal REG_MODULE mechanism).

Definition at line 48 of file Module.cc.

Member Data Documentation

◆ m_nECLShowersRejectedBarrel

uint8_t m_nECLShowersRejectedBarrel {0}
private

Number of photon showers that are rejected before storing to mdst (max.

255), Barrel.

Definition at line 184 of file ECLDataAnalysisModule.h.

◆ m_nECLShowersRejectedBWD

uint8_t m_nECLShowersRejectedBWD {0}
private

Number of photon showers that are rejected before storing to mdst (max.

255), BWD.

Definition at line 186 of file ECLDataAnalysisModule.h.

◆ m_nECLShowersRejectedFWD

uint8_t m_nECLShowersRejectedFWD {0}
private

Number of photon showers that are rejected before storing to mdst (max.

255), FWD.

Definition at line 182 of file ECLDataAnalysisModule.h.

◆ m_rootFilePtr

TFile* m_rootFilePtr
private

members of ECLReconstructor Module

root file used for storing info

Definition at line 84 of file ECLDataAnalysisModule.h.


The documentation for this class was generated from the following files: