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

The Class for Detailed Digitization of CDC. More...

#include <CDCDigitizerModule.h>

Inheritance diagram for CDCDigitizerModule:
Collaboration diagram for CDCDigitizerModule:

Classes

struct  SignalInfo
 Structure for saving the signal information. More...
 
struct  XTalkInfo
 Structure for saving the x-talk information. More...
 

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

 CDCDigitizerModule ()
 Constructor.
 
void initialize () override
 Initialize variables, print info, and start CPU clock.
 
void event () override
 Actual digitization of all hits in the CDC. More...
 
void terminate () override
 Terminate func.
 
virtual std::vector< std::string > getFileNames (bool outputFiles)
 Return a list of output filenames for this modules. More...
 
virtual void beginRun ()
 Called when entering a new run. More...
 
virtual void endRun ()
 This method is called if the current run ends. 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

double smearDriftLength (double driftLength, double dDdt)
 Method used to smear the drift length. More...
 
double getdDdt (double driftLength)
 The method to get dD/dt. More...
 
double getDriftTime (double driftLength, bool addTof, bool addDelay)
 The method to get drift time based on drift length. More...
 
void makeSignalsAfterShapers (const WireID &wid, double edep, double dx, double costh, unsigned short &adcCount, double &convFactorForThreshold)
 Function to make signals after shapers. More...
 
double getPositiveT0 (const WireID &)
 Modify t0 for negative-t0 case.
 
void setFEElectronics ()
 Set FEE parameters (from DB)
 
double Polya (double xmax=10)
 Generate randum number according to Polya distribution. More...
 
void setSemiTotalGain ()
 Set semi-total gain (from DB)
 
double getSemiTotalGain (int clayer, int cell) const
 Return semi-total gain of the specified wire. More...
 
double getSemiTotalGain (const WireID &wireID) const
 Return semi-total gain of the specified wire. More...
 
void addXTalk ()
 Add crosstalk.
 
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

StoreArray< MCParticlem_mcParticles
 Set edep-to-ADC conversion params. More...
 
StoreArray< CDCSimHitm_simHits
 CDCSimHit array.
 
StoreArray< CDCHitm_cdcHits
 CDCHit array.
 
StoreArray< CDCHitm_cdcHits4Trg
 CDCHit4trg array.
 
std::string m_inputCDCSimHitsName
 Input array name. More...
 
std::string m_outputCDCHitsName
 Output array name.
 
std::string m_outputCDCHitsName4Trg
 Output array name for trigger.
 
std::string m_MCParticlesToSimHitsName
 Relation for origin of incoming SimHits.
 
std::string m_SimHitsTOCDCHitsName
 Relation for outgoing CDCHits.
 
std::string m_OptionalFirstMCParticlesToHitsName
 Relation name for optional matching of up to first three MCParticles.
 
std::string m_OptionalAllMCParticlesToHitsName
 Relation name for optional matching of all MCParticles.
 
bool m_useSimpleDigitization
 Use float Gaussian Smearing instead of proper digitization.
 
double m_fraction
 Fraction of the first Gaussian used to smear drift length.
 
double m_mean1
 Mean value of the first Gassian used to smear drift length.
 
double m_resolution1
 Resolution of the first Gassian used to smear drift length.
 
double m_mean2
 Mean value of the second Gassian used to smear drift length.
 
double m_resolution2
 Resolution of the second Gassian used to smear drift length.
 
double m_tdcThreshold4Outer
 TDC threshold for outer layers in unit of eV.
 
double m_tdcThreshold4Inner
 TDC threshold for inner layers in unit of eV.
 
int m_eDepInGasMode
 Mode for extracting dE(gas) from dE(gas+wire)
 
int m_adcThreshold
 Threshold for ADC in unit of count.
 
double m_tMin
 Lower edge of time window in ns.
 
double m_tMaxOuter
 Upper edge of time window in ns for the outer layers.
 
double m_tMaxInner
 Upper edge of time window in ns for the inner layers.
 
double m_trigTimeJitter
 Magnitude of trigger timing jitter (ns).
 
CDC::CDCGeometryParm_cdcgp
 Cached Pointer to CDCGeometryPar.
 
CDC::CDCGeoControlParm_gcp
 Cached pointer to CDCGeoControlPar.
 
CDCSimHitm_aCDCSimHit
 Pointer to CDCSimHit.
 
WireID m_wireID
 WireID of this hit.
 
unsigned short m_posFlag
 left or right flag of this hit
 
unsigned short m_boardID = 0
 FEE board ID.
 
B2Vector3D m_posWire
 wire position of this hit
 
B2Vector3D m_posTrack
 track position of this hit
 
B2Vector3D m_momentum
 3-momentum of this hit
 
double m_driftLength
 drift length of this hit
 
double m_flightTime
 flight time of this hit
 
double m_globalTime
 global time of this hit
 
double m_tdcBinWidth
 Width of a TDC bin (in ns)
 
double m_tdcBinWidthInv
 m_tdcBinWidth^-1 (in ns^-1)
 
double m_tdcResol
 TDC resolution (in ns)
 
double m_driftV
 Nominal drift velocity (in cm/ns)
 
double m_driftVInv
 m_driftV^-1 (in ns/cm)
 
double m_propSpeedInv
 Inv. More...
 
double m_tdcThresholdOffset
 Offset for TDC(digital) threshold (mV)
 
double m_analogGain
 analog gain (V/pC)
 
double m_digitalGain
 digital gain (V/pC)
 
double m_adcBinWidth
 ADC bin width (mV)
 
double m_addFudgeFactorForSigma
 additional fudge factor for space resol.
 
double m_totalFudgeFactor = 1.
 total fudge factor for space resol.
 
bool m_gasGainSmearing = true
 Swtich for gas gain smearing.
 
double m_effWForGasGainSmearing = 0.0266
 Effective energy (keV) for one electron prod. More...
 
double m_thetaOfPolya = 0.5
 theta of Polya function for gas gain smearing
 
bool m_extraADCSmearing = false
 Swtich for extra ADC smearing.
 
double m_runGain = 1.
 run gain.
 
float m_semiTotalGain [c_maxNSenseLayers][c_maxNDriftCells] = {{}}
 total gain per wire
 
double m_overallGainFactor = 1.
 Overall gain factor.
 
double m_degOfSPEOnThreshold = 0
 Degree of space charge effect on timing threshold.
 
bool m_doSmearing
 A switch to control drift length smearing.
 
bool m_addTimeWalk
 A switch used to control adding time-walk delay into the total drift time or not.
 
bool m_addInWirePropagationDelay
 A switch used to control adding propagation delay into the total drift time or not.
 
bool m_addTimeOfFlight
 A switch used to control adding time of flight into the total drift time or not.
 
bool m_addInWirePropagationDelay4Bg
 A switch used to control adding propagation delay into the total drift time or not for beam bg.
 
bool m_addTimeOfFlight4Bg
 A switch used to control adding time of flight into the total drift time or not for beam bg.
 
bool m_outputNegativeDriftTime
 A switch to output negative drift time to CDCHit.
 
bool m_output2ndHit
 A switch to output 2nd hit.
 
bool m_align
 A switch to control alignment.
 
bool m_correctForWireSag
 A switch to control wire sag.
 
bool m_treatNegT0WiresAsGood
 A switch for negative-t0 wires.
 
bool m_matchFirstMCParticles
 A switch to match first three MCParticles, not just the one with smallest drift time.
 
bool m_matchAllMCParticles
 A switch to match all particles to a hit, regardless wether they produced a hit or not.
 
bool m_useDB4FEE
 Fetch FEE params from DB.
 
DBArray< CDCFEElectronics > * m_fEElectronicsFromDB = nullptr
 Pointer to FE electronics params. More...
 
float m_lowEdgeOfTimeWindow [c_nBoards] = {0}
 Lower edge of time-window.
 
float m_uprEdgeOfTimeWindow [c_nBoards] = {0}
 Upper edge of time-window.
 
float m_tdcThresh [c_nBoards] = {0}
 Threshold for timing-signal.
 
float m_adcThresh [c_nBoards] = {0}
 Threshold for FADC.
 
unsigned short m_widthOfTimeWindowInCount [c_nBoards] = {0}
 Width of time window.
 
bool m_useDB4EDepToADC
 Fetch edep-to-ADC conversion params. More...
 
bool m_useDB4RunGain
 Fetch run gain from DB.
 
bool m_spaceChargeEffect
 Space charge effect.
 
DBObjPtr< CDCDedxRunGain > * m_runGainFromDB = nullptr
 Pointer to run gain from DB.
 
DBObjPtr< CDCDedxScaleFactor > * m_gain0FromDB = nullptr
 Pointer to overall gain factor from DB.
 
DBObjPtr< CDCDedxWireGain > * m_wireGainFromDB = nullptr
 Pointer to wire gain from DB.
 
bool m_addXTalk
 Flag to switch on/off crosstalk.
 
bool m_issue2ndHitWarning
 Flag to switch on/off a warning on the 2nd TDC hit.
 
bool m_includeEarlyXTalks
 Flag to switch on/off xtalks earlier than the hit.
 
int m_debugLevel
 Debug level.
 
int m_debugLevel4XTalk
 Debug level for crosstalk.
 
DBObjPtr< CDCCrossTalkLibrary > * m_xTalkFromDB = nullptr
 Pointer to cross-talk from DB.
 
DBObjPtr< CDCCorrToThresholds > * m_corrToThresholdFromDB = nullptr
 Pointer to threshold correction from DB.
 
StoreObjPtr< SimClockStatem_simClockState
 generated hardware clock state
 
bool m_synchronization = true
 Flag to switch on/off timing synchronization.
 
bool m_randomization = true
 Flag to switch on/off timing randmization.
 
int m_tSimMode = 0
 Timing simulation mode.
 
int m_offsetForTriggerBin = 1
 Input to getCDCTriggerBin(offset)
 
int m_trgTimingOffsetInCount = 4
 Trigger timing offset in unit of count.
 
int m_shiftOfTimeWindowIn32Count = 153
 Shift of time window for synchronization in 32count.
 
unsigned short m_trgDelayInCount [c_nBoards] = {0}
 Trigger delay in frontend electronics in count.
 
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 Class for Detailed Digitization of CDC.

Currently a float Gaussian with steerable parameters is used for the digitization. If there are two or more hits in one cell, only the shortest drift length is selected. The signal amplitude is the sum of all hits deposited energy in this cell.

Definition at line 54 of file CDCDigitizerModule.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

◆ beginRun()

virtual void beginRun ( void  )
inlinevirtualinherited

Called when entering a new run.

Called at the beginning of each run, the method gives you the chance to change run dependent constants like alignment parameters, etc.

This method can be implemented by subclasses.

