11#include <framework/core/Module.h>
12#include <framework/logging/Logger.h>
13#include <framework/datastore/StoreArray.h>
14#include <mdst/dataobjects/Track.h>
15#include <mdst/dataobjects/MCParticle.h>
16#include <mdst/dataobjects/EventLevelTriggerTimeInfo.h>
17#include <cdc/dataobjects/CDCDedxHit.h>
18#include <cdc/dataobjects/CDCDedxTrack.h>
19#include <cdc/dataobjects/CDCDedxLikelihood.h>
21#include <framework/database/DBObjPtr.h>
22#include <cdc/dbobjects/CDCDedxScaleFactor.h>
23#include <cdc/dbobjects/CDCDedxWireGain.h>
24#include <cdc/dbobjects/CDCDedxRunGain.h>
25#include <cdc/dbobjects/CDCDedxCosineCor.h>
26#include <cdc/dbobjects/CDCDedx2DCell.h>
27#include <cdc/dbobjects/CDCDedx1DCell.h>
28#include <cdc/dbobjects/CDCDedxADCNonLinearity.h>
29#include <cdc/dbobjects/CDCDedxCosineEdge.h>
30#include <cdc/dbobjects/CDCDedxMeanPars.h>
31#include <cdc/dbobjects/CDCDedxSigmaPars.h>
32#include <cdc/dbobjects/CDCDedxHadronCor.h>
33#include <cdc/dbobjects/CDCDedxInjectionTime.h>
58 virtual void event()
override;
82 void add(
const CDCDedxHit& hit_in,
int cWire_in,
int cLayer_in,
double dx_in,
double dE_in)
98 B2ERROR(
"DEDX helper: measurements on different wires cannot be merged");
124 B2ERROR(
"DEDX helper: measurements in different layers cannot be merged");
Class to store CDC hit information needed for dedx.
const WireID & getWireID() const
Returns wire identifier.
unsigned short getADCCount() const
Returns ADC count.
bool m_useBackHalfCurlers
whether to use the back half of curlers
StoreObjPtr< EventLevelTriggerTimeInfo > m_TTDInfo
injection time info
DBObjPtr< CDCDedxRunGain > m_DBRunGain
Run gain DB object.
DBObjPtr< CDCDedxMeanPars > m_DBMeanPars
dE/dx mean parameters
DBObjPtr< CDCDedxHadronCor > m_DBHadronCor
hadron saturation parameters
double m_removeHighest
portion of events with high dE/dx to discard
DBObjPtr< CDCDedxCosineEdge > m_DBCosEdgeCor
non-linearly ACD correction DB object
int m_warnCount
warning message count
DBObjPtr< CDCDedxADCNonLinearity > m_DBNonlADC
non-linearly ACD correction DB object
DBObjPtr< CDCDedx1DCell > m_DB1DCell
1D correction DB object
StoreArray< CDCDedxLikelihood > m_likelihoods
collection of PID likelihoods
DBObjPtr< CDCDedx2DCell > m_DB2DCell
2D correction DB object
DBObjPtr< CDCDedxCosineCor > m_DBCosineCor
Electron saturation correction DB object.
StoreArray< Track > m_tracks
collection of tracks
int m_nLayerWires[9]
lookup table for number of wires per superlayer (indexed by superlayer)
DBObjPtr< CDCDedxSigmaPars > m_DBSigmaPars
dE/dx resolution parameters
DBObjPtr< CDCDedxWireGain > m_DBWireGains
Wire gain DB object.
bool m_trackLevel
whether to use track-level or hit-level MC
StoreArray< CDCDedxHit > m_hits
collection of hits
StoreArray< MCParticle > m_mcParticles
collection of MC particles
double m_removeLowest
portion of events with low dE/dx to discard
StoreArray< CDCDedxTrack > m_dedxTracks
collection of debug output
DBObjPtr< CDCDedxInjectionTime > m_DBInjectTime
time gain/reso DB object
DBObjPtr< CDCDedxScaleFactor > m_DBScaleFactor
Scale factor to make electrons ~1.
Class for accessing objects in the database.
Accessor to arrays stored in the data store.
Type-safe access to single objects in the data store.
virtual void initialize() override
Initialize the module.
CDCDedxPIDCreatorModule()
Default constructor.
virtual void event() override
This method is called for each event.
~CDCDedxPIDCreatorModule() override
Destructor.
Abstract base class for different kinds of events.
Helper structure for merging dEdx measurements.
int nhits
number of merged hits
const CDCDedxHit * hit
hit
int cWire
continuous wire number
void add(const DEDX &dedx)
Add measurement in the same layer.
int cLayer
continuous layer number
void add(const CDCDedxHit &hit_in, int cWire_in, int cLayer_in, double dx_in, double dE_in)
Add measurement on the same wire.
double dxMax
longest track length