Skip to content

Commit dc818d1

Browse files
committed
Merge branch 'feature/10084-update-svdroidqm-for-svdclusters-and-svdb4commissioning-to-not-plot-svdrecodigits-rel' into 'release/06-02'
Updating SVDROIDQM and SVDB4Commissioning of release-06-01 to release-08 See merge request belle2/software/basf2!2299
2 parents fe6949e + 9a01fcb commit dc818d1

File tree

5 files changed

+260
-315
lines changed

5 files changed

+260
-315
lines changed

dqm/scripts/daqdqm/commondqm.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,8 @@ def add_common_dqm(path, components=None, dqm_environment="expressreco", dqm_mod
9292
path.add_module('SVDDQMClustersOnTrack')
9393
# SVD DOSE
9494
add_svd_dqm_dose(path, 'SVDShaperDigitsZS5')
95+
# SVD ROI
96+
path.add_module('SVDROIDQM', plotRecoDigits=False)
9597

9698
# Event time measuring detectors
9799
if components is None or 'CDC' in components or 'ECL' in components or 'TOP' in components:

svd/modules/svdPerformance/include/SVDB4CommissioningPlotsModule.h

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@
1313

1414
#include <framework/datastore/StoreArray.h>
1515

16-
#include <svd/dataobjects/SVDCluster.h>
1716
#include <svd/dataobjects/SVDRecoDigit.h>
17+
#include <svd/dataobjects/SVDCluster.h>
1818
#include <mdst/dataobjects/TrackFitResult.h>
1919
#include <mdst/dataobjects/Track.h>
2020
#include <tracking/dataobjects/RecoTrack.h>
@@ -41,14 +41,16 @@ namespace Belle2 {
4141

4242
public:
4343

44+
/** constructor */
4445
SVDB4CommissioningPlotsModule();
4546

46-
virtual ~SVDB4CommissioningPlotsModule();
47-
virtual void initialize() override;
48-
virtual void beginRun() override;
49-
virtual void event() override;
50-
virtual void endRun() override;
51-
virtual void terminate() override;
47+
/** destructor */
48+
virtual ~SVDB4CommissioningPlotsModule() {};
49+
50+
virtual void initialize() override; /**< check StoreArrays & create rootfile */
51+
virtual void beginRun() override; /**< create histograms */
52+
virtual void event() override; /**< fill histograms */
53+
virtual void endRun() override; /**< write histogrmas */
5254

5355
std::string m_ShaperDigitName; /**< SVDSHaperDigit StoreArray name*/
5456
std::string m_RecoDigitName; /**< SVDRecoDigit StoreArray name*/
@@ -76,6 +78,7 @@ namespace Belle2 {
7678
StoreArray<TrackFitResult> m_tfr; /**<TrackFitResult StoreArray*/
7779

7880
int m_ntracks = 0; /**< number of tracks*/
81+
bool m_plotRecoDigits = false; /**< Produce plots for SVDRecoDigits when True */
7982

8083
//TRACKS
8184
TH1F* m_nTracks = nullptr; /**< number of tracks*/

svd/modules/svdPerformance/src/SVDB4CommissioningPlotsModule.cc

Lines changed: 39 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
using namespace std;
1717
using namespace Belle2;
1818

19-
REG_MODULE(SVDB4CommissioningPlots)
19+
REG_MODULE(SVDB4CommissioningPlots);
2020

2121
SVDB4CommissioningPlotsModule::SVDB4CommissioningPlotsModule() : Module()
2222
, m_nTracks(0), m_Pvalue(), m_mom(0), m_nSVDhits(0)
@@ -30,11 +30,8 @@ SVDB4CommissioningPlotsModule::SVDB4CommissioningPlotsModule() : Module()
3030
addParam("ClustersName", m_ClusterName, "Name of Cluster Store Array.", std::string("SVDClusters"));
3131
addParam("TrackListName", m_TrackName, "Name of Track Store Array.", std::string("Tracks"));
3232
addParam("TrackFitResultListName", m_TrackFitResultName, "Name of TracksFitResult Store Array.", std::string("TrackFitResults"));
33-
}
34-
35-
SVDB4CommissioningPlotsModule::~SVDB4CommissioningPlotsModule()
36-
{
37-
33+
addParam("plotRecoDigits", m_plotRecoDigits,
34+
"Set true to produce the plots for RecoDigits (false by default)", m_plotRecoDigits);
3835
}
3936

4037
void SVDB4CommissioningPlotsModule::initialize()
@@ -46,7 +43,6 @@ void SVDB4CommissioningPlotsModule::initialize()
4643
m_recoTracks.isOptional();
4744
m_tfr.isOptional(m_TrackFitResultName);
4845

49-
5046
B2INFO(" RecoDigits: " << m_RecoDigitName);
5147
B2INFO(" Clusters: " << m_ClusterName);
5248
B2INFO(" Tracks: " << m_TrackName);
@@ -66,93 +62,93 @@ void SVDB4CommissioningPlotsModule::beginRun()
6662
//RECO DIGITS
6763
TH1F hRecoCharge("reco_charge_L@layerL@ladderS@sensor@view",
6864
"Charge of RecoDigits in @layer.@ladder.@sensor @view/@side side",
69-
100, 0 , 1000);
65+
100, 0, 1000);
7066
hRecoCharge.GetXaxis()->SetTitle("charge (ke-)");
7167
h_recoCharge = new SVDHistograms<TH1F>(hRecoCharge);
7268

7369
TH1F hRecoEnergy("reco_energy_L@layerL@ladderS@sensor@view",
7470
"Energy of RecoDigits in @layer.@ladder.@sensor @view/@side side",
75-
100, 0 , 360);
71+
100, 0, 360);
7672
hRecoEnergy.GetXaxis()->SetTitle("energy (keV)");
7773
h_recoEnergy = new SVDHistograms<TH1F>(hRecoEnergy);
7874

