Belle II Software development
DQMEventProcessorBase Class Reference

The purpose of this class is to process one event() in DQMHistoModuleBase, which is a base for TrackDQMModule and AlignDQMModule. More...

#include <DQMEventProcessorBase.h>

Inheritance diagram for DQMEventProcessorBase:
AlignDQMEventProcessor TrackDQMEventProcessor

Public Member Functions

 DQMEventProcessorBase (DQMHistoModuleBase *histoModule, const std::string &recoTracksStoreArrayName, const std::string &tracksStoreArrayName, bool runningOnHLT=false)
 Constructor.
 
virtual void Run ()
 Call this to start processing the event data and filling histograms.
 
void produce1Dres ()
 Call this if you want to produce 1D Track Residual plots for each VXD sensor.
 
void produce2Dres ()
 Call this if you want to produce 2D Track Residual plots for each VXD sensor.
 
void produceTRClusters ()
 Call this if you want to produce 2D Track-Related Cluster plots.
 

Protected Member Functions

virtual void ProcessTrack (const Track &track)
 Find RecoTrack for given track.
 
virtual TString ConstructMessage (const TrackFitResult *trackFitResult, int nPXDClusters, int nSVDClusters, int nCDCHits)
 Make debug message with information about RecoTrack.
 
virtual void FillTrackFitResult (const TrackFitResult *trackFitResult)
 Fill histograms with values derived from TrackFitResult.
 
virtual void ProcessSuccessfulFit ()
 Continue track processing by calling ProcessRecoHit function on each RecoHitInformation in given RecoHit.
 
virtual void ProcessRecoHit (RecoHitInformation *recoHitInfo)
 Compute unbiased residual and the calls ProcesPXDRecoHit or ProcessSVDRecoHit.
 
virtual void ProcessPXDRecoHit (RecoHitInformation *recoHitInfo)
 Compute position in a PXD way.
 
virtual void ProcessSVDRecoHit (RecoHitInformation *recoHitInfo)
 Compute position in a SVD way which means we need two consecutive hits to be from the same sensor to get both u and v coordinates.
 
virtual void ComputeCommonVariables ()
 Compute variables which are common for PXD and SVD hit.
 
virtual void FillCommonHistograms ()
 Fill histograms which are common for PXD and SVD hit.
 
virtual void SetCommonPrevVariables ()
 Set the value of -Prev values which are common for PXD and SVD hit.
 

Static Protected Member Functions

static bool IsNotYang (int ladderNumber, int layerNumber)
 Returns true if sensor with given ladderNumber and layerNumber isn't in the Yang half-shell, therefore it should be in the Yin half-shell if it's from PXD detector.
 
static bool IsNotMat (int ladderNumber, int layerNumber)
 Returns true if sensor with given ladderNumber and layerNumber isn't in the Mat half-shell, therefore it should be in the Pat half-shell if it's from SVD detector.
 

Protected Attributes

DQMHistoModuleBasem_histoModule = nullptr
 DQM histogram module on which the Fill- functions are called to fill histograms.
 
std::string m_tracksStoreArrayName = ""
 StoreArray name where Tracks are written.
 
std::string m_recoTracksStoreArrayName = ""
 StoreArray name where RecoTracks are written.
 
bool m_runningOnHLT
 true if the DQM is run on HLT
 
bool m_produce1Dres = false
 if true, produce 1D Track residuals plots for each VXD sensor
 
bool m_produce2Dres = false
 if true, produce 2D Track residuals plots for each VXD sensor
 
bool m_produceTRClusters = false
 if true, produce 2D Track-Related Cluster plots
 
int m_iTrack = 0
 index of track (with valid TrackFitResult and related RecoTrack)
 
int m_iTrackVXD = 0
 index of track where are VXD hits and aren't CDC hits (with valid TrackFitResult and related RecoTrack)
 
int m_iTrackCDC = 0
 index of track where are CDC hits and aren't VXD hits (with valid TrackFitResult and related RecoTrack)
 
int m_iTrackVXDCDC = 0
 index of track where are both VXD hits and CDC hits (with valid TrackFitResult and related RecoTrack)
 
RecoTrackm_recoTrack = nullptr
 RecoTrack related to currently processed Track.
 
bool m_isNotFirstHit = false
 Determines if the hit is not the first hit in the current track.
 