Reimplemented in DQMHistOutputToEPICSModule, DQMHistInjectionModule, DQMHistAnalysisTRGModule, DQMHistAnalysisRunNrModule, DQMHistAnalysisRooFitExampleModule, DQMHistAnalysisPXDTrackChargeModule, DQMHistAnalysisPXDReductionModule, DQMHistAnalysisPXDInjectionModule, DQMHistAnalysisPXDEffModule, DQMHistAnalysisPXDDAQModule, DQMHistAnalysisPXDCMModule, DQMHistAnalysisPXDChargeModule, DQMHistAnalysisEpicsOutputModule, DQMHistAnalysisDeltaTestModule, DQMHistAnalysisDeltaEpicsMonObjExampleModule, vxdDigitMaskingModule, VXDDQMExpressRecoModule, TrackingAbortDQMModule, PXDROIFinderAnalysisModule, PXDdigiFilterModule, PXDclusterFilterModule, SVDUnpackerDQMModule, SVDDQMInjectionModule, SVDDQMExpressRecoModule, SVDDQMDoseModule, SVDDQMClustersOnTrackModule, DetectorOccupanciesDQMModule, TTDDQMModule, PXDUnpackerModule, PXDPackerModule, PXDDigitizerModule, PXDTrackClusterDQMModule, PXDROIDQMModule, PXDRawDQMModule, PXDRawDQMCorrModule, PXDInjectionDQMModule, PXDGatedModeDQMModule, PXDGatedDHCDQMModule, PXDDQMExpressRecoModule, PXDDQMEfficiencySelftrackModule, PXDDQMEfficiencyModule, PXDDQMCorrModule, PXDDQMClustersModule, PXDDAQDQMModule, PXDMCBgTupleProducerModule, PXDBgTupleProducerModule, PyModule, ECLDQMInjectionModule, V0ObjectsDQMModule, DelayDQMModule, DAQMonitorModule, DQMHistSnapshotsModule, DQMHistDeltaHistoModule, DQMHistComparitorModule, DQMHistAnalysisTRGECLModule, DQMHistAnalysisTrackingHLTModule, DQMHistAnalysisTOPModule, DQMHistAnalysisSVDOnMiraBelleModule, DQMHistAnalysisSVDGeneralModule, DQMHistAnalysisSVDEfficiencyModule, DQMHistAnalysisSVDDoseModule, DQMHistAnalysisPXDFitsModule, DQMHistAnalysisPXDERModule, DQMHistAnalysisOutputRelayMsgModule, DQMHistAnalysisOutputMonObjModule, DQMHistAnalysisOutputFileModule, DQMHistAnalysisMiraBelleModule, DQMHistAnalysisKLM2Module, DQMHistAnalysisKLMModule, DQMHistAnalysisIPModule, DQMHistAnalysisInputTestModule, DQMHistAnalysisInputRootFileModule, DQMHistAnalysisInputPVSrvModule, DQMHistAnalysisHLTModule, DQMHistAnalysisExampleFlagsModule, DQMHistAnalysisExampleModule, DQMHistAnalysisEventT0TriggerJitterModule, DQMHistAnalysisEventT0EfficiencyModule, DQMHistAnalysisEpicsExampleModule, DQMHistAnalysisECLSummaryModule, DQMHistAnalysisECLShapersModule, DQMHistAnalysisECLConnectedRegionsModule, DQMHistAnalysisECLModule, DQMHistAnalysisDAQMonObjModule, DQMHistAnalysisCDCMonObjModule, DQMHistAnalysisCDCDedxModule, VXDMisalignmentModule, TRGRAWDATAModule, TRGTOPWaveformPlotterModule, TRGTOPUnpackerWaveformModule, TRGTOPUnpackerModule, TRGTOPTRD2TTSConverterModule, TRGTOPDQMModule, KLMTriggerModule, TRGGRLUnpackerModule, TRGGRLDQMModule, TRGGRLProjectsModule, TRGGRLModule, TRGGRLMatchModule, TRGGDLUnpackerModule, TRGGDLSummaryModule, TRGGDLDSTModule, TRGGDLDQMModule, TRGGDLModule, TRGECLUnpackerModule, TRGECLTimingCalModule, TRGECLRawdataAnalysisModule, TRGECLQAMModule, TRGECLEventTimingDQMModule, TRGECLDQMModule, TRGECLBGTCHitModule, TRGECLModule, TRGECLFAMModule, MCMatcherTRGECLModule, CDCTriggerUnpackerModule, TRGCDCTSStreamModule, TRGCDCTSFUnpackerModule, TRGCDCTSFDQMModule, TRGCDCT3DUnpackerModule, TRGCDCT3DDQMModule, TRGCDCT3DConverterModule, TRGCDCT2DDQMModule, TRGCDCETFUnpackerModule, TRGCDCModule, CDCTriggerTSFModule, CDCTriggerNDFinderModule, CDCTriggerNeuroDQMOnlineModule, CDCTriggerNeuroDQMModule, FindletModule< AFindlet >, FindletModule< TrackFinderAutomaton >, FindletModule< FacetCreator >, FindletModule< CKFToCDCFromEclFindlet >, FindletModule< AxialTrackCreatorMCTruth >, FindletModule< AxialStraightTrackFinder >, FindletModule< CKFToCDCFindlet >, FindletModule< CKFToSVDSeedFindlet >, FindletModule< SegmentLinker >, FindletModule< TrackCreatorSegmentTripleAutomaton >, FindletModule< TrackCreatorSegmentPairAutomaton >, FindletModule< SegmentOrienter >, FindletModule< SegmentCreatorFacetAutomaton >, FindletModule< TrackFinderSegmentTripleAutomaton >, FindletModule< SegmentFinderFacetAutomaton >, FindletModule< CKFToSVDFindlet >, FindletModule< TrackRejecter >, FindletModule< SegmentCreatorMCTruth >, FindletModule< TrackFinderCosmics >, FindletModule< TrackExporter >, FindletModule< SuperClusterCreator >, FindletModule< AsicBackgroundLibraryCreator >, FindletModule< HitBasedT0Extractor >, FindletModule< TrackFinderSegmentPairAutomaton >, FindletModule< ClusterPreparer >, FindletModule< AxialTrackFinderHough >, FindletModule< CosmicsTrackMergerFindlet >, FindletModule< TrackOrienter >, FindletModule< TrackLinker >, FindletModule< TrackFinder >, FindletModule< SegmentPairCreator >, FindletModule< MonopoleAxialTrackFinderLegendre >, FindletModule< HitReclaimer >, FindletModule< ClusterRefiner< BridgingWireHitRelationFilter > >, FindletModule< AxialTrackFinderLegendre >, FindletModule< AxialTrackCreatorSegmentHough >, FindletModule< TrackQualityEstimator >, FindletModule< StereoHitFinder >, FindletModule< CKFToPXDFindlet >, FindletModule< WireHitPreparer >, FindletModule< TrackFlightTimeAdjuster >, FindletModule< TrackCreatorSingleSegments >, FindletModule< SegmentRejecter >, FindletModule< SegmentFitter >, FindletModule< SegmentTripleCreator >, FindletModule< SegmentTrackCombiner >, FindletModule< vxdHoughTracking::SVDHoughTracking >, FindletModule< MCVXDCDCTrackMergerFindlet >, FindletModule< TrackCombiner >, FindletModule< MonopoleStereoHitFinder >, FindletModule< DATCONFPGAFindlet >, FindletModule< WireHitBackgroundDetector >, FindletModule< AxialSegmentPairCreator >, FindletModule< WireHitCreator >, FindletModule< TrackQualityAsserter >, FindletModule< MonopoleStereoHitFinderQuadratic >, FindletModule< ClusterBackgroundDetector >, FindletModule< CDCTrackingEventLevelMdstInfoFillerFindlet >, VXDTFTrainingDataCollectorModule, TrackFinderVXDCellOMatModule, TrackFinderVXDBasicPathFinderModule, SegmentNetworkProducerModule, SectorMapBootstrapModule, VXDQualityEstimatorMVAModule, VXDQETrainingDataCollectorModule, QualityEstimatorVXDModule, VXDSimpleClusterizerModule, TrackFinderVXDAnalizerModule, SecMapTrainerVXDTFModule, SecMapTrainerBaseModule, TrackQualityEstimatorMVAModule, TrackQETrainingDataCollectorModule, V0findingPerformanceEvaluationModule, TrackingPerformanceEvaluationModule, HitXPModule, EffPlotsModule, TrackFinderMCTruthRecoTracksModule, TrackCreatorModule, SVDROIFinderModule, SVDROIFinderAnalysisModule, SPTCvirtualIPRemoverModule, SPTCmomentumSeedRetrieverModule, PXDROIFinderModule, MuidModule, MCTrackCandClassifierModule, MCV0MatcherModule, BeamSpotMonitorModule, FlipQualityModule, ExtModule, DQMHistoModuleBase, TOPXTalkChargeShareSetterModule, TOPWaveformFeatureExtractorModule, TOPUnpackerModule, TOPTimeRecalibratorModule, TOPTimeBaseCalibratorModule, TOPTBCComparatorModule, TOPRawDigitConverterModule, TOPPackerModule, TOPNtupleModule, TOPModuleT0CalibratorModule, TOPMCTrackMakerModule, TOPLaserCalibratorModule, TOPInterimFENtupleModule, TOPLaserHitSelectorModule, TOPGainEfficiencyCalculatorModule, TOPDQMModule, TOPDoublePulseGeneratorModule, TOPTriggerDigitizerModule, TOPDigitizerModule, TOPChannelT0MCModule, TOPChannelMaskerModule, TOPBunchFinderModule, TOPBackgroundModule, SVDUnpackerModule, SVDTimeGroupingModule, SVDSpacePointCreatorModule, SVDTriggerQualityGeneratorModule, SVDEventInfoSetterModule, SVDDigitizerModule, SVD3SamplesEmulatorModule, SVDRecoDigitCreatorModule, SVDMissingAPVsClusterCreatorModule, SVDDataFormatCheckModule, SVDCoGTimeEstimatorModule, SVDClusterizerModule, SVDShaperDigitsFromTracksModule, SVDPerformanceTTreeModule, SVDPerformanceModule, SVDOccupancyAnalysisModule, SVDMaxStripTTreeModule, SVDClusterFilterModule, SVDClusterEvaluationTrueInfoModule, SVDClusterEvaluationModule, SVDB4CommissioningPlotsModule, SVDPackerModule, svdDumpModule, SVDDQMHitTimeModule, SVDTimeCalibrationsMonitorModule, SVDPositionErrorScaleFactorImporterModule, SVDLocalCalibrationsMonitorModule, SVDLocalCalibrationsCheckModule, SVDLatencyCalibrationModule, SVDHotStripFinderModule, SVDClusterCalibrationsMonitorModule, SVDBackgroundModule, MaterialScanModule, FullSimModule, PIDNtupleModule, MdstPIDModule, KlongValidationModule, KLMExpertModule, ECLExpertModule, DataWriterModule, EventT0DQMModule, CDCDedxValidationModule, CDCDedxDQMModule, Convert2RawDetModule, PXDClusterizerModule, PXDPerformanceModule, PXDClustersFromTracksModule, PXDRawDQMChipsModule, PXDBackgroundModule, AWESOMEBasicModule, MVAPrototypeModule, MVAMultipleExpertsModule, MVAExpertModule, KLMUnpackerModule, KLMScintillatorSimulatorModule, KLMReconstructorModule, KLMPackerModule, KLMDQM2Module, KLMDQMModule, KLMDigitTimeShifterModule, KLMDigitizerModule, KLMClustersReconstructorModule, KLMClusterEfficiencyModule, KLMClusterAnaModule, EKLMDataCheckerModule, BKLMTrackingModule, BKLMSimHistogrammerModule, BKLMDigitAnalyzerModule, BKLMAnaModule, StatisticsTimingHLTDQMModule, SoftwareTriggerHLTDQMModule, SoftwareTriggerModule, ExportGeometryModule, CreateFieldMapModule, KKGenInputModule, OverrideGenerationFlagsModule, EvtGenInputModule, EvtGenDecayModule, TxModule, RxModule, SeqRootOutputModule, SeqRootInputModule, StatisticsSummaryModule, HistoManagerModule, GearboxModule, RandomBarrierModule, ProgressModule, IoVDependentConditionModule, EventLimiterModule, EventInfoPrinterModule, SwitchDataStoreModule, SubEventModule, HistoModule, ECLWaveformFitModule, ECLUnpackerModule, ECLSplitterN2Module, ECLSplitterN1Module, ECLShowerShapeModule, ECLShowerCorrectorModule, ECLShowerCalibratorModule, ECLPackerModule, ECLLOMModule, ECLLocalRunCalibratorModule, ECLLocalMaximumFinderModule, ECLHitDebugModule, ECLFinalizerModule, ECLDQMOutOfTimeDigitsModule, ECLDQMEXTENDEDModule, ECLDQMConnectedRegionsModule, ECLDQMModule, EclDisplayModule, ECLDigitizerPureCsIModule, ECLDigitizerModule, ECLDigitCalibratorModule, ECLDataAnalysisModule, ECLCRFinderModule, ECLCovarianceMatrixModule, ECLClusterPSDModule, ECLChargedPIDMVAModule, ECLChargedPIDDataAnalysisValidationModule, ECLChargedPIDDataAnalysisModule, ECLChargedPIDModule, ECLBackgroundModule, PhysicsObjectsMiraBelleModule, PhysicsObjectsMiraBelleHadronModule, PhysicsObjectsMiraBelleDstModule, PhysicsObjectsMiraBelleDst2Module, PhysicsObjectsMiraBelleBhabhaModule, PhysicsObjectsDQMModule, IPDQMModule, DQMHistAnalysisInputModule, StorageSerializerModule, StorageDeserializerModule, SeqRootMergerModule, PartialSeqRootReaderModule, Ds2RawFileModule, Rbuf2RbufModule, Rbuf2DsModule, RawInputModule, Raw2DsModule, FastRbuf2DsModule, EvReductionModule, Ds2RbufModule, Ds2RawModule, CertifyParallelModule, SerializerModule, MonitorDataCOPPERModule, GenRawSendModule, DeSerializerPXDModule, ElapsedTimeModule, HLTDQM2ZMQModule, ReceiveEventModule, Ds2SampleModule, TrackAnaModule, MonitorDataModule, DqmHistoManagerModule, TxSocketModule, RxSocketModule, DAQPerfModule, CDCUnpackerModule, CDCRecoTrackFilterModule, CDCPackerModule, CDCDQMModule, cdcDQM7Module, CDCCRTestModule, CDCCosmicAnalysisModule, QcsmonitorStudyModule, QcsmonitorDigitizerModule, PlumeDigitizerModule, PindiodeStudyModule, PinDigitizerModule, TPCStudyModule, TpcDigitizerModule, MicrotpcStudyModule, He3tubeStudyModule, He3DigitizerModule, FANGSStudyModule, FANGSDigitizerModule, DosiStudyModule, DosiDigitizerModule, CsIStudyModule, CsiStudy_v2Module, CsiModule, CsIDigitizerModule, CsiDigitizer_v2Module, ClawsStudyModule, ClawsDigitizerModule, ClawStudyModule, ClawDigitizerModule, BgoStudyModule, BgoDigitizerModule, BeamDigitizerModule, BeamabortStudyModule, ReprocessorModule, NtuplePhase1_v6Module, AnalysisPhase1StudyModule, BGOverlayInputModule, BeamBkgTagSetterModule, BeamBkgMixerModule, BeamBkgHitRateMonitorModule, BeamBkgGeneratorModule, BelleMCOutputModule, B2BIIMdstInputModule, B2BIIFixMdstModule, B2BIIConvertMdstModule, B2BIIConvertBeamParamsModule, B2BIIMCParticlesMonitorModule, ARICHReconstructorModule, ARICHRateCalModule, ARICHDQMModule, ARICHDigitizerModule, arichBtestModule, TreeFitterModule, TagVertexModule, PhotonEfficiencySystematicsModule, ParticleVertexFitterModule, LowEnergyPi0VetoExpertModule, LowEnergyPi0IdentificationExpertModule, CurlTaggerModule, ChargedPidMVAMulticlassModule, ChargedPidMVAModule, EnergyBiasCorrectionModule, CosmicsAlignmentValidationModule, EventsOfDoomBusterModule, CalibrationCollectorModule, GetEventFromSocketModule, SrsensorModule, QcsmonitorModule, PlumeModule, PindiodeModule, Ph1sustrModule, Ph1bpipeModule, MicrotpcModule, He3tubeModule, FANGSModule, DosiModule, CLAWSModule, ClawModule, CaveModule, BgoModule, BeamabortModule, and ARICHBackgroundModule.