7975
TH1F hRecoTime("reco_time_L@layerL@ladderS@sensor@view",
8076
"Time of RecoDigits in @layer.@ladder.@sensor @view/@side side",
81-
200, -100 , 100);
77+
200, -100, 100);
8278
hRecoTime.GetXaxis()->SetTitle("time (ns)");
8379
h_recoTime = new SVDHistograms<TH1F>(hRecoTime);
8480

8581
TH1F hRecoNoise("reco_noise_L@layerL@ladderS@sensor@view",
8682
"Noise of RecoDigits in @layer.@ladder.@sensor @view/@side side",
87-
200, 300 , 1800);
83+
200, 300, 1800);
8884
hRecoNoise.GetXaxis()->SetTitle("strip noise (e-)");
8985
h_recoNoise = new SVDHistograms<TH1F>(hRecoNoise);
9086

9187
//CLUSTER NOT RELATED TO TRACKS
9288
TH1F hClusterCharge("cluster_charge_L@layerL@ladderS@sensor@view",
9389
"Charge of Clusters in @layer.@ladder.@sensor @view/@side side",
94-
100, 0 , 100);
90+
100, 0, 100);
9591
hClusterCharge.GetXaxis()->SetTitle("charge (ke-)");
9692
h_clusterCharge = new SVDHistograms<TH1F>(hClusterCharge);
9793

9894
TH1F hClusterSize("cluster_size_L@layerL@ladderS@sensor@view",
9995
"Clusters Size for @layer.@ladder.@sensor @view/@side side",
100-
20, 0 , 20);
96+
20, 0, 20);
10197
hClusterSize.GetXaxis()->SetTitle("cluster size");
10298
h_clusterSize = new SVDHistograms<TH1F>(hClusterSize);
10399

104100
TH1F hClusterSNR("cluster_SNR_L@layerL@ladderS@sensor@view",
105101
"SNR of Clusters in @layer.@ladder.@sensor @view/@side side",
106-
100, 0 , 140);
102+
100, 0, 140);
107103
hClusterSNR.GetXaxis()->SetTitle("SNR");
108104
h_clusterSNR = new SVDHistograms<TH1F>(hClusterSNR);
109105