TVectorT< double > * m_rawSensorResidual = nullptr
 unbiased residual for the hit obtained from the sensor so its length is different for PXD and SVD sensors
 
VxdID m_sensorID = VxdID(0)
 ID of the current sensor.
 
VxdID m_sensorIDPrev = VxdID(0)
 ID of the prewious sensor.
 
ROOT::Math::XYZVector m_position = ROOT::Math::XYZVector()
 local coordinates of the hit position (u, v, w)
 
ROOT::Math::XYZVector m_residual_um = ROOT::Math::XYZVector()
 unbiased residual for the hit in micrometers in local coordinates (u, v, w)
 
ROOT::Math::XYZVector m_globalResidual_um = ROOT::Math::XYZVector()
 unbiased residual for the hit in micrometers in global coordinates (x, y, z)
 
float m_phi_deg = .0
 global phi in degrees of the hit
 
float m_phiPrev_deg = .0
 global phi in degrees of the previous hit
 
float m_theta_deg = .0
 global theta in degrees of the hit
 
float m_thetaPrev_deg = .0
 global theta in degrees of the previous hit
 
int m_layerNumber = 0
 number of the layer of the hit
 
int m_layerNumberPrev = 0
 number of the layer of the previous hit
 
int m_layerIndex = 0
 index of the layer of the hit
 
int m_correlationIndex = 0
 index of the layer of the previous hit
 
int m_sensorIndex = 0
 index of the sensor of the hit
 

Detailed Description

The purpose of this class is to process one event() in DQMHistoModuleBase, which is a base for TrackDQMModule and AlignDQMModule.

This class is a base for TrackDQMEventProcessor and AlignDQMEventProcessor.

After instance of this class is created via constructor its only public function Run() should be called to process the event.

This class doesn't actually fill the histograms but it calls Fill- functions on given DQMHistoModuleBase instead.

All functions of this class are supposed to be virtual so they can be overridden in derived classes.

Definition at line 29 of file DQMEventProcessorBase.h.

Constructor & Destructor Documentation

◆ DQMEventProcessorBase()

DQMEventProcessorBase ( DQMHistoModuleBase histoModule,
const std::string &  recoTracksStoreArrayName,
const std::string &  tracksStoreArrayName,
bool  runningOnHLT = false 
)
inline

Constructor.

Parameters
histoModule- DQMHistoModuleBase or derived module on which the Fill- functions are called.
recoTracksStoreArrayName- StoreArray name where the merged RecoTracks are written.
tracksStoreArrayName- StoreArray name where the merged Tracks are written.
runningOnHLT- true if the module runs on HLT

Definition at line 37 of file DQMEventProcessorBase.h.

38 :
39 m_tracksStoreArrayName(tracksStoreArrayName),
40 m_recoTracksStoreArrayName(recoTracksStoreArrayName),
41 m_runningOnHLT(runningOnHLT)
42 {
43 m_histoModule = histoModule;
44 }
std::string m_tracksStoreArrayName
StoreArray name where Tracks are written.
bool m_runningOnHLT
true if the DQM is run on HLT
std::string m_recoTracksStoreArrayName
StoreArray name where RecoTracks are written.
DQMHistoModuleBase * m_histoModule
DQM histogram module on which the Fill- functions are called to fill histograms.

Member Function Documentation

◆ ComputeCommonVariables()

void ComputeCommonVariables ( )
protectedvirtual

Compute variables which are common for PXD and SVD hit.

Definition at line 212 of file DQMEventProcessorBase.cc.