Definition at line 147 of file Module.h.

◆ 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.

◆ endRun()

virtual void endRun ( void  )
inlinevirtualinherited

This method is called if the current run ends.

Use this method to store information, which should be aggregated over one run.

This method can be implemented by subclasses.

Reimplemented in DQMHistOutputToEPICSModule, DQMHistAnalysisTRGModule, DQMHistAnalysisRooFitExampleModule, DQMHistAnalysisPXDTrackChargeModule, DQMHistAnalysisPXDChargeModule, DQMHistAnalysisEpicsOutputModule, DQMHistAnalysisDeltaTestModule, DQMHistAnalysisDeltaEpicsMonObjExampleModule, vxdDigitMaskingModule, TrackSetEvaluatorHopfieldNNDEVModule, SVDUnpackerDQMModule, PyModule, DQMHistSnapshotsModule, DQMHistDeltaHistoModule, DQMHistComparitorModule, DQMHistAnalysisTRGGDLModule, DQMHistAnalysisTRGECLModule, DQMHistAnalysisTOPModule, DQMHistAnalysisSVDOnMiraBelleModule, DQMHistAnalysisSVDGeneralModule, DQMHistAnalysisSVDEfficiencyModule, DQMHistAnalysisSVDDoseModule, DQMHistAnalysisPXDFitsModule, DQMHistAnalysisOutputRelayMsgModule, DQMHistAnalysisOutputMonObjModule, DQMHistAnalysisOutputFileModule, DQMHistAnalysisMonObjModule, DQMHistAnalysisMiraBelleModule, DQMHistAnalysisKLM2Module, DQMHistAnalysisKLMModule, DQMHistAnalysisInputTestModule, DQMHistAnalysisInputPVSrvModule, DQMHistAnalysisHLTMonObjModule, DQMHistAnalysisExampleFlagsModule, DQMHistAnalysisExampleModule, DQMHistAnalysisEpicsExampleModule, DQMHistAnalysisECLSummaryModule, DQMHistAnalysisECLShapersModule, DQMHistAnalysisECLOutOfTimeDigitsModule, DQMHistAnalysisECLConnectedRegionsModule, DQMHistAnalysisECLModule, DQMHistAnalysisDAQMonObjModule, DQMHistAnalysisCDCMonObjModule, DQMHistAnalysisCDCDedxModule, DQMHistAnalysisARICHMonObjModule, DQMHistAnalysisARICHModule, TRGRAWDATAModule, TRGTOPWaveformPlotterModule, TRGTOPUnpackerWaveformModule, TRGTOPUnpackerModule, TRGTOPTRD2TTSConverterModule, TRGTOPDQMModule, KLMTriggerModule, TRGGRLUnpackerModule, TRGGRLDQMModule, TRGGRLProjectsModule, TRGGRLModule, TRGGRLMatchModule, TRGGDLUnpackerModule, TRGGDLSummaryModule, TRGGDLDSTModule, TRGGDLDQMModule, TRGGDLModule, TRGECLUnpackerModule, TRGECLTimingCalModule, TRGECLRawdataAnalysisModule, TRGECLQAMModule, TRGECLDQMModule, TRGECLBGTCHitModule, TRGECLModule, TRGECLFAMModule, MCMatcherTRGECLModule, TRGCDCTSStreamModule, TRGCDCTSFUnpackerModule, TRGCDCTSFDQMModule, TRGCDCT3DUnpackerModule, TRGCDCT3DDQMModule, TRGCDCT3DConverterModule, TRGCDCT2DDQMModule, TRGCDCETFUnpackerModule, TRGCDCModule, CDCTriggerNDFinderModule, CDCTriggerNeuroDQMOnlineModule, CDCTriggerNeuroDQMModule, FindletModule< AFindlet >, FindletModule< TrackFinderAutomaton >, FindletModule< FacetCreator >, FindletModule< CKFToCDCFromEclFindlet >, FindletModule< AxialTrackCreatorMCTruth >, FindletModule< AxialStraightTrackFinder >, FindletModule< CKFToCDCFindlet >, FindletModule< CKFToSVDSeedFindlet >, FindletModule< SegmentLinker >, FindletModule< TrackCreatorSegmentTripleAutomaton >, FindletModule< TrackCreatorSegmentPairAutomaton >, FindletModule< SegmentOrienter >, FindletModule< SegmentCreatorFacetAutomaton >, FindletModule< TrackFinderSegmentTripleAutomaton >, FindletModule< SegmentFinderFacetAutomaton >, FindletModule< CKFToSVDFindlet >, FindletModule< TrackRejecter >, FindletModule< SegmentCreatorMCTruth >, FindletModule< TrackFinderCosmics >, FindletModule< TrackExporter >, FindletModule< SuperClusterCreator >, FindletModule< AsicBackgroundLibraryCreator >, FindletModule< HitBasedT0Extractor >, FindletModule< TrackFinderSegmentPairAutomaton >, FindletModule< ClusterPreparer >, FindletModule< AxialTrackFinderHough >, FindletModule< CosmicsTrackMergerFindlet >, FindletModule< TrackOrienter >, FindletModule< TrackLinker >, FindletModule< TrackFinder >, FindletModule< SegmentPairCreator >, FindletModule< MonopoleAxialTrackFinderLegendre >, FindletModule< HitReclaimer >, FindletModule< ClusterRefiner< BridgingWireHitRelationFilter > >, FindletModule< AxialTrackFinderLegendre >, FindletModule< AxialTrackCreatorSegmentHough >, FindletModule< TrackQualityEstimator >, FindletModule< StereoHitFinder >, FindletModule< CKFToPXDFindlet >, FindletModule< WireHitPreparer >, FindletModule< TrackFlightTimeAdjuster >, FindletModule< TrackCreatorSingleSegments >, FindletModule< SegmentRejecter >, FindletModule< SegmentFitter >, FindletModule< SegmentTripleCreator >, FindletModule< SegmentTrackCombiner >, FindletModule< vxdHoughTracking::SVDHoughTracking >, FindletModule< MCVXDCDCTrackMergerFindlet >, FindletModule< TrackCombiner >, FindletModule< MonopoleStereoHitFinder >, FindletModule< DATCONFPGAFindlet >, FindletModule< WireHitBackgroundDetector >, FindletModule< AxialSegmentPairCreator >, FindletModule< WireHitCreator >, FindletModule< TrackQualityAsserter >, FindletModule< MonopoleStereoHitFinderQuadratic >, FindletModule< ClusterBackgroundDetector >, FindletModule< CDCTrackingEventLevelMdstInfoFillerFindlet >, VXDTFTrainingDataCollectorModule, SectorMapBootstrapModule, NoKickCutsEvalModule, VXDSimpleClusterizerModule, TrackFinderVXDAnalizerModule, SecMapTrainerVXDTFModule, SecMapTrainerBaseModule, V0findingPerformanceEvaluationModule, TrackingPerformanceEvaluationModule, HitXPModule, EffPlotsModule, TrackFinderMCTruthRecoTracksModule, SVDROIFinderModule, SVDROIFinderAnalysisModule, SVDROIDQMModule, SPTCvirtualIPRemoverModule, SPTCmomentumSeedRetrieverModule, RT2SPTCConverterModule, PXDROIFinderModule, MCSlowPionPXDROICreatorModule, MuidModule, MCTrackCandClassifierModule, MCV0MatcherModule, GenfitVisModule, ExtModule, TOPXTalkChargeShareSetterModule, TOPWaveformQualityPlotterModule, TOPWaveformFeatureExtractorModule, TOPUnpackerModule, TOPTimeBaseCalibratorModule, TOPTBCComparatorModule, TOPRawDigitConverterModule, TOPPackerModule, TOPNtupleModule, TOPMCTrackMakerModule, TOPLaserCalibratorModule, TOPInterimFENtupleModule, TOPLaserHitSelectorModule, TOPGainEfficiencyCalculatorModule, TOPDoublePulseGeneratorModule, TOPTriggerDigitizerModule, TOPChannelT0MCModule, TOPBackgroundModule, SVDUnpackerModule, SVDTriggerQualityGeneratorModule, SVD3SamplesEmulatorModule, SVDRecoDigitCreatorModule, SVDDataFormatCheckModule, SVDCoGTimeEstimatorModule, SVDClusterizerModule, SVDShaperDigitsFromTracksModule, SVDPerformanceModule, SVDOccupancyAnalysisModule, SVDClusterFilterModule, SVDClusterEvaluationTrueInfoModule, SVDClusterEvaluationModule, SVDB4CommissioningPlotsModule, SVDPackerModule, svdDumpModule, SVDTimeCalibrationsMonitorModule, SVDPositionErrorScaleFactorImporterModule, SVDLocalCalibrationsMonitorModule, SVDLatencyCalibrationModule, SVDHotStripFinderModule, SVDClusterCalibrationsMonitorModule, SVDBackgroundModule, FullSimModule, PIDNtupleModule, MdstPIDModule, KlongValidationModule, DataWriterModule, CDCDedxValidationModule, CDCDedxDQMModule, Root2BinaryModule, PrintEventRateModule, PrintDataModule, Convert2RawDetModule, PXDPerformanceModule, PXDClustersFromTracksModule, PXDBackgroundModule, AWESOMEBasicModule, KLMUnpackerModule, KLMScintillatorSimulatorModule, KLMReconstructorModule, KLMPackerModule, KLMDQM2Module, KLMDQMModule, KLMDigitizerModule, KLMClustersReconstructorModule, KLMClusterEfficiencyModule, EKLMDataCheckerModule, BKLMTrackingModule, BKLMSimHistogrammerModule, BKLMDigitAnalyzerModule, BKLMAnaModule, OverrideGenerationFlagsModule, EvtGenDecayModule, ZMQTxWorkerModule, ZMQTxInputModule, TxModule, RxModule, SeqRootOutputModule, SeqRootInputModule, StatisticsSummaryModule, HistoManagerModule, RandomBarrierModule, EventInfoPrinterModule, SwitchDataStoreModule, SubEventModule, HistoModule, ECLWaveformFitModule, ECLUnpackerModule, ECLSplitterN2Module, ECLSplitterN1Module, ECLShowerShapeModule, ECLShowerCorrectorModule, ECLShowerCalibratorModule, ECLPackerModule, ECLLOMModule, ECLLocalRunCalibratorModule, ECLLocalMaximumFinderModule, ECLHitDebugModule, ECLFinalizerModule, ECLDQMEXTENDEDModule, ECLDQMModule, EclDisplayModule, ECLDigitizerPureCsIModule, ECLDigitizerModule, ECLDigitCalibratorModule, ECLDataAnalysisModule, ECLCRFinderModule, ECLCovarianceMatrixModule, ECLClusterPSDModule, ECLChargedPIDDataAnalysisValidationModule, ECLChargedPIDDataAnalysisModule, ECLChargedPIDModule, ECLBackgroundModule, PhysicsObjectsMiraBelleModule, PhysicsObjectsMiraBelleHadronModule, PhysicsObjectsMiraBelleDstModule, PhysicsObjectsMiraBelleDst2Module, PhysicsObjectsMiraBelleBhabhaModule, PhysicsObjectsDQMModule, DQMHistAnalysisInputModule, StorageSerializerModule, StorageRootOutputModule, StorageDeserializerModule, SeqRootMergerModule, PartialSeqRootReaderModule, Ds2RawFileModule, Rbuf2RbufModule, Rbuf2DsModule, RawInputModule, Raw2DsModule, FastRbuf2DsModule, EvReductionModule, Ds2RbufModule, Ds2RawModule, CertifyParallelModule, SerializerModule, Root2RawModule, MonitorDataCOPPERModule, GenRawSendModule, DeSerializerPXDModule, ElapsedTimeModule, HLTDs2ZMQModule, HLTDQM2ZMQModule, ReceiveEventModule, Ds2SampleModule, TrackAnaModule, MonitorDataModule, DqmHistoManagerModule, TxSocketModule, RxSocketModule, DAQPerfModule, CDCUnpackerModule, CDCRecoTrackFilterModule, CDCPackerModule, CDCDQMModule, cdcDQM7Module, CDCCRTestModule, CDCCosmicAnalysisModule, QcsmonitorStudyModule, QcsmonitorDigitizerModule, PlumeDigitizerModule, PindiodeStudyModule, PinDigitizerModule, TPCStudyModule, TpcDigitizerModule, MicrotpcStudyModule, He3tubeStudyModule, He3DigitizerModule, FANGSStudyModule, FANGSDigitizerModule, DosiStudyModule, DosiDigitizerModule, CsIStudyModule, CsiStudy_v2Module, CsiModule, CsIDigitizerModule, CsiDigitizer_v2Module, ClawsStudyModule, ClawsDigitizerModule, ClawStudyModule, ClawDigitizerModule, BgoStudyModule, BgoDigitizerModule, BeamDigitizerModule, BeamabortStudyModule, ReprocessorModule, NtuplePhase1_v6Module, AnalysisPhase1StudyModule, BGOverlayInputModule, BeamBkgTagSetterModule, BeamBkgMixerModule, BeamBkgHitRateMonitorModule, BeamBkgGeneratorModule, BelleMCOutputModule, B2BIIMdstInputModule, B2BIIConvertMdstModule, B2BIIMCParticlesMonitorModule, ARICHDQMModule, arichBtestModule, LowEnergyPi0VetoExpertModule, LowEnergyPi0IdentificationExpertModule, CurlTaggerModule, CosmicsAlignmentValidationModule, AlignDQMModule, CalibrationCollectorModule, GetEventFromSocketModule, SrsensorModule, QcsmonitorModule, PlumeModule, PindiodeModule, Ph1sustrModule, Ph1bpipeModule, MicrotpcModule, He3tubeModule, FANGSModule, DosiModule, CLAWSModule, ClawModule, CaveModule, BgoModule, and BeamabortModule.

