BmnRoot 26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Loading...
Searching...
No Matches
BmnDstQa.cxx
Go to the documentation of this file.
1#include "BmnDstQa.h"
2
6 , fDetGem(nullptr)
7 , fDetCsc(nullptr)
8 , fDetSilicon(nullptr)
9{
10 fSteering->SetGeometriesByRunId(id, fDetGem, fDetSilicon, fDetCsc);
11
12 pair<Int_t, TString> periodSetup = fSteering->GetRunAndSetupByRunId(id);
13 prefix = TString::Format("RUN%d_SETUP_%s_", periodSetup.first, periodSetup.second.Data());
14
15 Hits();
16 Tracks();
17 Matching();
18 PID();
19}
20
27
34
40
42
44{
45 const Int_t nDets = 2;
46 TString detNames[nDets] = {"GEM", "SILICON"};
47 for (Int_t iDet = 0; iDet < nDets; iDet++)
48 fHistoManager->Create1<TH1F>(
49 Form("%sDST_1d, Distribution of Nhits, %s track", prefix.Data(), detNames[iDet].Data()),
50 Form("DST, Distribution of Nhits, %s track", detNames[iDet].Data()), 100, 0., 0.);
51
52 fHistoManager->Create1<TH1F>(Form("%sDST_1d, Distribution of total multiplicity", prefix.Data()),
53 Form("DST, Distribution of total multiplicity"), 100, 0., 0.);
54 fHistoManager->Create1<TH1F>(Form("%sDST_1d, Distribution of momenta", prefix.Data()),
55 Form("DST, Distribution of momenta"), 200, -20., +20.);
56 fHistoManager->Create1<TH1F>(Form("%sDST_1d, Distribution of Nhits", prefix.Data()),
57 Form("DST, Distribution of Nhits"), 100, 0., 0.);
58
59 fHistoManager->Create2<TH2F>(Form("%sDST_2d, Vp_{z} vs. Ntracks", prefix.Data()),
60 Form("DST_2d, Vp_{z} vs. Ntracks"), 20, 0, 20, 200, -10., +10.);
61
62 const Int_t nDims = 3;
63 TString dim[nDims] = {"X", "Y", "Z"};
64 for (Int_t iDim = 0; iDim < nDims; iDim++) {
65 fHistoManager->Create1<TH1F>(Form("%sDST_1d, Distribution of start%s", prefix.Data(), dim[iDim].Data()),
66 Form("DST, Distribution of start%s", dim[iDim].Data()), 100, 0., 0.);
67 if (!dim[iDim].Contains("Z"))
68 fHistoManager->Create1<TH1F>(Form("%sDST_1d, Distribution of start T%s", prefix.Data(), dim[iDim].Data()),
69 Form("DST, Distribution of start T%s", dim[iDim].Data()), 100, 0., 0.);
70 fHistoManager->Create1<TH1F>(Form("%sDST_1d, Distribution of last%s", prefix.Data(), dim[iDim].Data()),
71 Form("DST, Distribution of last%s", dim[iDim].Data()), 100, 0., 0.);
72 if (!dim[iDim].Contains("Z"))
73 fHistoManager->Create1<TH1F>(Form("%sDST_1d, Distribution of last T%s", prefix.Data(), dim[iDim].Data()),
74 Form("DST, Distribution of last T%s", dim[iDim].Data()), 100, 0., 0.);
75 }
76}
77
79{
80 const Int_t nDets = 6;
81 TString detNames[nDets] = {"GEM", "SILICON", "CSC", "TOF400", "TOF700", "DCH"};
82
83 // Common distributions of X, Y and Z-coordinates ...
84 for (Int_t iDet = 0; iDet < nDets; iDet++) {
85 fHistoManager->Create1<TH1F>(Form("%sDST_1d, %s, Distribution of X", prefix.Data(), detNames[iDet].Data()),
86 Form("%s, Distribution of X", detNames[iDet].Data()), 100, 0., 0.);
87 fHistoManager->Create1<TH1F>(Form("%sDST_1d, %s, Distribution of Y", prefix.Data(), detNames[iDet].Data()),
88 Form("%s, Distribution of Y", detNames[iDet].Data()), 100, 0., 0.);
89 fHistoManager->Create1<TH1F>(Form("%sDST_1d, %s, Distribution of Z", prefix.Data(), detNames[iDet].Data()),
90 Form("%s, Distribution of Z", detNames[iDet].Data()), 100, 0., 0.);
91 }
92
93 // Common distributions of X and Y-errors ...
94 for (Int_t iDet = 0; iDet < nDets; iDet++) {
95 fHistoManager->Create1<TH1F>(Form("%sDST_1d, %s, Distribution of dX", prefix.Data(), detNames[iDet].Data()),
96 Form("%s, Distribution of dX", detNames[iDet].Data()), 100, 0., 0.);
97 fHistoManager->Create1<TH1F>(Form("%sDST_1d, %s, Distribution of dY", prefix.Data(), detNames[iDet].Data()),
98 Form("%s, Distribution of dY", detNames[iDet].Data()), 100, 0., 0.);
99 }
100
101 // Common distributions of cluster sizes and signals ...
102 for (Int_t iDet = 0; iDet < nDets; iDet++) {
103 if (iDet > 2)
104 break;
105
106 // sizes ...
107 fHistoManager->Create1<TH1F>(
108 Form("%sDST_1d, %s, Distribution of X cluster size", prefix.Data(), detNames[iDet].Data()),
109 Form("%s, Distribution of X cluster size", detNames[iDet].Data()), 16, 0., 16.);
110 fHistoManager->Create1<TH1F>(
111 Form("%sDST_1d, %s, Distribution of X' cluster size", prefix.Data(), detNames[iDet].Data()),
112 Form("%s, Distribution of X' cluster size", detNames[iDet].Data()), 16, 0., 16.);
113
114 // signals ...
115 fHistoManager->Create1<TH1F>(
116 Form("%sDST_1d, %s, Distribution of X cluster signals", prefix.Data(), detNames[iDet].Data()),
117 Form("%s, Distribution of X cluster size", detNames[iDet].Data()), 100, 0., 0.);
118 fHistoManager->Create1<TH1F>(
119 Form("%sDST_1d, %s, Distribution of X' cluster signals", prefix.Data(), detNames[iDet].Data()),
120 Form("%s, Distribution of X' cluster size", detNames[iDet].Data()), 100, 0., 0.);
121 }
122}
123
125{
126 const Int_t nBins = 20;
127 const Int_t nBinsXY = 50;
128
129 const Int_t nDets = 4;
130 TString dets[nDets] = {"CSC", "DCH1", "TOF700", "DCH2"};
131
132 for (Int_t iDet = 0; iDet < nDets; iDet++) {
133 fHistoManager->Create1<TH1F>(Form("%sDST_1d, hAllNo%s", prefix.Data(), dets[iDet].Data()),
134 Form("%s, matchingMomWithout; Rigidity [GeV/(Qc)]; N", dets[iDet].Data()), nBins,
135 0., 15.);
136 fHistoManager->Create1<TH1F>(Form("%sDST_1d, hAllYes%s", prefix.Data(), dets[iDet].Data()),
137 Form("%s, matchingMomWith; Rigidity [GeV/(Qc)]; N", dets[iDet].Data()), nBins, 0.,
138 15.);
139
140 fHistoManager->Create2<TH2F>(Form("%sDST_2d, hAllNo%sXY", prefix.Data(), dets[iDet].Data()),
141 Form("%s, matchingEffWithout; X [cm]; Y [cm]", dets[iDet].Data()), nBinsXY, -20,
142 100, nBinsXY, -60, 60);
143 fHistoManager->Create2<TH2F>(Form("%sDST_2d, hAllYes%sXY", prefix.Data(), dets[iDet].Data()),
144 Form("%s, matchingEffWith; X [cm]; Y [cm]", dets[iDet].Data()), nBinsXY, -20, 100,
145 nBinsXY, -60, 60);
146 }
147}
148
150{
151 const Int_t nBins = 20;
152 const Int_t nBinsXY = 50;
153 const Int_t nDets = 4;
154 TString dets[nDets] = {"CSC", "DCH1", "TOF700", "DCH2"};
155
156 for (Int_t iDet = 0; iDet < nDets; iDet++) {
157 fHistoManager->Create1<TH1F>(
158 Form("%sDST_1d, hEff%s", prefix.Data(), dets[iDet].Data()),
159 Form("%s, Efficiency of matching; Rigidity [GeV/(Qc)]; Efficiency", dets[iDet].Data()), nBins, 0., 15.);
160
161 fHistoManager->Create2<TH2F>(Form("%sDST_2d, hEff%sXY", prefix.Data(), dets[iDet].Data()),
162 Form("%s, Efficiency of matching; X [cm]; Y [cm]", dets[iDet].Data()), nBinsXY,
163 -20, 100, nBinsXY, -60, 60);
164 }
165}
166
168{
169 const Int_t nDets = 8;
170 TString dets[nDets] = {"MWPC", "SILICON", "GEM", "CSC", "TOF400", "DCH1", "TOF700", "DCH2"};
171
172 const Double_t resBoard = 7;
173
174 for (Int_t iDet = 0; iDet < nDets; iDet++) {
175 fHistoManager->Create1<TH1F>(Form("%sDST_1d, hResX%s", prefix.Data(), dets[iDet].Data()),
176 Form("%s, Residuals X; X Residual [cm]; N", dets[iDet].Data()), 100, -resBoard,
177 resBoard);
178 fHistoManager->Create1<TH1F>(Form("%sDST_1d, hResY%s", prefix.Data(), dets[iDet].Data()),
179 Form("%s, Residuals Y; Y Residual [cm]; N", dets[iDet].Data()), 100, -resBoard,
180 resBoard);
181
182 fHistoManager->Create1<TH1F>(Form("%sDST_1d, hPullX%s", prefix.Data(), dets[iDet].Data()),
183 Form("%s Pulls X; X Pull [cm]; N", dets[iDet].Data()), 100, -resBoard, resBoard);
184 fHistoManager->Create1<TH1F>(Form("%sDST_1d, hPullY%s", prefix.Data(), dets[iDet].Data()),
185 Form("%s, Pulls Y; Y Pull [cm]; N", dets[iDet].Data()), 100, -resBoard, resBoard);
186 }
187}
188
190{
191 const Int_t nDets = 5;
192 TString dets[nDets] = {"SILICON", "GEM", "CSC", "TOF400", "TOF700"};
193
194 for (Int_t iDet = 0; iDet < nDets; iDet++) {
195 if (dets[iDet].Contains("GEM"))
196 for (Int_t iStat = 0; iStat < fDetGem->GetNStations(); iStat++) {
197 Double_t xUp = -fDetGem->GetStation(iStat)->GetXMinStation();
198 Double_t xLow = -fDetGem->GetStation(iStat)->GetXMaxStation();
199 Double_t yLow = fDetGem->GetStation(iStat)->GetYMinStation();
200 Double_t yUp = fDetGem->GetStation(iStat)->GetYMaxStation();
201
202 fHistoManager->Create2<TH2D>(
203 Form("%sDST_2d, hOccupancy%s, stat %d", prefix.Data(), dets[iDet].Data(), iStat),
204 Form("Occupancy %s, stat %d; X [cm]; Y [cm]", dets[iDet].Data(), iStat), Int_t(xUp - xLow), xLow,
205 xUp, Int_t(yUp - yLow), yLow, yUp);
206 }
207 else if (dets[iDet].Contains("SILICON"))
208 for (Int_t iStat = 0; iStat < fDetSilicon->GetNStations(); iStat++) {
209 Double_t xUp = -fDetSilicon->GetStation(iStat)->GetXMinStation();
210 Double_t xLow = -fDetSilicon->GetStation(iStat)->GetXMaxStation();
211 Double_t yLow = fDetSilicon->GetStation(iStat)->GetYMinStation();
212 Double_t yUp = fDetSilicon->GetStation(iStat)->GetYMaxStation();
213
214 fHistoManager->Create2<TH2D>(
215 Form("%sDST_2d, hOccupancy%s, stat %d", prefix.Data(), dets[iDet].Data(), iStat),
216 Form("Occupancy %s, stat %d; X [cm]; Y [cm]", dets[iDet].Data(), iStat), 3 * Int_t(xUp - xLow),
217 xLow, xUp, 3 * Int_t(yUp - yLow), yLow, yUp);
218 }
219 else if (dets[iDet].Contains("CSC") && fDetCsc)
220 for (Int_t iStat = 0; iStat < fDetCsc->GetNStations(); iStat++) {
221 Double_t xUp = -fDetCsc->GetStation(iStat)->GetXMinStation();
222 Double_t xLow = -fDetCsc->GetStation(iStat)->GetXMaxStation();
223 Double_t yLow = fDetCsc->GetStation(iStat)->GetYMinStation();
224 Double_t yUp = fDetCsc->GetStation(iStat)->GetYMaxStation();
225
226 fHistoManager->Create2<TH2D>(
227 Form("%sDST_2d, hOccupancy%s, stat %d", prefix.Data(), dets[iDet].Data(), iStat),
228 Form("Occupancy %s, stat %d; X [cm]; Y [cm]", dets[iDet].Data(), iStat), Int_t(xUp - xLow), xLow,
229 xUp, Int_t(yUp - yLow), yLow, yUp);
230 }
231 else
232 fHistoManager->Create2<TH2F>(Form("%sDST_2d, hOccupancy%s", prefix.Data(), dets[iDet].Data()),
233 Form("Occupancy %s; X [cm]; Y [cm]", dets[iDet].Data()), 100, 0., 0., 100, 0.,
234 0.);
235 }
236}
237
239{
240 const Int_t nLayers = 2; // X and X'
241 TString layers[nLayers] = {"X", "X'"};
242
243 for (Int_t iLayer = 0; iLayer < nLayers; iLayer++) {
244 for (Int_t iStat = 0; iStat < fDetGem->GetNStations(); iStat++)
245 fHistoManager->Create1<TH1I>(
246 Form("%sDST_1d, Ave. strip value per hit in %s (%s)", prefix.Data(), "GEM", layers[iLayer].Data()),
247 Form("%s, Ave. strip value per hit (%s); N_{strips}; N", "GEM", layers[iLayer].Data()), 20, 0., 20.);
248
249 for (Int_t iStat = 0; iStat < fDetSilicon->GetNStations(); iStat++)
250 fHistoManager->Create1<TH1I>(
251 Form("%sDST_1d, Ave. strip value per hit in %s (%s)", prefix.Data(), "SILICON", layers[iLayer].Data()),
252 Form("%s, Ave. strip value per hit (%s); N_{strips}; N", "SILICON", layers[iLayer].Data()), 20, 0.,
253 20.);
254
255 if (fDetCsc)
256 for (Int_t iStat = 0; iStat < fDetCsc->GetNStations(); iStat++)
257 fHistoManager->Create1<TH1I>(
258 Form("%sDST_1d, Ave. strip value per hit in %s (%s)", prefix.Data(), "CSC", layers[iLayer].Data()),
259 Form("%s, Ave. strip value per hit (%s); N_{strips}; N", "CSC", layers[iLayer].Data()), 20, 0.,
260 20.);
261 }
262}
263
265{
266 const Int_t nLayers = 2; // X and X'
267 TString layers[nLayers] = {"X", "X'"};
268
269 for (Int_t iLayer = 0; iLayer < nLayers; iLayer++) {
270 for (Int_t iStat = 0; iStat < fDetGem->GetNStations(); iStat++)
271 fHistoManager->Create1<TH1F>(
272 Form("%sDST_1d, Ave. strip value per track in %s (%s)", prefix.Data(), "GEM", layers[iLayer].Data()),
273 Form("%s, Ave. strip value per track (%s); N_{strips}; N", "GEM", layers[iLayer].Data()), 20, 0., 20.);
274
275 for (Int_t iStat = 0; iStat < fDetSilicon->GetNStations(); iStat++)
276 fHistoManager->Create1<TH1F>(
277 Form("%sDST_1d, Ave. strip value per track in %s (%s)", prefix.Data(), "SILICON",
278 layers[iLayer].Data()),
279 Form("%s, Ave. strip value per track (%s); N_{strips}; N", "SILICON", layers[iLayer].Data()), 20, 0.,
280 20.);
281
282 if (fDetCsc)
283 for (Int_t iStat = 0; iStat < fDetCsc->GetNStations(); iStat++)
284 fHistoManager->Create1<TH1F>(
285 Form("%sDST_1d, Ave. strip value per track in %s (%s)", prefix.Data(), "CSC",
286 layers[iLayer].Data()),
287 Form("%s, Ave. strip value per track (%s); N_{strips}; N", "CSC", layers[iLayer].Data()), 20, 0.,
288 20.);
289 }
290}
int Int_t
double Double_t
char * Form(const char *fmt,...)
void ResidualsPullsHistos()
Definition BmnDstQa.cxx:167
void Hits()
Definition BmnDstQa.cxx:21
void OccupancyHistos()
Definition BmnDstQa.cxx:189
BmnGemStripStationSet * fDetGem
Definition BmnDstQa.h:34
void EfficiencyHistos()
Definition BmnDstQa.cxx:149
void PID()
Definition BmnDstQa.cxx:41
BmnCSCStationSet * fDetCsc
Definition BmnDstQa.h:35
BmnOfflineQaSteering * fSteering
Definition BmnDstQa.h:31
void HitsDistributions()
Definition BmnDstQa.cxx:78
void MatchingHistos()
Definition BmnDstQa.cxx:124
void Matching()
Definition BmnDstQa.cxx:35
BmnSiliconStationSet * fDetSilicon
Definition BmnDstQa.h:36
BmnDstQa()
Default constructor.
Definition BmnDstQa.h:17
TString prefix
Definition BmnDstQa.h:38
void BasicTrackDistributions()
Definition BmnDstQa.cxx:43
BmnQaHistoManager * fHistoManager
Definition BmnDstQa.h:32
void AverageStripValuePerHit()
Definition BmnDstQa.cxx:238
void AverageStripValuePerTrack()
Definition BmnDstQa.cxx:264
void Tracks()
Definition BmnDstQa.cxx:28
const char * Data() const
static TString Format(const char *fmt,...)
const UInt_t dim