213{
215 m_globalResidual_um = sensorInfo->vectorToGlobal(m_residual_um, true);
216 ROOT::Math::XYZVector globalPosition = sensorInfo->pointToGlobal(m_position, true);
217
218 m_phi_deg = globalPosition.Phi() / Unit::deg;
219 m_theta_deg = globalPosition.Theta() / Unit::deg;
220
222
223 auto gTools = VXD::GeoCache::getInstance().getGeoTools();
224 m_layerIndex = gTools->getLayerIndex(m_layerNumber);
225 m_correlationIndex = m_layerIndex - gTools->getFirstLayer();
226 m_sensorIndex = gTools->getSensorIndex(m_sensorID);
227}
ROOT::Math::XYZVector m_position
local coordinates of the hit position (u, v, w)
int m_layerIndex
index of the layer of the hit
int m_layerNumber
number of the layer of the hit
ROOT::Math::XYZVector m_residual_um
unbiased residual for the hit in micrometers in local coordinates (u, v, w)
int m_correlationIndex
index of the layer of the previous hit
int m_sensorIndex
index of the sensor of the hit
float m_theta_deg
global theta in degrees of the hit
float m_phi_deg
global phi in degrees of the hit
VxdID m_sensorID
ID of the current sensor.
ROOT::Math::XYZVector m_globalResidual_um
unbiased residual for the hit in micrometers in global coordinates (x, y, z)
static const double deg
degree to radians
Definition: Unit.h:109
const SensorInfoBase & getSensorInfo(Belle2::VxdID id) const
Return a referecne to the SensorInfo of a given SensorID.
Definition: GeoCache.cc:67
static GeoCache & getInstance()
Return a reference to the singleton instance.
Definition: GeoCache.cc:214
const GeoTools * getGeoTools()
Return a raw pointer to a GeoTools object.
Definition: GeoCache.h:142
baseType getLayerNumber() const
Get the layer id.
Definition: VxdID.h:96

◆ ConstructMessage()

TString ConstructMessage ( const TrackFitResult trackFitResult,
int  nPXDClusters,
int  nSVDClusters,
int  nCDCHits 
)
protectedvirtual

Make debug message with information about RecoTrack.

Used in ProcessTrack function.

Definition at line 88 of file DQMEventProcessorBase.cc.

90{
91 return Form("%s: track %3i, Mom: %f, %f, %f, Pt: %f, Mag: %f, Hits: PXD %i SVD %i CDC %i Suma %i\n",
92 m_histoModule->getName().c_str(),
94 (float)trackFitResult->getMomentum().x(),
95 (float)trackFitResult->getMomentum().y(),
96 (float)trackFitResult->getMomentum().z(),
97 (float)trackFitResult->getMomentum().Rho(),
98 (float)trackFitResult->getMomentum().R(),
99 nPXDClusters, nSVDClusters, nCDCHits, nPXDClusters + nSVDClusters + nCDCHits
100 );
101}
int m_iTrack
index of track (with valid TrackFitResult and related RecoTrack)
const std::string & getName() const
Returns the name of the module.
Definition: Module.h:187
ROOT::Math::XYZVector getMomentum() const
Getter for vector of momentum at closest approach of track in r/phi projection.

◆ FillCommonHistograms()

void FillCommonHistograms ( )
protectedvirtual

Fill histograms which are common for PXD and SVD hit.

Reimplemented in AlignDQMEventProcessor.

Definition at line 229 of file DQMEventProcessorBase.cc.

230{
234 } else {
235 m_isNotFirstHit = true;
236 }
237
240}
bool m_produceTRClusters
if true, produce 2D Track-Related Cluster plots
float m_phiPrev_deg
global phi in degrees of the previous hit
int m_layerNumberPrev
number of the layer of the previous hit
bool m_isNotFirstHit
Determines if the hit is not the first hit in the current track.
float m_thetaPrev_deg
global theta in degrees of the previous hit
virtual void FillTRClusterHitmap(float phi_deg, float theta_deg, int layerIndex)
Fill cluster hitmap in IP angle range.
virtual void FillTRClusterCorrelations(float phi_deg, float phiPrev_deg, float theta_deg, float thetaPrev_deg, int correlationIndex)
Fill histograms with correlations between neighbor layers.

◆ FillTrackFitResult()

void FillTrackFitResult ( const TrackFitResult trackFitResult)
protectedvirtual

Fill histograms with values derived from TrackFitResult.

Definition at line 103 of file DQMEventProcessorBase.cc.

104{
105 if (m_runningOnHLT) {
106 m_histoModule->FillMomentumAngles(trackFitResult);
107 m_histoModule->FillMomentumCoordinates(trackFitResult);
108 }
110}
virtual void FillHelixParametersAndCorrelations(const TrackFitResult *tfr)
Fill histograms with helix parameters and their correlations.
virtual void FillMomentumCoordinates(const TrackFitResult *tfr)
Fill histograms with track momentum Pt.
virtual void FillMomentumAngles(const TrackFitResult *tfr)
Fill histograms with track momentum Pt.

◆ IsNotMat()

bool IsNotMat ( int  ladderNumber,
int  layerNumber 
)
staticprotected