Definition at line 166 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

Actual digitization of all hits in the CDC.

The digitized hits are written into the DataStore.

Reimplemented from Module.

Definition at line 319 of file CDCDigitizerModule.cc.

320 {
321  // Get SimHit array, MCParticle array, and relation between the two.
322  RelationArray mcParticlesToCDCSimHits(m_mcParticles, m_simHits); //RelationArray created by CDC SensitiveDetector
323 
324 
325  //--- Start Digitization --------------------------------------------------------------------------------------------
326  // Merge the hits in the same cell and save them into CDC signal map.
327 
328  // Define signal map
329  map<WireID, SignalInfo> signalMap;
330  map<WireID, SignalInfo>::iterator iterSignalMap;
331  // Define adc map
332  map<WireID, unsigned short> adcMap;
333  map<WireID, unsigned short>::iterator iterADCMap;
334  // map<WireID, double> adcMap;
335  // map<WireID, double>::iterator iterADCMap;
336 
337  // signal map for trigger
338  map<pair<WireID, unsigned>, SignalInfo> signalMapTrg;
339  map<pair<WireID, unsigned>, SignalInfo>::iterator iterSignalMapTrg;
340 
341  // signal map for all MCParticles: Wire <-> MCArrayIndex
342  map<WireID, std::set<int>> particleMap;
343  map<WireID, std::set<int>>::iterator iterParticleMap;
344 
345 
346  // Set time window per event
347  if (m_tSimMode == 0 || m_tSimMode == 1) {
348  int trigBin = 0;
349  if (m_simClockState.isValid()) {
350  trigBin = m_simClockState->getCDCTriggerBin(m_offsetForTriggerBin);
351  } else {
352  if (m_tSimMode == 0) {
353  B2DEBUG(m_debugLevel, "SimClockState unavailable so switched the mode from synchro to random.");
354  m_tSimMode = 1;
355  }
356  trigBin = gRandom->Integer(4);
357  }
358  if (trigBin < 0 || trigBin > 3) B2ERROR("Invalid trigger bin; must be an integer [0,3]!");
359  unsigned short offs = 8 * trigBin + m_trgTimingOffsetInCount;
360  B2DEBUG(m_debugLevel, "tSimMode,trigBin,offs= " << m_tSimMode << " " << trigBin << " " << offs);
361 
362  //TODO: simplify the following 7 lines and setFEElectronics()
363  for (unsigned short bd = 1; bd < c_nBoards; ++bd) {
364  const short tMaxInCount = 32 * (m_shiftOfTimeWindowIn32Count - m_trgDelayInCount[bd]) - offs;
365  const short tMinInCount = tMaxInCount - 32 * m_widthOfTimeWindowInCount[bd];
366  B2DEBUG(m_debugLevel, bd << " " << tMinInCount << " " << tMaxInCount);
367  m_uprEdgeOfTimeWindow[bd] = m_tdcBinWidth * tMaxInCount;
368  m_lowEdgeOfTimeWindow[bd] = m_tdcBinWidth * tMinInCount;
369  }
370  }
371 
372  // Set trigger timing jitter for this event
373  double trigTiming = m_trigTimeJitter == 0. ? 0. : m_trigTimeJitter * (gRandom->Uniform() - 0.5);
374  // std::cout << "trigTiming= " << trigTiming << std::endl;
375  // Loop over all hits
376  int nHits = m_simHits.getEntries();
377  B2DEBUG(m_debugLevel, "Number of CDCSimHits in the current event: " << nHits);
378  for (int iHits = 0; iHits < nHits; ++iHits) {
379  // Get a hit
380  m_aCDCSimHit = m_simHits[iHits];
381 
382  // Hit geom. info
385  B2FATAL("SimHit with wireID " << m_wireID << " is in CDC SuperLayer: " << m_wireID.getISuperLayer() << " which should not happen.");
386  }
387  // B2DEBUG(29, "Encoded wire number of current CDCSimHit: " << m_wireID);
388 
391  // B2DEBUG(29, "m_boardID= " << m_boardID);
398 
399  //include alignment effects
400  //basically align flag should be always on since on/off is controlled by the input alignment.xml file itself.
401  m_align = true;
402 
403  B2Vector3D bwpAlign = m_cdcgp->wireBackwardPosition(m_wireID, CDCGeometryPar::c_Aligned);
404  B2Vector3D fwpAlign = m_cdcgp->wireForwardPosition(m_wireID, CDCGeometryPar::c_Aligned);
405 
408 
409  //skip correction for wire-position alignment if unnecessary
410  if ((bwpAlign - bwp).Mag() == 0. && (fwpAlign - fwp).Mag() == 0.) m_align = false;
411  // std::cout << "a m_align= " << m_align << std::endl;
412 
413  if (m_align || m_correctForWireSag) {
414 
415  bwp = bwpAlign;
416  fwp = fwpAlign;
417 
418  if (m_correctForWireSag) {
419  double zpos = m_posWire.Z();
420  double bckYSag = bwp.Y();
421  double forYSag = fwp.Y();
422 
423  // CDCGeometryPar::EWirePosition set = m_align ?
424  // CDCGeometryPar::c_Aligned : CDCGeometryPar::c_Base;
425  CDCGeometryPar::EWirePosition set = CDCGeometryPar::c_Aligned;
426  const int layerID = m_wireID.getICLayer();
427  const int wireID = m_wireID.getIWire();
428  m_cdcgp->getWireSagEffect(set, layerID, wireID, zpos, bckYSag, forYSag);
429  bwp.SetY(bckYSag);
430  fwp.SetY(forYSag);
431  }
432 
433  const B2Vector3D L = 5. * m_momentum.Unit(); //(cm) tentative
434  B2Vector3D posIn = m_posTrack - L;
435  B2Vector3D posOut = m_posTrack + L;
436  B2Vector3D posTrack = m_posTrack;
437  B2Vector3D posWire = m_posWire;
438 
439  // m_driftLength = m_cdcgp->ClosestApproach(bwp, fwp, posIn, posOut, posTrack, posWire);
440  m_driftLength = ClosestApproach(bwp, fwp, posIn, posOut, posTrack, posWire);
441  // std::cout << "base-dl, sag-dl, diff= " << m_aCDCSimHit->getDriftLength() <<" "<< m_driftLength <<" "<< m_driftLength - m_aCDCSimHit->getDriftLength() << std::endl;
442  m_posTrack = posTrack;
443  m_posWire = posWire;
444 
445  double deltaTime = 0.; //tentative (probably ok...)
446  // double deltaTime = (posTrack - m_posTrack).Mag() / speed;
447  m_flightTime += deltaTime;
448  m_globalTime += deltaTime;
450  }
451 
452  // Calculate measurement time.
453  // Smear drift length
454  double hitDriftLength = m_driftLength;
455  double dDdt = getdDdt(hitDriftLength);
456  if (m_doSmearing) {
457  hitDriftLength = smearDriftLength(hitDriftLength, dDdt);
458  }
459 
460  //set flags
461  bool addTof = m_addTimeOfFlight4Bg;
462  bool addDelay = m_addInWirePropagationDelay4Bg;
463  if (m_aCDCSimHit->getBackgroundTag() == 0) {
464  addTof = m_addTimeOfFlight;
465  addDelay = m_addInWirePropagationDelay;
466  }
467  double hitDriftTime = getDriftTime(hitDriftLength, addTof, addDelay);
468 
469  //add randamized event time for a beam bg. hit
470  if (m_aCDCSimHit->getBackgroundTag() != 0) {
471  hitDriftTime += m_globalTime - m_flightTime;
472  }
473 
474  //add trigger timing jitter
475  hitDriftTime += trigTiming;
476 
477  //apply time window cut
478  double tMin = m_tMin;
479  double tMax = m_tMaxOuter;
480  if (m_wireID.getISuperLayer() == 0) tMax = m_tMaxInner;
481  if (m_tSimMode <= 2) {
484  }
485  if (hitDriftTime < tMin || hitDriftTime > tMax) continue;
486 
487  //Sum ADC count
488  const double stepLength = m_aCDCSimHit->getStepLength() * Unit::cm;
489  const double costh = m_momentum.Z() / m_momentum.Mag();
490  double hitdE = m_aCDCSimHit->getEnergyDep();
491  if (m_cdcgp->getMaterialDefinitionMode() != 2) { // for non wire-by-wire mode
492  static EDepInGas& edpg = EDepInGas::getInstance();
493  hitdE = edpg.getEDepInGas(m_eDepInGasMode, m_aCDCSimHit->getPDGCode(), m_momentum.Mag(), stepLength, hitdE);
494  }
495 
496  double convFactorForThreshold = 1;
497  //TODO: modify the following function so that it can output timing signal in Volt in future
498  unsigned short adcCount = 0;
499  makeSignalsAfterShapers(m_wireID, hitdE, stepLength, costh, adcCount, convFactorForThreshold);
500  const unsigned short adcTh = m_useDB4FEE ? m_adcThresh[m_boardID] : m_adcThreshold;
501  // B2DEBUG(29, "adcTh,adcCount,convFactorForThreshold= " << adcTh <<" "<< adcCount <<" "<< convFactorForThreshold);
502  if (adcCount < adcTh) adcCount = 0;
503  iterADCMap = adcMap.find(m_wireID);
504  if (iterADCMap == adcMap.end()) {
505  adcMap.insert(make_pair(m_wireID, adcCount));
506  // adcMap.insert(make_pair(m_wireID, hitdE));
507  } else {
508  iterADCMap->second += adcCount;
509  // iterADCMap->second += hitdE;
510  }
511 
512  //Apply energy threshold
513  // If hitdE < dEThreshold, the hit is ignored
514  double dEThreshold = 0.;
516  dEThreshold = m_tdcThresh[m_boardID] / convFactorForThreshold * Unit::keV;
517  } else {
519  dEThreshold *= Unit::eV;
520  }
521  dEThreshold *= (*m_corrToThresholdFromDB)->getParam(m_wireID.getICLayer());
522  B2DEBUG(m_debugLevel, "hitdE,dEThreshold,driftLength " << hitdE << " " << dEThreshold << " " << hitDriftLength);
523 
524  if (hitdE < dEThreshold) {
525  B2DEBUG(m_debugLevel, "Below Ethreshold: " << hitdE << " " << dEThreshold);
526  continue;
527  }
528 
529  // add one hit per trigger time window to the trigger signal map
530  unsigned short trigWindow = floor((hitDriftTime - tMin) * m_tdcBinWidthInv / 32);
531  iterSignalMapTrg = signalMapTrg.find(make_pair(m_wireID, trigWindow));
532  if (iterSignalMapTrg == signalMapTrg.end()) {
533  // signalMapTrg.insert(make_pair(make_pair(m_wireID, trigWindow),
534  // SignalInfo(iHits, hitDriftTime, hitdE)));
535  signalMapTrg.insert(make_pair(make_pair(m_wireID, trigWindow),
536  SignalInfo(iHits, hitDriftTime, adcCount)));
537  } else {
538  if (hitDriftTime < iterSignalMapTrg->second.m_driftTime) {
539  iterSignalMapTrg->second.m_driftTime = hitDriftTime;
540  iterSignalMapTrg->second.m_simHitIndex = iHits;
541  }
542  // iterSignalMapTrg->second.m_charge += hitdE;
543  iterSignalMapTrg->second.m_charge += adcCount;
544  }
545 
546  // Reject totally-dead wire; to be replaced by isDeadWire() in future
547  // N.B. The following lines for badwire must be after the above lines for trigger becuse badwires are different between trigger and tracking.
548  // Badwires for trigger are taken into account separately in the tsim module
549  if (m_cdcgp->isBadWire(m_wireID)) {
550  // std::cout<<"badwire= " << m_wireID.getICLayer() <<" "<< m_wireID.getIWire() << std::endl;
551  continue;
552  }
553  // Reject partly-dead wire as well
554  double eff = 1.;
555  if (m_cdcgp->isDeadWire(m_wireID, eff)) {
556  // std::cout << "wid,eff= " << m_wireID << " " << eff << std::endl;
557  if (eff < gRandom->Uniform()) continue;
558  }
559 
560  // For TOT simulation, calculate drift length from In to the wire, and Out to the wire. The calculation is apprximate ignoring wire sag (this would be ok because TOT simulation is not required to be so accurate).
561  const double a = bwpAlign.X();
562  const double b = bwpAlign.Y();
563  const double c = bwpAlign.Z();
564  const B2Vector3D fmbAlign = fwpAlign - bwpAlign;
565  const double lmn = 1. / fmbAlign.Mag();
566  const double l = fmbAlign.X() * lmn;
567  const double m = fmbAlign.Y() * lmn;
568  const double n = fmbAlign.Z() * lmn;
569 
570  double dx = m_aCDCSimHit->getPosIn().X() - a;
571  double dy = m_aCDCSimHit->getPosIn().Y() - b;
572  double dz = m_aCDCSimHit->getPosIn().Z() - c;
573  double sub = l * dx + m * dy + n * dz;
574  const double driftLFromIn = sqrt(dx * dx + dy * dy + dz * dz - sub * sub);
575 
576  dx = m_aCDCSimHit->getPosOut().X() - a;
577  dy = m_aCDCSimHit->getPosOut().Y() - b;
578  dz = m_aCDCSimHit->getPosOut().Z() - c;
579  sub = l * dx + m * dy + n * dz;
580  const double driftLFromOut = sqrt(dx * dx + dy * dy + dz * dz - sub * sub);
581 
582  const double maxDriftL = std::max(driftLFromIn, driftLFromOut);
583  const double minDriftL = m_driftLength;
584  B2DEBUG(m_debugLevel, "driftLFromIn= " << driftLFromIn << " driftLFromOut= " << driftLFromOut << " minDriftL= " << minDriftL <<
585  " maxDriftL= "
586  <<
587  maxDriftL << "m_driftLength= " << m_driftLength);
588 
589  iterSignalMap = signalMap.find(m_wireID);
590 
591  if (m_matchAllMCParticles) {
592  iterParticleMap = particleMap.find(m_wireID);
594 
595  int mcIndex = -1;
596  if (rels.size() != 0) {
597  if (rels.weight(0) > 0) {
598  const MCParticle* mcparticle = rels[0];
599  mcIndex = int(mcparticle->getIndex());
600  }
601  }
602 
603  if (mcIndex >= 0) {
604  if (iterParticleMap == particleMap.end()) {
605  std::set<int> vecmc = {mcIndex};
606  particleMap.insert(make_pair(m_wireID, vecmc));
607  } else {
608  iterParticleMap->second.insert(mcIndex);
609  }
610  }
611  }
612 
613  if (iterSignalMap == signalMap.end()) {
614  // new entry
615  // signalMap.insert(make_pair(m_wireID, SignalInfo(iHits, hitDriftTime, hitdE)));
616  signalMap.insert(make_pair(m_wireID, SignalInfo(iHits, hitDriftTime, adcCount, maxDriftL, minDriftL)));
617  B2DEBUG(m_debugLevel, "Creating new Signal with encoded wire number: " << m_wireID);
618  } else {
619  // ... smallest drift time has to be checked, ...
620  if (hitDriftTime < iterSignalMap->second.m_driftTime) {
621  iterSignalMap->second.m_driftTime3 = iterSignalMap->second.m_driftTime2;
622  iterSignalMap->second.m_simHitIndex3 = iterSignalMap->second.m_simHitIndex2;
623  iterSignalMap->second.m_driftTime2 = iterSignalMap->second.m_driftTime;
624  iterSignalMap->second.m_simHitIndex2 = iterSignalMap->second.m_simHitIndex;
625  iterSignalMap->second.m_driftTime = hitDriftTime;
626  iterSignalMap->second.m_simHitIndex = iHits;
627  B2DEBUG(m_debugLevel, "hitDriftTime of current Signal: " << hitDriftTime << ", hitDriftLength: " << hitDriftLength);
628  } else if (hitDriftTime < iterSignalMap->second.m_driftTime2) {
629  iterSignalMap->second.m_driftTime3 = iterSignalMap->second.m_driftTime2;
630  iterSignalMap->second.m_simHitIndex3 = iterSignalMap->second.m_simHitIndex2;
631  iterSignalMap->second.m_driftTime2 = hitDriftTime;
632  iterSignalMap->second.m_simHitIndex2 = iHits;
633  } else if (hitDriftTime < iterSignalMap->second.m_driftTime3) {
634  iterSignalMap->second.m_driftTime3 = hitDriftTime;
635  iterSignalMap->second.m_simHitIndex3 = iHits;
636  }
637  // ... total charge has to be updated.
638  // iterSignalMap->second.m_charge += hitdE;
639  iterSignalMap->second.m_charge += adcCount;
640 
641  // set max and min driftLs
642  if (iterSignalMap->second.m_maxDriftL < maxDriftL) iterSignalMap->second.m_maxDriftL = maxDriftL;
643  if (iterSignalMap->second.m_minDriftL > minDriftL) iterSignalMap->second.m_minDriftL = minDriftL;
644  B2DEBUG(m_debugLevel, "maxDriftL in struct= " << iterSignalMap->second.m_maxDriftL << "minDriftL in struct= " <<
645  iterSignalMap->second.m_minDriftL);
646  }
647 
648  } // end loop over SimHits.
649 
650  //--- Now Store the results into CDCHits and
651  // create corresponding relations between SimHits and CDCHits.
652 
653  unsigned int iCDCHits = 0;
654  RelationArray cdcSimHitsToCDCHits(m_simHits, m_cdcHits); //SimHit<->CDCHit
655  RelationArray mcParticlesToCDCHits(m_mcParticles, m_cdcHits); //MCParticle<->CDCHit
656 
657  for (iterSignalMap = signalMap.begin(); iterSignalMap != signalMap.end(); ++iterSignalMap) {
658 
659  //add time-walk (here for simplicity)
660  // unsigned short adcCount = getADCCount(iterSignalMap->second.m_charge);
661  // unsigned short adcCount = iterSignalMap->second.m_charge;
662  iterADCMap = adcMap.find(iterSignalMap->first);
663  unsigned short adcCount = iterADCMap != adcMap.end() ? iterADCMap->second : 0;
664  /*
665  unsigned short adcCount = 0;
666  if (iterADCMap != adcMap.end()) {
667  adcCount = getADCCount(iterSignalMap->first, iterADCMap->second, 1., 0.);
668  unsigned short boardID = m_cdcgp->getBoardID(iterSignalMap->first);
669  // B2DEBUG(29, "boardID= " << boardID);
670  const unsigned short adcTh = m_useDB4FEE ? m_adcThresh[boardID] : m_adcThreshold;
671  if (adcCount < adcTh) adcCount = 0;
672  }
673  */
674 
675  if (m_addTimeWalk) {
676  B2DEBUG(m_debugLevel, "timewalk= " << m_cdcgp->getTimeWalk(iterSignalMap->first, adcCount));
677  iterSignalMap->second.m_driftTime += m_cdcgp->getTimeWalk(iterSignalMap->first, adcCount);
678  }
679 
680  //remove negative drift time (TDC) upon request
682  iterSignalMap->second.m_driftTime < 0.) {
683  continue;
684  }
685 
686  //N.B. No bias (+ or -0.5 count) is introduced on average in digitization by the real TDC (info. from KEK electronics division). So round off (t0 - drifttime) below.
687  unsigned short tdcCount = static_cast<unsigned short>((getPositiveT0(iterSignalMap->first) - iterSignalMap->second.m_driftTime) *
688  m_tdcBinWidthInv + 0.5);
689 
690  //calculate tot; hard-coded currently
691  double deltaDL = iterSignalMap->second.m_maxDriftL - iterSignalMap->second.m_minDriftL;
692  if (deltaDL < 0.) {
693  B2DEBUG(m_debugLevel, "negative deltaDL= " << deltaDL);
694  deltaDL = 0.;
695  }
696  const unsigned short boardID = m_cdcgp->getBoardID(iterSignalMap->first);
697  unsigned short tot = std::min(std::round(5.92749 * deltaDL + 2.59706), static_cast<double>(m_widthOfTimeWindowInCount[boardID]));
698  if (m_adcThresh[boardID] > 0) {
699  tot = std::min(static_cast<int>(tot), static_cast<int>(adcCount / m_adcThresh[boardID]));
700  }
701 
702  CDCHit* firstHit = m_cdcHits.appendNew(tdcCount, adcCount, iterSignalMap->first, 0, tot);
703  // std::cout <<"firsthit?= " << firstHit->is2ndHit() << std::endl;
704  //set a relation: CDCSimHit -> CDCHit
705  cdcSimHitsToCDCHits.add(iterSignalMap->second.m_simHitIndex, iCDCHits);
706 
707  //set a relation: MCParticle -> CDCHit
708  RelationVector<MCParticle> rels = m_simHits[iterSignalMap->second.m_simHitIndex]->getRelationsFrom<MCParticle>();
709  if (rels.size() != 0) {
710  //assumption: only one MCParticle
711  const MCParticle* mcparticle = rels[0];
712  double weight = rels.weight(0);
713  mcparticle->addRelationTo(firstHit, weight);
714  }
715 
716  // Set relations to all particles that created a SimHit
717  if (m_matchAllMCParticles) {
718  iterParticleMap = particleMap.find(iterSignalMap->first);
719  if (iterParticleMap != particleMap.end()) {
720  std::set<int> vv = iterParticleMap->second;
721  for (std::set<int>::iterator it = vv.begin(); it != vv.end(); ++it) {
722  // set all relations
723  int idx = *it;
724  MCParticle* part = m_mcParticles[idx - 1];
725  part->addRelationTo(firstHit, 1.0, m_OptionalAllMCParticlesToHitsName);
726  }
727  }
728  }
729 
730  //set all relations to first hit if requested but dont create additional hits!
731  // relation 1
732  if (m_matchFirstMCParticles > 0) {
733  if (iterSignalMap->second.m_simHitIndex >= 0) {
734  RelationVector<MCParticle> rels1 = m_simHits[iterSignalMap->second.m_simHitIndex]->getRelationsFrom<MCParticle>();
735  if (rels1.size() != 0) {
736  //assumption: only one MCParticle
737  const MCParticle* mcparticle = rels1[0];
738  double weight = rels1.weight(0);
739  mcparticle->addRelationTo(firstHit, weight, m_OptionalFirstMCParticlesToHitsName);
740  }
741  }
742 
743  // relation 2
744  if (iterSignalMap->second.m_simHitIndex2 >= 0) {
745  RelationVector<MCParticle> rels2 = m_simHits[iterSignalMap->second.m_simHitIndex2]->getRelationsFrom<MCParticle>();
746  if (rels2.size() != 0) {
747  //assumption: only one MCParticle
748  const MCParticle* mcparticle = rels2[0];
749  double weight = rels2.weight(0);
750  mcparticle->addRelationTo(firstHit, weight, m_OptionalFirstMCParticlesToHitsName);
751  }
752  }
753 
754  // relation 3
755  if (iterSignalMap->second.m_simHitIndex3 >= 0) {
756  RelationVector<MCParticle> rels3 = m_simHits[iterSignalMap->second.m_simHitIndex3]->getRelationsFrom<MCParticle>();
757  if (rels3.size() != 0) {
758  //assumption: only one MCParticle
759  const MCParticle* mcparticle = rels3[0];
760  double weight = rels3.weight(0);
761  mcparticle->addRelationTo(firstHit, weight, m_OptionalFirstMCParticlesToHitsName);
762  }
763  }
764 
765 
766  }
767 
768  //Set 2nd-hit related things if it exists
769  if (m_output2ndHit && iterSignalMap->second.m_simHitIndex2 >= 0) {
770  unsigned short tdcCount2 = static_cast<unsigned short>((getPositiveT0(iterSignalMap->first) - iterSignalMap->second.m_driftTime2) *
771  m_tdcBinWidthInv + 0.5);
772  if (tdcCount2 != tdcCount) {
773  CDCHit* secondHit = m_cdcHits.appendNew(tdcCount2, adcCount, iterSignalMap->first, 0, tot);
774  secondHit->set2ndHitFlag();
775  secondHit->setOtherHitIndices(firstHit);
776  // std::cout <<"2ndhit?= " << secondHit->is2ndHit() << std::endl;
777  // std::cout <<"1st-otherhitindex= " << firstHit->getOtherHitIndex() << std::endl;
778  // std::cout <<"2nd-otherhitindex= " << secondHit->getOtherHitIndex() << std::endl;
779  // secondHit->setOtherHitIndex(firstHit->getArrayIndex());
780  // firstHit->setOtherHitIndex(secondHit->getArrayIndex());
781  // std::cout <<"1st-otherhitindex= " << firstHit->getOtherHitIndex() << std::endl;
782  // std::cout <<"2nd-otherhitindex= " << secondHit->getOtherHitIndex() << std::endl;
783 
784  //set a relation: CDCSimHit -> CDCHit
785  ++iCDCHits;
786  cdcSimHitsToCDCHits.add(iterSignalMap->second.m_simHitIndex2, iCDCHits);
787  // std::cout << "settdc2 " << firstHit->getTDCCount() << " " << secondHit->getTDCCount() << std::endl;
788 
789  //set a relation: MCParticle -> CDCHit
790  rels = m_simHits[iterSignalMap->second.m_simHitIndex2]->getRelationsFrom<MCParticle>();
791  if (rels.size() != 0) {
792  //assumption: only one MCParticle
793  const MCParticle* mcparticle = rels[0];
794  double weight = rels.weight(0);
795  mcparticle->addRelationTo(secondHit, weight);
796  }
797  } else { //Check the 3rd hit when tdcCount = tdcCount2
798  // std::cout << "tdcCount1=2" << std::endl;
799  if (iterSignalMap->second.m_simHitIndex3 >= 0) {
800  unsigned short tdcCount3 = static_cast<unsigned short>((getPositiveT0(iterSignalMap->first) - iterSignalMap->second.m_driftTime3) *
801  m_tdcBinWidthInv + 0.5);
802  // std::cout << "tdcCount3= " << tdcCount3 << " " << tdcCount << std::endl;
803  if (tdcCount3 != tdcCount) {
804  CDCHit* secondHit = m_cdcHits.appendNew(tdcCount3, adcCount, iterSignalMap->first, 0, tot);
805  secondHit->set2ndHitFlag();
806  secondHit->setOtherHitIndices(firstHit);
807  // secondHit->setOtherHitIndex(firstHit->getArrayIndex());
808  // firstHit->setOtherHitIndex(secondHit->getArrayIndex());
809  // std::cout <<"2ndhit?= " << secondHit->is2ndHit() << std::endl;
810 
811  //set a relation: CDCSimHit -> CDCHit
812  ++iCDCHits;
813  cdcSimHitsToCDCHits.add(iterSignalMap->second.m_simHitIndex3, iCDCHits);
814  // std::cout << "settdc3 " << firstHit->getTDCCount() << " " << secondHit->getTDCCount() << std::endl;
815 
816  //set a relation: MCParticle -> CDCHit
817  rels = m_simHits[iterSignalMap->second.m_simHitIndex3]->getRelationsFrom<MCParticle>();
818  if (rels.size() != 0) {
819  //assumption: only one MCParticle
820  const MCParticle* mcparticle = rels[0];
821  double weight = rels.weight(0);
822  mcparticle->addRelationTo(secondHit, weight);
823  }
824  }
825  }
826  } //end of checking tdcCount 1=2 ?
827  } //end of 2nd hit setting
828 
829  // std::cout <<"t0= " << m_cdcgp->getT0(iterSignalMap->first) << std::endl;
830  /* unsigned short tdcInCommonStop = static_cast<unsigned short>((m_tdcOffset - iterSignalMap->second.m_driftTime) * m_tdcBinWidthInv);
831  float driftTimeFromTDC = static_cast<float>(m_tdcOffset - (tdcInCommonStop + 0.5)) * m_tdcBinWidth;
832  std::cout <<"driftT bf digitization, TDC in common stop, digitized driftT = " << iterSignalMap->second.m_driftTime <<" "<< tdcInCommonStop <<" "<< driftTimeFromTDC << std::endl;
833  */
834  ++iCDCHits;
835  }
836 
837  //Add crosstalk
838  if (m_addXTalk) addXTalk();
839 
840  // Store the results with trigger time window in a separate array
841  // with corresponding relations.
842  for (iterSignalMapTrg = signalMapTrg.begin(); iterSignalMapTrg != signalMapTrg.end(); ++iterSignalMapTrg) {
843  /*
844  unsigned short adcCount = getADCCount(iterSignalMapTrg->first.first, iterSignalMapTrg->second.m_charge, 1., 0.);
845  unsigned short boardID = m_cdcgp->getBoardID(iterSignalMapTrg->first.first);
846  // B2DEBUG(29, "boardID= " << boardID);
847  const unsigned short adcTh = m_useDB4FEE ? m_adcThresh[boardID] : m_adcThreshold;
848  if (adcCount < adcTh) adcCount = 0;
849  */
850  // unsigned short adcCount = getADCCount(iterSignalMapTrg->second.m_charge);
851  unsigned short adcCount = iterSignalMapTrg->second.m_charge;
852  unsigned short tdcCount =
853  static_cast<unsigned short>((getPositiveT0(iterSignalMapTrg->first.first) -
854  iterSignalMapTrg->second.m_driftTime) * m_tdcBinWidthInv + 0.5);
855  const CDCHit* cdcHit = m_cdcHits4Trg.appendNew(tdcCount, adcCount, iterSignalMapTrg->first.first);
856 
857  // relations
858  m_simHits[iterSignalMapTrg->second.m_simHitIndex]->addRelationTo(cdcHit);
859  RelationVector<MCParticle> rels = m_simHits[iterSignalMapTrg->second.m_simHitIndex]->getRelationsFrom<MCParticle>();
860  if (rels.size() != 0) {
861  //assumption: only one MCParticle
862  const MCParticle* mcparticle = rels[0];
863  double weight = rels.weight(0);
864  mcparticle->addRelationTo(cdcHit, weight);
865  }
866  }
867 
868  /*
869  std::cout << " " << std::endl;
870  RelationIndex<MCParticle, CDCHit> mcp_to_hit(mcParticles, cdcHits);
871  if (!mcp_to_hit) B2FATAL("No MCParticle -> CDCHit relation founf!");
872  typedef RelationIndex<MCParticle, CDCHit>::Element RelationElement;
873  int ncdcHits = cdcHits.getEntries();
874  for (int j = 0; j < ncdcHits; ++j) {
875  for (const RelationElement& rel : mcp_to_hit.getElementsTo(cdcHits[j])) {
876  std::cout << j << " " << cdcHits[j]->is2ndHit() <<" "<< rel.from->getIndex() << " " << rel.weight << std::endl;
877  }
878  }
879  */
880 }
DataType Z() const
access variable Z (= .at(2) without boundary check)
Definition: B2Vector3.h:435
DataType X() const
access variable X (= .at(0) without boundary check)
Definition: B2Vector3.h:431
DataType Y() const
access variable Y (= .at(1) without boundary check)
Definition: B2Vector3.h:433
DataType Mag() const
The magnitude (rho in spherical coordinate system).
Definition: B2Vector3.h:159
B2Vector3< DataType > Unit() const
Unit vector parallel to this.
Definition: B2Vector3.h:269
void SetY(DataType y)
set Y/2nd-coordinate
Definition: B2Vector3.h:459
double m_tdcThreshold4Inner
TDC threshold for inner layers in unit of eV.
unsigned short m_boardID
FEE board ID.
int m_eDepInGasMode
Mode for extracting dE(gas) from dE(gas+wire)
double m_tMaxInner
Upper edge of time window in ns for the inner layers.
double getdDdt(double driftLength)
The method to get dD/dt.
bool m_outputNegativeDriftTime
A switch to output negative drift time to CDCHit.
unsigned short m_widthOfTimeWindowInCount[c_nBoards]
Width of time window.
void makeSignalsAfterShapers(const WireID &wid, double edep, double dx, double costh, unsigned short &adcCount, double &convFactorForThreshold)
Function to make signals after shapers.
int m_trgTimingOffsetInCount
Trigger timing offset in unit of count.
bool m_addInWirePropagationDelay4Bg
A switch used to control adding propagation delay into the total drift time or not for beam bg.
double m_tdcBinWidthInv
m_tdcBinWidth^-1 (in ns^-1)
float m_uprEdgeOfTimeWindow[c_nBoards]
Upper edge of time-window.
double m_tMin
Lower edge of time window in ns.
bool m_output2ndHit
A switch to output 2nd hit.
int m_adcThreshold
Threshold for ADC in unit of count.
bool m_addTimeOfFlight
A switch used to control adding time of flight into the total drift time or not.
double m_trigTimeJitter
Magnitude of trigger timing jitter (ns).
double smearDriftLength(double driftLength, double dDdt)
Method used to smear the drift length.
std::string m_OptionalAllMCParticlesToHitsName
Relation name for optional matching of all MCParticles.
bool m_addInWirePropagationDelay
A switch used to control adding propagation delay into the total drift time or not.
bool m_align
A switch to control alignment.
unsigned short m_trgDelayInCount[c_nBoards]
Trigger delay in frontend electronics in count.
double m_globalTime
global time of this hit
bool m_doSmearing
A switch to control drift length smearing.
B2Vector3D m_posWire
wire position of this hit
bool m_addTimeOfFlight4Bg
A switch used to control adding time of flight into the total drift time or not for beam bg.
bool m_addXTalk
Flag to switch on/off crosstalk.
bool m_addTimeWalk
A switch used to control adding time-walk delay into the total drift time or not.
bool m_matchAllMCParticles
A switch to match all particles to a hit, regardless wether they produced a hit or not.
bool m_useDB4EDepToADC
Fetch edep-to-ADC conversion params.
int m_offsetForTriggerBin
Input to getCDCTriggerBin(offset)
double m_driftLength
drift length of this hit
int m_tSimMode
Timing simulation mode.
bool m_useDB4FEE
Fetch FEE params from DB.
bool m_matchFirstMCParticles
A switch to match first three MCParticles, not just the one with smallest drift time.
StoreArray< CDCSimHit > m_simHits
CDCSimHit array.
std::string m_OptionalFirstMCParticlesToHitsName
Relation name for optional matching of up to first three MCParticles.
StoreArray< CDCHit > m_cdcHits4Trg
CDCHit4trg array.
CDCSimHit * m_aCDCSimHit
Pointer to CDCSimHit.
WireID m_wireID
WireID of this hit.
double getPositiveT0(const WireID &)
Modify t0 for negative-t0 case.
double m_tdcThreshold4Outer
TDC threshold for outer layers in unit of eV.
int m_shiftOfTimeWindowIn32Count
Shift of time window for synchronization in 32count.
unsigned short m_posFlag
left or right flag of this hit
StoreArray< CDCHit > m_cdcHits
CDCHit array.
float m_lowEdgeOfTimeWindow[c_nBoards]
Lower edge of time-window.
double getDriftTime(double driftLength, bool addTof, bool addDelay)
The method to get drift time based on drift length.
float m_tdcThresh[c_nBoards]
Threshold for timing-signal.
B2Vector3D m_momentum
3-momentum of this hit
StoreArray< MCParticle > m_mcParticles
Set edep-to-ADC conversion params.
double m_tMaxOuter
Upper edge of time window in ns for the outer layers.
B2Vector3D m_posTrack
track position of this hit
CDC::CDCGeometryPar * m_cdcgp
Cached Pointer to CDCGeometryPar.
double m_tdcBinWidth
Width of a TDC bin (in ns)
bool m_correctForWireSag
A switch to control wire sag.
StoreObjPtr< SimClockState > m_simClockState
generated hardware clock state
double m_flightTime
flight time of this hit
float m_adcThresh[c_nBoards]
Threshold for FADC.
Class containing the result of the unpacker in raw data and the result of the digitizer in simulation...
Definition: CDCHit.h:40
void set2ndHitFlag()
Setter for 2nd hit flag.
Definition: CDCHit.h:113
void setOtherHitIndices(CDCHit *otherHit)
Setter for the other hit indices.
Definition: CDCHit.h:147
int getPDGCode() const
The method to get PDG code.
Definition: CDCSimHit.h:178
double getStepLength() const
The method to get step length.
Definition: CDCSimHit.h:190
double getFlightTime() const
The method to get flight time.
Definition: CDCSimHit.h:184
B2Vector3D getPosWire() const
The method to get position on wire.
Definition: CDCSimHit.h:199
float getGlobalTime() const override
The method to get global time.
Definition: CDCSimHit.h:248
WireID getWireID() const
Getter for WireID object.
Definition: CDCSimHit.h:172
double getEnergyDep() const
The method to get deposited energy.
Definition: CDCSimHit.h:187
B2Vector3D getPosTrack() const
The method to get position on the track.
Definition: CDCSimHit.h:217
double getDriftLength() const
The method to get drift length.
Definition: CDCSimHit.h:181
B2Vector3D getMomentum() const
The method to get momentum.
Definition: CDCSimHit.h:193
B2Vector3D getPosIn() const
The method to get position of pre-step.
Definition: CDCSimHit.h:205
B2Vector3D getPosOut() const
The method to get position of post-step.
Definition: CDCSimHit.h:211
int getLeftRightPassageRaw() const
The method to get new left/right info. for digitization.
Definition: CDCSimHit.h:229
double getTimeWalk(const WireID &wID, unsigned short adcCount) const
Returns time-walk.
unsigned short getBoardID(const WireID &wID) const
Returns frontend board id. corresponding to the wire id.
EWirePosition
Wire position set.
void getWireSagEffect(EWirePosition set, unsigned layerID, unsigned cellID, double zw, double &ywb_sag, double &ywf_sag) const
Compute effects of the sense wire sag.
const B2Vector3D wireForwardPosition(uint layerId, int cellId, EWirePosition set=c_Base) const
Returns the forward position of the input sense wire.
bool isDeadWire(const WireID &wid, double &eff)
Inquire if the wire is dead.
const B2Vector3D wireBackwardPosition(uint layerId, int cellId, EWirePosition set=c_Base) const
Returns the backward position of the input sense wire.
bool isBadWire(const WireID &wid)
Inquire if the wire is totally-dead.
int getMaterialDefinitionMode() const
Return mode for material definition.
ushort getOffsetOfFirstSuperLayer() const
Get the offset of the first super layer.
unsigned short getNewLeftRightRaw(const B2Vector3D &posOnWire, const B2Vector3D &posOnTrack, const B2Vector3D &momentum) const
Returns new left/right_raw.
The Class for Energy deposit in the gas.
Definition: EDepInGas.h:20
static EDepInGas & getInstance()
Static method to get a reference to the EDepInGas instance.
Definition: EDepInGas.cc:23
double getEDepInGas(int mode, int pdg, double p, double dx, double e3) const
Return the energy deosite in the gas.
Definition: EDepInGas.cc:137
A Class to store the Monte Carlo particle information.
Definition: MCParticle.h:32
int getIndex() const
Get 1-based index of the particle in the corresponding MCParticle list.
Definition: MCParticle.h:230
Low-level class to create/modify relations between StoreArrays.
Definition: RelationArray.h:62
Class for type safe access to objects that are referred to in relations.
size_t size() const
Get number of relations.
float weight(int index) const
Get weight with index.
void addRelationTo(const RelationsInterface< BASE > *object, float weight=1.0, const std::string &namedRelation="") const
Add a relation from this object to another object (with caching).
RelationVector< FROM > getRelationsFrom(const std::string &name="", const std::string &namedRelation="") const
Get the relations that point from another store array to this object.
virtual unsigned short getBackgroundTag() const
Get background tag.
Definition: SimHitBase.h:46
static const double keV
[kiloelectronvolt]
Definition: Unit.h:113
static const double eV
[electronvolt]
Definition: Unit.h:112
static const double cm
Standard units with the value = 1.
Definition: Unit.h:47
unsigned short getICLayer() const
Getter for continuous layer numbering.
Definition: WireID.cc:24
unsigned short getIWire() const
Getter for wire within the layer.
Definition: WireID.h:145
unsigned short getISuperLayer() const
Getter for Super-Layer.
Definition: WireID.h:130
double sqrt(double a)
sqrt for double
Definition: beamHelpers.h:28
double ClosestApproach(const B2Vector3D &bwp, const B2Vector3D &fwp, const B2Vector3D &posIn, const B2Vector3D &posOut, B2Vector3D &hitPosition, B2Vector3D &wirePosition)
Returns a closest distance between a track and a wire.