110106
TH1F hClusterEnergy("cluster_energy_L@layerL@ladderS@sensor@view",
111107
"Energy of Clusters in @layer.@ladder.@sensor @view/@side side",
112-
100, 0 , 360);
108+
100, 0, 360);
113109
hClusterEnergy.GetXaxis()->SetTitle("energy (keV)");
114110
h_clusterEnergy = new SVDHistograms<TH1F>(hClusterEnergy);
115111

116112
TH1F hClusterTime("cluster_time_L@layerL@ladderS@sensor@view",
117113
"Time of Clusters in @layer.@ladder.@sensor @view/@side side",
118-
200, -100 , 100);
114+
200, -100, 100);
119115
hClusterTime.GetXaxis()->SetTitle("time (ns)");
120116
h_clusterTime = new SVDHistograms<TH1F>(hClusterTime);
121117

122118
//CLUSTER RELATED TO TRACKS
123119
TH1F hClusterTrkCharge("clusterTrk_charge_L@layerL@ladderS@sensor@view",
124120
"Charge of Clusters Related to Tracks in @layer.@ladder.@sensor @view/@side side",
125-
100, 0 , 100);
121+
100, 0, 100);
126122
hClusterTrkCharge.GetXaxis()->SetTitle("charge (ke-)");
127123
h_clusterTrkCharge = new SVDHistograms<TH1F>(hClusterTrkCharge);
128124

129125
TH1F hClusterTrkSize("clusterTrk_size_L@layerL@ladderS@sensor@view",
130126
"Cluster Size for @layer.@ladder.@sensor @view/@side side",
131-
20, 0 , 20);
127+
20, 0, 20);
132128
hClusterTrkSize.GetXaxis()->SetTitle("cluster size");
133129
h_clusterTrkSize = new SVDHistograms<TH1F>(hClusterTrkSize);
134130

135131
TH1F hClusterTrkSNR("clusterTrk_SNR_L@layerL@ladderS@sensor@view",
136132
"SNR of Clusters Related to Tracks in @layer.@ladder.@sensor @view/@side side",
137-
100, 0 , 140);
133+
100, 0, 140);
138134
hClusterTrkSNR.GetXaxis()->SetTitle("SNR");
139135
h_clusterTrkSNR = new SVDHistograms<TH1F>(hClusterTrkSNR);
140136

141137
TH1F hClusterTrkEnergy("clusterTrk_energy_L@layerL@ladderS@sensor@view",
142138
"Energy of Clusters Related to Tracks in @layer.@ladder.@sensor @view/@side side",
143-
100, 0 , 360);
139+
100, 0, 360);
144140
hClusterTrkEnergy.GetXaxis()->SetTitle("energy (keV)");
145141
h_clusterTrkEnergy = new SVDHistograms<TH1F>(hClusterTrkEnergy);
146142

147143
TH1F hClusterTrkTime("clusterTrk_time_L@layerL@ladderS@sensor@view",
148144
"Time of Clusters Related to Tracks in @layer.@ladder.@sensor @view/@side side",
149-
200, -100 , 100);
145+
200, -100, 100);
150146
hClusterTrkTime.GetXaxis()->SetTitle("time (ns)");
151147
h_clusterTrkTime = new SVDHistograms<TH1F>(hClusterTrkTime);
152148

153149
TH1F hClusterTrkInterstripPos("clusterTrk_interstripPos_L@layerL@ladderS@sensor@view",
154150
"Interstrip Position of Clusters Related to Tracks in @layer.@ladder.@sensor @view/@side side",
155-
400, 0 , 1);
151+
400, 0, 1);
156152
hClusterTrkInterstripPos.GetXaxis()->SetTitle("interstrip position");
157153
h_clusterTrkInterstripPos = new SVDHistograms<TH1F>(hClusterTrkInterstripPos);
158154

@@ -225,26 +221,28 @@ void SVDB4CommissioningPlotsModule::event()
225221
}
226222

227223
if (m_Tracks)
228-
B2DEBUG(1, "%%%%%%%% NEW EVENT, number of Tracks = " << m_Tracks.getEntries());
229-
224+
B2DEBUG(29, "%%%%%%%% NEW EVENT, number of Tracks = " << m_Tracks.getEntries());
230225