Returns true if sensor with given ladderNumber and layerNumber isn't in the Mat half-shell, therefore it should be in the Pat half-shell if it's from SVD detector.

Returns false if the sensor is int the Mat.

Possible combinations of parameters for Mat:

| layerNumber | ladderNumber | | 3 | 3, 4, 5 | | 4 | 4, 5, 6, 7, 8 | | 5 | 5, 6, 7, 8, 9, 10 | | 6 | 6, 7, 8, 9, 10, 11, 12, 13 |

Definition at line 261 of file DQMEventProcessorBase.cc.

262{
263 switch (layerNumber) {
264 case 3:
265 return ladderNumber < 3 || ladderNumber > 5;
266 case 4:
267 return ladderNumber < 4 || ladderNumber > 8;
268 case 5:
269 return ladderNumber < 5 || ladderNumber > 10;
270 case 6:
271 return ladderNumber < 6 || ladderNumber > 13;
272 default:
273 return true;
274 }
275}

◆ IsNotYang()

bool IsNotYang ( int  ladderNumber,
int  layerNumber 
)
staticprotected

Returns true if sensor with given ladderNumber and layerNumber isn't in the Yang half-shell, therefore it should be in the Yin half-shell if it's from PXD detector.

Returns false if the sensor is in the Yang.

Possible combinations of parameters for Yang:

| layerNumber | ladderNumber | | 1 | 5, 6, 7, 8 | | 2 | 7, 8, 9, 10, 11, 12 |

Definition at line 249 of file DQMEventProcessorBase.cc.

250{
251 switch (layerNumber) {
252 case 1:
253 return ladderNumber < 5 || ladderNumber > 8;
254 case 2:
255 return ladderNumber < 7 || ladderNumber > 12;
256 default:
257 return true;
258 }
259}

◆ ProcessPXDRecoHit()

void ProcessPXDRecoHit ( RecoHitInformation recoHitInfo)
protectedvirtual

Compute position in a PXD way.

Then compute some other variables and fill some histograms.

Definition at line 157 of file DQMEventProcessorBase.cc.

158{
159 m_position.SetX(recoHitInfo->getRelatedTo<PXDCluster>()->getU());
160 m_position.SetY(recoHitInfo->getRelatedTo<PXDCluster>()->getV());
161 m_residual_um.SetX(m_rawSensorResidual->GetMatrixArray()[0] / Unit::um);
162 m_residual_um.SetY(m_rawSensorResidual->GetMatrixArray()[1] / Unit::um);
163
164 m_sensorID = recoHitInfo->getRelatedTo<PXDCluster>()->getSensorID();
166
168
171
172 if (m_produce1Dres)
174 if (m_produce2Dres)
176
178}
bool m_produce1Dres
if true, produce 1D Track residuals plots for each VXD sensor
virtual void FillCommonHistograms()
Fill histograms which are common for PXD and SVD hit.
bool m_produce2Dres
if true, produce 2D Track residuals plots for each VXD sensor
virtual void ComputeCommonVariables()
Compute variables which are common for PXD and SVD hit.
TVectorT< double > * m_rawSensorResidual
unbiased residual for the hit obtained from the sensor so its length is different for PXD and SVD sen...
virtual void SetCommonPrevVariables()
Set the value of -Prev values which are common for PXD and SVD hit.
static bool IsNotYang(int ladderNumber, int layerNumber)
Returns true if sensor with given ladderNumber and layerNumber isn't in the Yang half-shell,...
virtual void FillUB2DResidualsSensor(const B2Vector3D &residual_um, int sensorIndex)
Fill 2D histograms with unbiased residuals for individual sensors.
virtual void FillUBResidualsPXD(const B2Vector3D &residual_um)
Fill histograms with unbiased residuals in PXD sensors.
virtual void FillHalfShellsPXD(const B2Vector3D &globalResidual_um, bool isNotYang)
Fill histograms with unbiased residuals for half-shells for PXD sensors.
virtual void FillUB1DResidualsSensor(const B2Vector3D &residual_um, int sensorIndex)
Fill 1D histograms with unbiased residuals for individual sensors.
The PXD Cluster class This class stores all information about reconstructed PXD clusters The position...
Definition: PXDCluster.h:30
float getV() const
Get v coordinate of hit position.
Definition: PXDCluster.h:136
float getU() const
Get u coordinate of hit position.
Definition: PXDCluster.h:131
TO * getRelatedTo(const std::string &name="", const std::string &namedRelation="") const
Get the object to which this object has a relation.
static const double um
[micrometers]
Definition: Unit.h:71
baseType getLadderNumber() const
Get the ladder id.
Definition: VxdID.h:98