◆ 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.

◆ getdDdt()

double getdDdt ( double  driftLength)
private

The method to get dD/dt.

In this method, X-T function will be used to calculate dD/dt (drift velocity).

Parameters
driftLengthThe value of drift length.
Returns
dDdt.

Definition at line 927 of file CDCDigitizerModule.cc.

◆ getDriftTime()

double getDriftTime ( double  driftLength,
bool  addTof,
bool  addDelay 
)
private

The method to get drift time based on drift length.

In this method, X-T function will be used to calculate drift time.

Parameters
driftLengthThe value of drift length.
addTofSwitch for adding time of flight.
addDelaySwitch for adding signal propagation delay in the wire.
Returns
Drift time.

Definition at line 973 of file CDCDigitizerModule.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.

◆ getSemiTotalGain() [1/2]

double getSemiTotalGain ( const WireID wireID) const
inlineprivate

Return semi-total gain of the specified wire.

Parameters
wireIDWire id.
Returns
gain

Definition at line 163 of file CDCDigitizerModule.h.

164  {
165  return m_semiTotalGain[wireID.getICLayer()][wireID.getIWire()];
166  }
float m_semiTotalGain[c_maxNSenseLayers][c_maxNDriftCells]
total gain per wire

◆ getSemiTotalGain() [2/2]