231226
//reco digits
232-
if (m_svdRecos.isValid()) {
233-
for (int digi = 0 ; digi < m_svdRecos.getEntries(); digi++) {
227+
if (m_plotRecoDigits) {
228+
if (m_svdRecos.isValid()) {
229+
for (int digi = 0 ; digi < m_svdRecos.getEntries(); digi++) {
234230

235-
VxdID::baseType theVxdID = (VxdID::baseType)m_svdRecos[digi]->getSensorID();
236-
int side = m_svdRecos[digi]->isUStrip();
237-
int cellID = m_svdRecos[digi]->getCellID();
231+
VxdID::baseType theVxdID = (VxdID::baseType)m_svdRecos[digi]->getSensorID();
232+
int side = m_svdRecos[digi]->isUStrip();
233+
int cellID = m_svdRecos[digi]->getCellID();
238234

239-
float thisNoise = m_NoiseCal.getNoiseInElectrons(theVxdID, side, cellID);
235+
float thisNoise = m_NoiseCal.getNoiseInElectrons(theVxdID, side, cellID);
240236

241-
h_recoNoise->fill(theVxdID, side, thisNoise);
242-
h_recoCharge->fill(theVxdID, side, m_svdRecos[digi]->getCharge() / 1000.);
243-
h_recoEnergy->fill(theVxdID, side, m_svdRecos[digi]->getCharge()*c_eTOkeV);
244-
h_recoTime->fill(theVxdID, side, m_svdRecos[digi]->getTime());
237+
h_recoNoise->fill(theVxdID, side, thisNoise);
238+
h_recoCharge->fill(theVxdID, side, m_svdRecos[digi]->getCharge() / 1000.);
239+
h_recoEnergy->fill(theVxdID, side, m_svdRecos[digi]->getCharge()*c_eTOkeV);
240+
h_recoTime->fill(theVxdID, side, m_svdRecos[digi]->getTime());
241+
}
245242
}
246243
}
247244

245+
248246
//clusters NOT related to tracks
249247
for (int cl = 0 ; cl < m_svdClusters.getEntries(); cl++) {
250248

@@ -311,11 +309,13 @@ void SVDB4CommissioningPlotsModule::endRun()
311309
for (Belle2::VxdID sensor : geoCache.getSensors(ladder))
312310
for (int view = SVDHistograms<TH1F>::VIndex ; view < SVDHistograms<TH1F>::UIndex + 1; view++) {
313311

314-
dir_reco_layer->cd();
315-
(h_recoCharge->getHistogram(sensor, view))->Write();
316-
(h_recoEnergy->getHistogram(sensor, view))->Write();
317-
(h_recoTime->getHistogram(sensor, view))->Write();
318-
(h_recoNoise->getHistogram(sensor, view))->Write();
312+
if (m_plotRecoDigits) {
313+
dir_reco_layer->cd();
314+
(h_recoCharge->getHistogram(sensor, view))->Write();
315+
(h_recoEnergy->getHistogram(sensor, view))->Write();
316+
(h_recoTime->getHistogram(sensor, view))->Write();
317+
(h_recoNoise->getHistogram(sensor, view))->Write();
318+
}
319319
dir_clusterAssigned_layer->cd();
320320
(h_clusterTrkCharge->getHistogram(sensor, view))->Write();
321321
(h_clusterTrkSNR->getHistogram(sensor, view))->Write();
@@ -337,9 +337,3 @@ void SVDB4CommissioningPlotsModule::endRun()
337337
}
338338

339339
}
340-
341-
342-
343-
void SVDB4CommissioningPlotsModule::terminate()
344-
{
345-
}

tracking/modules/svdROIFinder/include/SVDROIDQMModule.h

Lines changed: 10 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@
1313

1414
#include <vxd/geometry/GeoCache.h>
1515

16-
#include <svd/dataobjects/SVDRecoDigit.h>
1716
#include <svd/dataobjects/SVDShaperDigit.h>
18-
#include <tracking/dataobjects/ROIid.h>
17+
#include <svd/dataobjects/SVDRecoDigit.h>
18+
#include <svd/dataobjects/SVDCluster.h>
1919
#include <tracking/dataobjects/SVDIntercept.h>
2020

2121
#include <unordered_map>
@@ -45,48 +45,32 @@ namespace Belle2 {
4545

4646
std::string m_SVDShaperDigitsName; /**< shaper digit list name*/
4747
std::string m_SVDRecoDigitsName; /**< reco digit list name*/
48+
std::string m_SVDClustersName; /**< cluster list name*/
4849

49-
StoreArray<ROIid> m_ROIs; /**< ROis store array*/
50-
StoreArray<SVDIntercept> m_Intercepts; /**< SVDINtercept Store Arrays*/
51-
StoreArray<SVDShaperDigit> m_SVDShaperDigits; /**< shaper digits sotre array */
52-
StoreArray<SVDRecoDigit> m_SVDRecoDigits; /**< reco digit store array*/
50+
StoreArray<SVDIntercept> m_Intercepts; /**< SVDIntercept Store Arrays*/
51+
StoreArray<SVDShaperDigit> m_SVDShaperDigits; /**< shaper digit store array */
52+
StoreArray<SVDRecoDigit> m_SVDRecoDigits; /**< reco digit store array */
53+
StoreArray<SVDCluster> m_SVDClusters; /**< svd cluster store array*/
5354

5455
VXD::GeoCache& m_geoCache = VXD::GeoCache::getInstance(); /**< the geo cache instance*/
5556

56-
std::string m_ROIsName; /**< Name of the ROIid StoreArray */
5757
std::string m_InterceptsName; /**< Name of the SVDIntercept StoreArray */
5858

5959
TDirectory* m_InterDir; /**< intercepts directory in the root file */
60-
TDirectory* m_ROIDir; /**< ROI directory in the root file */
6160

6261
/** typedef: histograms to be filled once per intercept + filling function*/
6362
typedef std::pair< TH1*, std::function< void(TH1*, const SVDIntercept*) > > InterHistoAndFill;
6463
/** map of histograms to be filled once per intercept */
6564
std::unordered_multimap<Belle2::VxdID, InterHistoAndFill, std::function<size_t (const Belle2::VxdID&)> > hInterDictionary;
6665

67-
/** typedef: histograms to be filled once per roi + filling function*/
68-
typedef std::pair< TH1*, std::function< void(TH1*, const ROIid*) > > ROIHistoAndFill;
69-
/** map of histograms to be filled once per roi */
70-
std::unordered_multimap<Belle2::VxdID, ROIHistoAndFill, std::function<size_t (const Belle2::VxdID&)> > hROIDictionary;
71-
72-
/** struct: histograms to be filled once per event + filling fucntion + accumulate function*/
73-
struct ROIHistoAccumulateAndFill {
74-
TH1* hPtr; /**< histogram pointer */
75-
std::function< void (const ROIid*, double&) > accumulate; /**< accumulate function*/
76-
std::function< void (TH1*, double&) > fill; /**< fill function */
77-
double value; /**< value used to fill*/
78-
};
79-
/** map of histograms to be filled once per event */
80-
std::unordered_multimap<Belle2::VxdID, ROIHistoAccumulateAndFill&, std::function<size_t (const Belle2::VxdID&) > >
81-
hROIDictionaryEvt;
82-
8366
void createHistosDictionaries(); /**< create the dictionary*/
84-
void fillSensorROIHistos(const ROIid* roi); /**< fill histograms per sensor, filled once per ROI */
8567
void fillSensorInterHistos(const SVDIntercept* inter); /**< fill histograms per sensor, filled once per intercept */
8668

8769
int m_numModules; /**< number of hardware modules*/
70+
int m_specificLayer =
71+
-1; /**< specific layer selected for which to produce the plots. If it is not a SVD layer (3, 4, 5, 6) than the plots for all layers are produced. Default is (-1), i.e. plots for all SVD layers are produced.*/
72+
bool m_plotRecoDigits = false; /**< Produce plots for SVDRecoDigits when True */
8873

89-
TH1F* hnROIs; /**< number of ROIs*/
9074
TH1F* hnInter; /**< number of intercpets*/
9175
TH1F* harea; /**< ROis area */
9276
TH1F* hredFactor; /**< reduction factor*/

0 commit comments

Comments
 (0)