◆ ProcessRecoHit()

void ProcessRecoHit ( RecoHitInformation recoHitInfo)
protectedvirtual

Compute unbiased residual and the calls ProcesPXDRecoHit or ProcessSVDRecoHit.

Definition at line 124 of file DQMEventProcessorBase.cc.

125{
126 if (!recoHitInfo) {
127 B2DEBUG(20, "Missing genfit::pxd recoHitInfo in event() for " + m_histoModule->getName() + " module.");
128 return;
129 }
130
131 if (!recoHitInfo->useInFit())
132 return;
133
134 bool isPXD = recoHitInfo->getTrackingDetector() == RecoHitInformation::c_PXD;
135 bool isSVD = recoHitInfo->getTrackingDetector() == RecoHitInformation::c_SVD;
136 if (!isPXD && !isSVD)
137 return;
138
139 auto trackpoint = m_recoTrack->getCreatedTrackPoint(recoHitInfo);
140 if (!trackpoint)
141 return;
142 auto fitterInfo = trackpoint->getFitterInfo();
143 if (!fitterInfo)
144 return;
145
146 m_rawSensorResidual = new TVectorT<double>(fitterInfo->getResidual(0, false).getState());
147
148 if (isPXD && ! m_runningOnHLT) {
149 ProcessPXDRecoHit(recoHitInfo);
150 } else if (isSVD) {
151 ProcessSVDRecoHit(recoHitInfo);
152 }
153
154 delete m_rawSensorResidual;
155}
virtual void ProcessSVDRecoHit(RecoHitInformation *recoHitInfo)
Compute position in a SVD way which means we need two consecutive hits to be from the same sensor to ...
virtual void ProcessPXDRecoHit(RecoHitInformation *recoHitInfo)
Compute position in a PXD way.
RecoTrack * m_recoTrack
RecoTrack related to currently processed Track.
RecoHitDetector getTrackingDetector() const
Get the detector this hit comes from.
bool useInFit() const
Get the flag, whether this his should be used in a fit or not.
const genfit::TrackPoint * getCreatedTrackPoint(const RecoHitInformation *recoHitInformation) const
Get a pointer to the TrackPoint that was created from this hit.
Definition: RecoTrack.cc:230

◆ ProcessSuccessfulFit()

void ProcessSuccessfulFit ( )
protectedvirtual

Continue track processing by calling ProcessRecoHit function on each RecoHitInformation in given RecoHit.

Definition at line 112 of file DQMEventProcessorBase.cc.

113{
114 // function wasFitSuccessful already checked if TrackFitStatus is not nullptr so it's not necessary to do so
116
117 m_isNotFirstHit = false;
118
119 for (auto recoHitInfo : m_recoTrack->getRecoHitInformations(true)) {
120 ProcessRecoHit(recoHitInfo);
121 }
122}
virtual void ProcessRecoHit(RecoHitInformation *recoHitInfo)
Compute unbiased residual and the calls ProcesPXDRecoHit or ProcessSVDRecoHit.
virtual void FillTrackFitStatus(const genfit::FitStatus *tfs)
Fill histograms which require FitStatus.
std::vector< RecoHitInformation * > getRecoHitInformations(bool getSorted=false) const
Return a list of all RecoHitInformations associated with the RecoTrack.
Definition: RecoTrack.cc:557
const genfit::FitStatus * getTrackFitStatus(const genfit::AbsTrackRep *representation=nullptr) const
Return the track fit status for the given representation or for the cardinal one. You are not allowed...
Definition: RecoTrack.h:621

◆ ProcessSVDRecoHit()

void ProcessSVDRecoHit ( RecoHitInformation recoHitInfo)
protectedvirtual

Compute position in a SVD way which means we need two consecutive hits to be from the same sensor to get both u and v coordinates.

Then, if this condition is met and we have complete information about position, we can continue in a similar way as the ProcessPXDRecoHit function does.

Definition at line 180 of file DQMEventProcessorBase.cc.

