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>
60 virtual void event()
override;
84 void add(
const CDCDedxHit& hit_in,
int cWire_in,
int cLayer_in,
double dx_in,
double dE_in)
100 B2ERROR(
"DEDX helper: measurements on different wires cannot be merged");
126 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.
Module that creates PID likelihoods from CDC hit information stored in CDCDedxHits using parameterize...
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
std::string m_dedxTracksName
name of collection of debug output
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
bool m_enableDebugOutput
option to write out debugging information to CDCDedxTracks
std::string m_likelihoodsName
name of collection of PID likelihoods
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.
virtual ~CDCDedxPIDCreatorModule()
Destructor.
CDCDedxPIDCreatorModule()
Default constructor.
virtual void event() override
This method is called for each event.
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