double getSemiTotalGain ( int  clayer,
int  cell 
) const
inlineprivate

Return semi-total gain of the specified wire.

Parameters
clayerlayer no. (0-56)
cellcell no.
Returns
gain

Definition at line 153 of file CDCDigitizerModule.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.

◆ makeSignalsAfterShapers()

void makeSignalsAfterShapers ( const WireID wid,
double  edep,
double  dx,
double  costh,
unsigned short &  adcCount,
double &  convFactorForThreshold 
)
private

Function to make signals after shapers.

Parameters
widwire id.
edepenergy deposit (GeV).
dxstep length (cm).
costhcos(theta) of particle.
adcCountADC-count.
convFactorForThresholdconversin factor needed for threshold setting.
Returns
ADC-count and conversion factor for threshold.

Definition at line 1039 of file CDCDigitizerModule.cc.

◆ Polya()

double Polya ( double  xmax = 10)
private

Generate randum number according to Polya distribution.

Parameters
xmaxmax of no. generated
Returns
randum no.

Definition at line 1097 of file CDCDigitizerModule.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.

◆ smearDriftLength()

double smearDriftLength ( double  driftLength,
double  dDdt 
)
private

Method used to smear the drift length.

Parameters
driftLengthThe value of drift length.
dDdtdD/dt (drift velocity).
Returns
Drift length after smearing.