181{
182 if (recoHitInfo->getRelatedTo<SVDCluster>()->isUCluster()) {
183 m_position.SetX(recoHitInfo->getRelatedTo<SVDCluster>()->getPosition());
184 m_residual_um.SetX(m_rawSensorResidual->GetMatrixArray()[0] / Unit::um);
185 } else {
186 m_position.SetY(recoHitInfo->getRelatedTo<SVDCluster>()->getPosition());
187 m_residual_um.SetY(m_rawSensorResidual->GetMatrixArray()[0] / Unit::um);
188 }
189
190 m_sensorID = recoHitInfo->getRelatedTo<SVDCluster>()->getSensorID();
191 if (m_sensorIDPrev == m_sensorID) {
193
194 if (! m_runningOnHLT) {
196
199
200 if (m_produce1Dres)
202 if (m_produce2Dres)
204 }
205
207 }
208
210}
static bool IsNotMat(int ladderNumber, int layerNumber)
Returns true if sensor with given ladderNumber and layerNumber isn't in the Mat half-shell,...
VxdID m_sensorIDPrev
ID of the prewious sensor.
virtual void FillHalfShellsSVD(const B2Vector3D &globalResidual_um, bool isNotMat)
Fill histograms with unbiased residuals for half-shells for SVD sensors.
virtual void FillUBResidualsSVD(const B2Vector3D &residual_um)
Fill histograms with unbiased residuals in SVD sensors.
The SVD Cluster class This class stores all information about reconstructed SVD clusters.
Definition: SVDCluster.h:29
bool isUCluster() const
Get the direction of strips.
Definition: SVDCluster.h:110
float getPosition(double v=0) const
Get the coordinate of reconstructed hit.
Definition: SVDCluster.h:117

◆ ProcessTrack()

void ProcessTrack ( const Track track)
protectedvirtual

Find RecoTrack for given track.

Calls ProcessSuccesfulFit if the RecoTrack has a successful fit.

Definition at line 49 of file DQMEventProcessorBase.cc.

50{
51 auto recoTracksVector = track.getRelationsTo<RecoTrack>(m_recoTracksStoreArrayName);
52 if (!recoTracksVector.size())
53 return;
54
55 m_recoTrack = recoTracksVector[0];
56
57 int nPXDClusters = 0;
58 if (!m_runningOnHLT) {
59 RelationVector<PXDCluster> pxdClusters = DataStore::getRelationsWithObj<PXDCluster>(m_recoTrack);
60 nPXDClusters = (int)pxdClusters.size();
61 }
62 RelationVector<SVDCluster> svdClusters = DataStore::getRelationsWithObj<SVDCluster>(m_recoTrack);
63 int nSVDClusters = (int)svdClusters.size();
64 RelationVector<CDCHit> cdcHits = DataStore::getRelationsWithObj<CDCHit>(m_recoTrack);
65 int nCDCHits = (int)cdcHits.size();
66
67 // This method always returns TrackFitResult so there's no need to check if it's not nullptr
68 auto trackFitResult = track.getTrackFitResultWithClosestMass(Const::pion);
69
70 TString message = ConstructMessage(trackFitResult, nPXDClusters, nSVDClusters, nCDCHits);
71 B2DEBUG(20, message.Data());
72
73 FillTrackFitResult(trackFitResult);
74 m_histoModule->FillHitNumbers(nPXDClusters, nSVDClusters, nCDCHits);
75
78
79 m_iTrack++;
80 if (((nPXDClusters > 0) || (nSVDClusters > 0)) && (nCDCHits == 0))
82 if (((nPXDClusters == 0) && (nSVDClusters == 0)) && (nCDCHits > 0))
84 if (((nPXDClusters > 0) || (nSVDClusters > 0)) && (nCDCHits > 0))
86}
static const ChargedStable pion
charged pion particle
Definition: Const.h:661
virtual void FillTrackFitResult(const TrackFitResult *trackFitResult)
Fill histograms with values derived from TrackFitResult.
int m_iTrackVXD
index of track where are VXD hits and aren't CDC hits (with valid TrackFitResult and related RecoTrac...
int m_iTrackCDC
index of track where are CDC hits and aren't VXD hits (with valid TrackFitResult and related RecoTrac...
virtual void ProcessSuccessfulFit()
Continue track processing by calling ProcessRecoHit function on each RecoHitInformation in given Reco...
virtual TString ConstructMessage(const TrackFitResult *trackFitResult, int nPXDClusters, int nSVDClusters, int nCDCHits)
Make debug message with information about RecoTrack.
int m_iTrackVXDCDC
index of track where are both VXD hits and CDC hits (with valid TrackFitResult and related RecoTrack)
virtual void FillHitNumbers(int nPXD, int nSVD, int nCDC)
Fill histograms with numbers of hits.
This is the Reconstruction Event-Data Model Track.
Definition: RecoTrack.h:79
bool wasFitSuccessful(const genfit::AbsTrackRep *representation=nullptr) const
Returns true if the last fit with the given representation was successful.
Definition: RecoTrack.cc:336
Class for type safe access to objects that are referred to in relations.
size_t size() const
Get number of relations.

