10 #include "TDirectory.h"
15 using namespace MuonStationIndex;
21 exerr =
new TH1F(
prefix+
"exerr",
"exerr",100,0,100.);
30 res_p =
new TH2F(
prefix+
"res_p",
"res_p",100,-100.,100.,100,0.,300.);
31 pull_p =
new TH2F(
prefix+
"pull_p",
"pull_p",100,-10.,10.,100,0.,300.);
32 exerr_p =
new TH2F(
prefix+
"exerr_p",
"exerr_p",100,0.,100.,100,0.,300.);
36 pull_p->Fill(pull_,p_);
37 exerr_p->Fill(exerr_,p_);
41 TDirectory* ndir =
dir->mkdir(
prefix+
"Chamber");
45 for(
unsigned int i=0;
i<
plots.size();++
i ){
48 plots_p[
i].book(
name);
54 if( chIndex_ <0 ||
static_cast<unsigned>(chIndex_) >=
plots.size() )
return;
56 plots[chIndex_].fill(res_,pull_,exerr_);
57 plots_p[chIndex_].fill(res_,pull_,exerr_,p_);
74 void HitPlots::fill(
int chIndex_,
float res_,
float pull_,
float exerr_,
float p_ ) {
75 all.fill(res_,pull_,exerr_);
76 all_p.fill(res_,pull_,exerr_,p_);
77 chamber.fill(chIndex_,res_,pull_,exerr_,p_);
82 bool isMDT = (
type == 1 ||
type == 10);
89 if(
type == 10 ) timeRange = 800;
91 time =
new TH1F(
prefix+
"time",
"time",100,-20.,100.);
93 timeRes =
new TH1F(
prefix+
"timeRes",
"timeRes",200,tmin,tmax);
94 timePull =
new TH1F(
prefix+
"pullRes",
"pullRes",200,-7,7);
96 betaRes =
new TH1F(
prefix+
"betaRes",
"betaRes",200,-1.2,1.2);
97 betaPull =
new TH1F(
prefix+
"betaPull",
"betaPull",200,-7,7);
98 invBetaRes =
new TH1F(
prefix+
"invBetaRes",
"invBetaRes",200,-1.2,1.2);
99 invBetaPull =
new TH1F(
prefix+
"invBetaPull",
"invBetaPull",200,-7,7);
103 timeResScat =
new TH2F(
prefix+
"timeResScat",
"timeResScat",100,tmin,timeRange,100,tmin,tmax);
104 timePullScat =
new TH2F(
prefix+
"pullResScat",
"pullResScat",100,tmin,timeRange,100,-7.,7.);
106 error_time =
new TH2F(
prefix+
"error_time",
"error_time",100,tmin,timeRange,100,0.,15.);
107 errorRT =
new TH1F(
prefix+
"errorRT",
"errorRT",100,-20.,100.);
108 errorTrack =
new TH1F(
prefix+
"errorTrack",
"errorTrack",100,-20.,100.);
109 errorRT_Track =
new TH2F(
prefix+
"errorRT_Track",
"errorRT_Track",100,-20.,100.,100,-20.,100.);
110 timeResCor =
new TH1F(
prefix+
"timeResCor",
"timeResCor",200,tmin,tmax);
111 timePullCor =
new TH1F(
prefix+
"timePullCor",
"timePullCor",200,-7,7);
112 timeRes0_10 =
new TH1F(
prefix+
"timeRes0_10",
"timeRes0_10",200,tmin,tmax);
113 timeRes10_70 =
new TH1F(
prefix+
"timeRes10_70",
"timeRes10_70",200,tmin,tmax);
114 timeRes70_150 =
new TH1F(
prefix+
"timeRes70_150",
"timeRes70_150",200,tmin,tmax);
115 timeRes150_350 =
new TH1F(
prefix+
"timeRes150_350",
"timeRes150_350",200,tmin,tmax);
116 timeRes350_800 =
new TH1F(
prefix+
"timeRes350_800",
"timeRes350_800",200,tmin,tmax);
118 timePull0_10 =
new TH1F(
prefix+
"timePull0_10",
"timePull0_10",200,-7,7);
119 timePull10_70 =
new TH1F(
prefix+
"timePull10_70",
"timePull10_70",200,-7,7);
120 timePull70_150 =
new TH1F(
prefix+
"timePull70_150",
"timePull70_150",200,-7,7);
121 timePull150_350 =
new TH1F(
prefix+
"timePull150_350",
"timePull150_350",200,-7,7);
122 timePull350_800 =
new TH1F(
prefix+
"timePull350_800",
"timePull350_800",200,-7,7);
123 }
else if(
type == 1 ){
124 timeResCor =
new TH1F(
prefix+
"timeResLargeError",
"timeResLargeError",200,tmin,tmax);
125 timePullCor =
new TH1F(
prefix+
"timePullLargError",
"timePullLargError",200,-7,7);
136 float timeTrack = betaUtils.
calculateTof(betaTrack,dist);
144 beta->Fill(betaMeas);
145 float res = t0_-timeTrack;
149 timePull->Fill(
pull);
151 float betaResidual = betaMeas-betaTrack;
152 betaRes->Fill(betaResidual);
153 betaPull->Fill(betaResidual/betaError);
154 float invBetaResidual = invBetaMeas-1./betaTrack;
155 invBetaRes->Fill(invBetaResidual);
156 invBetaPull->Fill(invBetaResidual/invBetaError);
160 error_time->Fill(fullTime,
err);
161 timeResScat->Fill(fullTime,
res);
162 timePullScat->Fill(fullTime,
pull);
164 errorTrack->Fill(errTrk);
165 float errRT = sqrt(
err*
err-errTrk*errTrk);
166 errorRT->Fill(errRT);
167 errorRT_Track->Fill(errRT,errTrk);
169 float pullcor = rescor/
err;
170 timeResCor->Fill(rescor);
171 timePullCor->Fill(pullcor);
172 if( fullTime < 10 ) timeRes0_10->Fill(
res);
173 else if( fullTime < 50 ) timeRes10_70->Fill(
res);
174 else if( fullTime < 150 ) timeRes70_150->Fill(
res);
175 else if( fullTime < 350 ) timeRes150_350->Fill(
res);
176 else timeRes350_800->Fill(
res);
178 if( fullTime < 10 ) timePull0_10->Fill(
pull);
179 else if( fullTime < 50 ) timePull10_70->Fill(
pull);
180 else if( fullTime < 150 ) timePull70_150->Fill(
pull);
181 else if( fullTime < 350 ) timePull150_350->Fill(
pull);
182 else timePull350_800->Fill(
pull);
184 }
else if(
type == 1 &&
err > 7 ){
185 timeResCor->Fill(
res);
186 timePullCor->Fill(
pull);
193 max_pull =
new TH2F(
prefix+
"max_pull",
"max_pull",100,0.,30.,100,-10.,10.);
203 void HoughPlots::fill(
int chIndex_,
float res_,
float pull_,
float exerr_,
float p_,
float max_ ){
205 max_pull->Fill(max_,pull_);
206 all.fill(res_,pull_,exerr_);
207 chamber.fill(chIndex_,res_,pull_,exerr_,p_);
212 t0Trig =
new TH1F(
prefix+
"t0Trig",
"t0Trig",100,-20.,50.);
214 beta2 =
new TH2F(
prefix+
"betaTrack",
"betaTrack",100,.0,2.,100,.0,2.);
215 betaTrig =
new TH1F(
prefix+
"betaTrig",
"betaTrig",100,.0,2.);
216 t0Res =
new TH1F(
prefix+
"t0Res",
"t0Res",200,-15,15);
217 t0ResTrig =
new TH1F(
prefix+
"t0TrigRes",
"t0TrigRes",200,-15,15);
218 betaRes =
new TH1F(
prefix+
"betaRes",
"betaRes",200,-1.2,1.2);
219 betaResTrig =
new TH1F(
prefix+
"betaTrigRes",
"betaTrigRes",200,-1.2,1.2);
222 quality_sector =
new TH2F(
prefix+
"quality_sector",
"quality_sector",6,-0.5,5.5,16,0.5,16.5);
273 float t0_ = (*segments.
t0)[
index]+tof;
278 t0->Fill((*segments.
t0)[
index]);
281 beta2->Fill(betaSeg,betaTrack);
282 betaTrig->Fill(betaSegTrig);
283 t0Res->Fill(t0_-t0Track);
284 t0ResTrig->Fill(t0Trig_-t0Track);
285 betaRes->Fill(betaSeg-betaTrack);
286 betaResTrig->Fill(betaSegTrig-betaTrack);
291 quality_chIndex->Fill(quality_,chIndex_);
292 quality_sector->Fill(quality_,sector_);
297 chi2Ndof =
new TH1F(
prefix+
"chi2Ndof",
"chi2Ndof",100,0,50.);
304 if( ndof_ > 0 ) chi2Ndof->Fill(chi2_/ndof_);
306 res->Fill(beta_-betaTruth_);
328 nseg =
new TH1F(
prefix+
"nseg",
"nseg",10,-0.5,9.5);
331 betaBestCandidate.book(
dir,
prefix+
"best_");
344 etaMissed =
new TH1F(
prefix+
"etaMissed",
"etaMissed",100,-3,3);
345 etaMissedCombined =
new TH1F(
prefix+
"etaMissedCombined",
"etaMissedCombined",100,-3,3);
346 etaBetaMissed =
new TH2F(
prefix+
"etaBetaMissed",
"etaBetaMissed",100,-3,3,100,0.,1.);
347 betaMissed =
new TH1F(
prefix+
"betaMissed",
"betaMissed",100,0.,1.);
348 betaMissedCombined =
new TH1F(
prefix+
"betaMissedCombined",
"betaMissedCombined",100,0.,1.);
349 ncandidates =
new TH1F(
prefix+
"ncandidates",
"ncandidates",10,-0.5,9.5);
350 ncombinedCandidates =
new TH1F(
prefix+
"ncombinedCandidates",
"ncombinedCandidates",10,-0.5,9.5);
351 allCandidates.book(
dir,
prefix+
"allCandidates_");
352 tagCandidates.book(
dir,
prefix+
"tagCandidates_");
353 combinedCandidates.book(
dir,
prefix+
"combinedCandidates_");
361 pdg =
new TH1F(
prefix+
"pdg",
"pdg",31,-15.5,15.5);
362 ntruth =
new TH1F(
prefix+
"ntruth",
"ntruth",10,-0.5,9.5);
363 nseg =
new TH1F(
prefix+
"nseg",
"nseg",10,-0.5,9.5);
364 nseg1 =
new TH1F(
prefix+
"nseg1",
"nseg",10,-0.5,9.5);
365 nseg2 =
new TH1F(
prefix+
"nseg2",
"nseg",10,-0.5,9.5);
366 nseg3 =
new TH1F(
prefix+
"nseg3",
"nseg",10,-0.5,9.5);
367 nhough =
new TH1F(
prefix+
"nhough",
"nhough",10,-0.5,9.5);
368 ntruth_seg =
new TH2F(
prefix+
"ntruth_seg",
"ntruth_seg",10,-0.5,9.5,10,-0.5,9.5);
369 ntruth_seg1 =
new TH2F(
prefix+
"ntruth_seg1",
"ntruth_seg",10,-0.5,9.5,10,-0.5,9.5);
370 ntruth_hough =
new TH2F(
prefix+
"ntruth_hough",
"ntruth_hough",10,-0.5,9.5,10,-0.5,9.5);
372 TDirectory* ldir =
dir->mkdir(
"hits");
376 ldir =
dir->mkdir(
"hough");
380 ldir =
dir->mkdir(
"segments");
382 segments.book(ldir,
prefix+
"s0_");
383 segments1.book(ldir,
prefix+
"s1_");
384 segments2.book(ldir,
prefix+
"s2_");
385 segments3.book(ldir,
prefix+
"s3_");
387 ldir =
dir->mkdir(
"times");
389 std::vector<int> types = { 1,2,10,12,1001,1010};
390 std::vector<std::string>
typeNames = {
"BarrelMDT",
"BarrelRPC",
"BarrelMDTT",
"BarrelRPCT",
"EndcapMDT",
"EndcapMDTT"};
391 for(
unsigned int i=0;
i<types.size();++
i ){
392 auto type = types[
i];
396 timePlots.back().book(ldir,
name,
type);
397 timePlots.back().typeIndex =
type;
401 ldir =
dir->mkdir(
"betaFits");
403 barrel.book(ldir,
prefix+
"barrel_",
true);
404 endcap.book(ldir,
prefix+
"endcap_",
false);
406 ldir =
dir->mkdir(
"candidates");
408 for(
unsigned int i=0;
i<4;++
i ){
409 TString
name =
"stage";
412 candidateStages.back().book(ldir,
name);
424 void TrackPlots::fill(
int ntruth_,
int nseg_,
int nseg1_,
int nseg2_,
int nseg3_,
int nhough_ ) {
425 ntruth->Fill(ntruth_);
430 nhough->Fill(nhough_);
431 ntruth_seg->Fill(ntruth_,nseg_);
432 ntruth_seg1->Fill(ntruth_,nseg1_);
433 ntruth_hough->Fill(ntruth_,nhough_);
438 TDirectory* ndir =
dir->mkdir(
"Muon");
441 ndir =
dir->mkdir(
"Stau");
444 ndir =
dir->mkdir(
"Rest");