Definition at line 882 of file CDCDigitizerModule.cc.

Member Data Documentation

◆ m_effWForGasGainSmearing

double m_effWForGasGainSmearing = 0.0266
private

Effective energy (keV) for one electron prod.

for gas gain smearing

Definition at line 235 of file CDCDigitizerModule.h.

◆ m_fEElectronicsFromDB

DBArray<CDCFEElectronics>* m_fEElectronicsFromDB = nullptr
private

Pointer to FE electronics params.

from DB.

Definition at line 260 of file CDCDigitizerModule.h.

◆ m_inputCDCSimHitsName

std::string m_inputCDCSimHitsName
private

Input array name.


Definition at line 179 of file CDCDigitizerModule.h.

◆ m_mcParticles

StoreArray<MCParticle> m_mcParticles
private

Set edep-to-ADC conversion params.

(from DB) MCParticle array

Definition at line 174 of file CDCDigitizerModule.h.

◆ m_propSpeedInv

double m_propSpeedInv
private

Inv.

of nominal signal propagation speed in a wire (in ns/cm)

Definition at line 224 of file CDCDigitizerModule.h.

◆ m_useDB4EDepToADC

bool m_useDB4EDepToADC
private

Fetch edep-to-ADC conversion params.

from DB

Definition at line 267 of file CDCDigitizerModule.h.


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