◆ produce1Dres()

void produce1Dres ( )
inline

Call this if you want to produce 1D Track Residual plots for each VXD sensor.

Definition at line 51 of file DQMEventProcessorBase.h.

51{m_produce1Dres = true;};

◆ produce2Dres()

void produce2Dres ( )
inline

Call this if you want to produce 2D Track Residual plots for each VXD sensor.

Definition at line 53 of file DQMEventProcessorBase.h.

53{m_produce2Dres = true;};

◆ produceTRClusters()

void produceTRClusters ( )
inline

Call this if you want to produce 2D Track-Related Cluster plots.

Definition at line 55 of file DQMEventProcessorBase.h.

55{m_produceTRClusters = true;};

◆ Run()

void Run ( )
virtual

Call this to start processing the event data and filling histograms.

Calls ProcessTrack function for each track in store array.

Definition at line 18 of file DQMEventProcessorBase.cc.

19{
21 if (!recoTracks.isOptional()) {
22 B2DEBUG(22, "Missing recoTracks array in event() for " + m_histoModule->getName() + " module.");
23 return;
24 }
26 if (!tracks.isOptional()) {
27 B2DEBUG(22, "Missing recoTracks array in event() for " + m_histoModule->getName() + " module.");
28 return;
29 }
30
31 try {
32 m_iTrack = 0;
33 m_iTrackVXD = 0;
34 m_iTrackCDC = 0;
36
37 for (const Track& track : tracks) {
38 ProcessTrack(track);
39 }
40
42 } catch (const std::exception& e) {
43 B2WARNING("Exception " + std::string(e.what()) + " in " + m_histoModule->getName() + " module!");
44 } catch (...) {
45 B2WARNING("Unhandled exception in " + m_histoModule->getName() + " module!");
46 }
47}
virtual void ProcessTrack(const Track &track)
Find RecoTrack for given track.
virtual void FillTrackIndexes(int iTrack, int iTrackVXD, int iTrackCDC, int iTrackVXDCDC)
Fill histograms with track indexes.
Accessor to arrays stored in the data store.
Definition: StoreArray.h:113
Class that bundles various TrackFitResults.
Definition: Track.h:25

◆ SetCommonPrevVariables()

void SetCommonPrevVariables ( )
protectedvirtual

Set the value of -Prev values which are common for PXD and SVD hit.

Definition at line 242 of file DQMEventProcessorBase.cc.

Member Data Documentation

◆ m_correlationIndex

int m_correlationIndex = 0
protected

index of the layer of the previous hit

Definition at line 167 of file DQMEventProcessorBase.h.

◆ m_globalResidual_um

ROOT::Math::XYZVector m_globalResidual_um = ROOT::Math::XYZVector()
protected

unbiased residual for the hit in micrometers in global coordinates (x, y, z)

Definition at line 151 of file DQMEventProcessorBase.h.

◆ m_histoModule

DQMHistoModuleBase* m_histoModule = nullptr
protected

DQM histogram module on which the Fill- functions are called to fill histograms.

Definition at line 107 of file DQMEventProcessorBase.h.

◆ m_isNotFirstHit

bool m_isNotFirstHit = false
protected

Determines if the hit is not the first hit in the current track.

Definition at line 137 of file DQMEventProcessorBase.h.

◆ m_iTrack

int m_iTrack = 0
protected

index of track (with valid TrackFitResult and related RecoTrack)

Definition at line 126 of file DQMEventProcessorBase.h.

◆ m_iTrackCDC

int m_iTrackCDC = 0
protected

index of track where are CDC hits and aren't VXD hits (with valid TrackFitResult and related RecoTrack)

Definition at line 130 of file DQMEventProcessorBase.h.

◆ m_iTrackVXD

int m_iTrackVXD = 0
protected

index of track where are VXD hits and aren't CDC hits (with valid TrackFitResult and related RecoTrack)

Definition at line 128 of file DQMEventProcessorBase.h.

◆ m_iTrackVXDCDC

int m_iTrackVXDCDC = 0
protected

index of track where are both VXD hits and CDC hits (with valid TrackFitResult and related RecoTrack)

Definition at line 132 of file DQMEventProcessorBase.h.

◆ m_layerIndex

int m_layerIndex = 0
protected

index of the layer of the hit

Definition at line 165 of file DQMEventProcessorBase.h.

◆ m_layerNumber

int m_layerNumber = 0
protected

number of the layer of the hit

Definition at line 161 of file DQMEventProcessorBase.h.

◆ m_layerNumberPrev

int m_layerNumberPrev = 0
protected

number of the layer of the previous hit

Definition at line 163 of file DQMEventProcessorBase.h.

◆ m_phi_deg

float m_phi_deg = .0
protected

global phi in degrees of the hit

Definition at line 153 of file DQMEventProcessorBase.h.

◆ m_phiPrev_deg

float m_phiPrev_deg = .0
protected

global phi in degrees of the previous hit

Definition at line 155 of file DQMEventProcessorBase.h.

◆ m_position

ROOT::Math::XYZVector m_position = ROOT::Math::XYZVector()
protected

local coordinates of the hit position (u, v, w)

Definition at line 147 of file DQMEventProcessorBase.h.

◆ m_produce1Dres

bool m_produce1Dres = false
protected

if true, produce 1D Track residuals plots for each VXD sensor

Definition at line 117 of file DQMEventProcessorBase.h.

◆ m_produce2Dres

bool m_produce2Dres = false
protected

if true, produce 2D Track residuals plots for each VXD sensor

Definition at line 120 of file DQMEventProcessorBase.h.

◆ m_produceTRClusters

bool m_produceTRClusters = false
protected

if true, produce 2D Track-Related Cluster plots

Definition at line 123 of file DQMEventProcessorBase.h.

◆ m_rawSensorResidual

TVectorT<double>* m_rawSensorResidual = nullptr
protected

unbiased residual for the hit obtained from the sensor so its length is different for PXD and SVD sensors

Definition at line 140 of file DQMEventProcessorBase.h.

◆ m_recoTrack

RecoTrack* m_recoTrack = nullptr
protected

RecoTrack related to currently processed Track.

Definition at line 135 of file DQMEventProcessorBase.h.

◆ m_recoTracksStoreArrayName

std::string m_recoTracksStoreArrayName = ""
protected

StoreArray name where RecoTracks are written.

Definition at line 111 of file DQMEventProcessorBase.h.

◆ m_residual_um

ROOT::Math::XYZVector m_residual_um = ROOT::Math::XYZVector()
protected

unbiased residual for the hit in micrometers in local coordinates (u, v, w)

Definition at line 149 of file DQMEventProcessorBase.h.

◆ m_runningOnHLT

bool m_runningOnHLT
protected

true if the DQM is run on HLT

Definition at line 114 of file DQMEventProcessorBase.h.

◆ m_sensorID

VxdID m_sensorID = VxdID(0)
protected

ID of the current sensor.

Definition at line 142 of file DQMEventProcessorBase.h.

◆ m_sensorIDPrev

VxdID m_sensorIDPrev = VxdID(0)
protected

ID of the prewious sensor.

Definition at line 144 of file DQMEventProcessorBase.h.

◆ m_sensorIndex

int m_sensorIndex = 0
protected

index of the sensor of the hit

Definition at line 169 of file DQMEventProcessorBase.h.

◆ m_theta_deg

float m_theta_deg = .0
protected

global theta in degrees of the hit

Definition at line 157 of file DQMEventProcessorBase.h.

◆ m_thetaPrev_deg

float m_thetaPrev_deg = .0
protected

global theta in degrees of the previous hit

Definition at line 159 of file DQMEventProcessorBase.h.

◆ m_tracksStoreArrayName

std::string m_tracksStoreArrayName = ""
protected

StoreArray name where Tracks are written.

Definition at line 109 of file DQMEventProcessorBase.h.


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