11 #include "CbmMvdDigiMatch.h"
28 #include "FairLogger.h"
29 #include "FairTrackParam.h"
36 #include "TGeoManager.h"
54 : FairTask(
"MvdClusterAna")
59 , fMvdDigisMatch(NULL)
60 , fMvdClustersMatch(NULL)
63 , fStsTrackArray(NULL)
64 , fStsTrackMatches(NULL)
80 : FairTask(name, iVerbose)
85 , fMvdDigisMatch(NULL)
86 , fMvdClustersMatch(NULL)
89 , fStsTrackArray(NULL)
90 , fStsTrackMatches(NULL)
111 cout <<
"--------------------------------------------------------------------"
114 <<
"-I- " << GetName() <<
"::Init: "
115 <<
" Start Initilisation " << endl
116 <<
"--------------------------------------------------------------------"
120 FairRootManager* ioman = FairRootManager::Instance();
122 cout <<
"-E- " << GetName() <<
"::Init: "
123 <<
"RootManager not instantised!" << endl;
127 gGeoManager = (TGeoManager*) gROOT->FindObject(
"FAIRGeom");
129 fMcPoints = (TClonesArray*) ioman->GetObject(
"MvdPoint");
130 fMvdDigis = (TClonesArray*) ioman->GetObject(
"MvdDigi");
131 fMvdClusters = (TClonesArray*) ioman->GetObject(
"MvdCluster");
132 fMvdHits = (TClonesArray*) ioman->GetObject(
"MvdHit");
134 fMvdDigisMatch = (TClonesArray*) ioman->GetObject(
"MvdDigiMatch");
136 fMvdHitsMatch = (TClonesArray*) ioman->GetObject(
"MvdHitMatch");
159 fMvdHisto1[0] =
new TH1F(
"Momentum",
"Momentum", 100, 0, 30);
160 fMvdHisto1[1] =
new TH1F(
"Angle",
"Angle", 200, 0, 2);
161 fMvdHisto1[2] =
new TH1F(
"DigisPerHit",
"DigisPerHit", 100, 0, 100);
162 fMvdHisto1[3] =
new TH1F(
"xResidual",
"xResidual", 500, -50, 50);
163 fMvdHisto1[4] =
new TH1F(
"yResidual",
"yResidual", 500, -50, 50);
164 fMvdHisto1[5] =
new TH1F(
"zResidual",
"zResidual", 2000, -20, 20);
165 fMvdHisto1[6] =
new TH1F(
"DistancePixX",
"DistancePixX", 100, -2, 2);
166 fMvdHisto1[7] =
new TH1F(
"DistancePixY",
"DistancePixY", 100, -2, 2);
167 fMvdHisto1[8] =
new TH1F(
"ClusterShape",
"ClusterShape", 10, 0, 10);
168 fMvdHisto1[9] =
new TH1F(
"ChargeSpectrum",
"ChargeSpectrum", 50000, 0, 10000);
169 fMvdHisto1[10] =
new TH1F(
"res_x_shape_0",
"res_x_shape_0", 500, -50, 50);
170 fMvdHisto1[11] =
new TH1F(
"res_x_shape_1",
"res_x_shape_1", 500, -50, 50);
171 fMvdHisto1[12] =
new TH1F(
"res_x_shape_2",
"res_x_shape_2", 500, -50, 50);
172 fMvdHisto1[13] =
new TH1F(
"res_x_shape_3",
"res_x_shape_3", 500, -50, 50);
173 fMvdHisto1[14] =
new TH1F(
"res_x_shape_4",
"res_x_shape_4", 500, -50, 50);
174 fMvdHisto1[15] =
new TH1F(
"res_x_shape_5",
"res_x_shape_5", 500, -50, 50);
175 fMvdHisto1[16] =
new TH1F(
"res_x_shape_6",
"res_x_shape_6", 500, -50, 50);
176 fMvdHisto1[17] =
new TH1F(
"res_x_shape_7",
"res_x_shape_7", 500, -50, 50);
177 fMvdHisto1[18] =
new TH1F(
"res_x_shape_8",
"res_x_shape_8", 500, -50, 50);
178 fMvdHisto1[19] =
new TH1F(
"res_x_shape_9",
"res_x_shape_9", 500, -50, 50);
179 fMvdHisto1[20] =
new TH1F(
"res_y_shape_0",
"res_y_shape_0", 500, -50, 50);
180 fMvdHisto1[21] =
new TH1F(
"res_y_shape_1",
"res_y_shape_1", 500, -50, 50);
181 fMvdHisto1[22] =
new TH1F(
"res_y_shape_2",
"res_y_shape_2", 500, -50, 50);
182 fMvdHisto1[23] =
new TH1F(
"res_y_shape_3",
"res_y_shape_3", 500, -50, 50);
183 fMvdHisto1[24] =
new TH1F(
"res_y_shape_4",
"res_y_shape_4", 500, -50, 50);
184 fMvdHisto1[25] =
new TH1F(
"res_y_shape_5",
"res_y_shape_5", 500, -50, 50);
185 fMvdHisto1[26] =
new TH1F(
"res_y_shape_6",
"res_y_shape_6", 500, -50, 50);
186 fMvdHisto1[27] =
new TH1F(
"res_y_shape_7",
"res_y_shape_7", 500, -50, 50);
187 fMvdHisto1[28] =
new TH1F(
"res_y_shape_8",
"res_y_shape_8", 500, -50, 50);
188 fMvdHisto1[29] =
new TH1F(
"res_y_shape_9",
"res_y_shape_9", 500, -50, 50);
189 fMvdHisto1[30] =
new TH1F(
"DigisPerMC",
"DigisPerMC", 100, 0, 100);
190 fMvdHisto1[31] =
new TH1F(
"HitsPerMC",
"HitsPerMC", 11, 0, 11);
192 new TH1F(
"McPerHit (merged)",
"McPerHit (merged)", 11, 0, 11);
193 fMvdHisto1[33] =
new TH1F(
"xPull",
"xPull", 500, -50, 50);
194 fMvdHisto1[34] =
new TH1F(
"yPull",
"yPull", 500, -50, 50);
195 fMvdHisto1[35] =
new TH1F(
"McPerDigi",
"McPerDigi", 6, 0, 6);
196 fMvdHisto1[36] =
new TH1F(
"McPerHit",
"McPerHit", 11, 0, 11);
198 fMvdHisto2[0] =
new TH2F(
"dxpdyp",
"dxpdyp", 100, -1, 1, 100, -1, 1);
199 fMvdHisto2[1] =
new TH2F(
"dpnorm",
"dpnorm", 100, -1, 1, 100, -1, 1);
200 fMvdHisto2[2] =
new TH2F(
"mom_dx",
"mom_dx", 100, 0, 30, 100, -50, 50);
201 fMvdHisto2[3] =
new TH2F(
"mom_dy",
"mom_dy", 100, 0, 30, 100, -50, 50);
202 fMvdHisto2[4] =
new TH2F(
"ang_dx",
"ang_dx", 100, 0, 2, 100, -50, 50);
203 fMvdHisto2[5] =
new TH2F(
"ang_dy",
"ang_dy", 100, 0, 2, 100, -50, 50);
204 fMvdHisto2[6] =
new TH2F(
"dnr_dx",
"dnr_dx", 100, 0, 100, 100, -50, 50);
205 fMvdHisto2[7] =
new TH2F(
"dnr_dy",
"dnr_dy", 100, 0, 100, 100, -50, 50);
206 fMvdHisto2[8] =
new TH2F(
"dxp_dx",
"dxp_dx", 50, 0, 1, 100, -50, 50);
207 fMvdHisto2[9] =
new TH2F(
"dxp_dy",
"dxp_dy", 50, 0, 1, 100, -50, 50);
208 fMvdHisto2[10] =
new TH2F(
"cha_dx",
"cha_dx", 100, 0, 10000, 100, -50, 50);
209 fMvdHisto2[11] =
new TH2F(
"cha_dy",
"cha_dy", 100, 0, 10000, 100, -50, 50);
211 fMvdHisto2[12] =
new TH2F(
"mom_dz",
"mom_dz", 100, 0, 30, 2000, -20, 20);
212 fMvdHisto2[13] =
new TH2F(
"ang_dz",
"ang_dz", 200, 0, 2, 2000, -20, 20);
213 fMvdHisto2[14] =
new TH2F(
"dx_dy",
"dx_dy", 100, -50, 50, 100, -50, 50);
215 fMvdHisto2[15] =
new TH2F(
"mom_cha",
"mom_cha", 100, 0, 3, 1000, 0, 10000);
216 fMvdHisto2[16] =
new TH2F(
"ang_cha",
"ang_cha", 200, 0, 2, 1000, 0, 10000);
218 new TH2F(
"mom_chacut",
"mom_chacut", 100, 0, 3, 1000, 0, 10000);
219 cout <<
"--------------------------------------------------------------------"
222 <<
"-I- " << GetName() <<
"::Init: "
223 <<
" Finished Initilisation " << endl
224 <<
"--------------------------------------------------------------------"
231 for (Int_t
i = 0;
i < 6;
i++) {
234 for (Int_t
i = 0;
i < 11;
i++) {
247 Int_t nDigis =
fMvdDigis->GetEntriesFast();
249 Int_t nHits =
fMvdHits->GetEntriesFast();
274 CbmMvdDigiMatch* mvdDigiMatch;
283 typedef map<pair<Int_t, Int_t>, Int_t>::iterator it_type;
284 map<pair<Int_t, Int_t>, Int_t> digiMap;
285 pair<Int_t, Int_t> digiCoor;
298 Double_t pitchx, pitchy;
300 Int_t MAXHITS = nHits;
305 Double_t ARR_momentum[MAXHITS];
306 Double_t ARR_angle[MAXHITS];
307 Int_t ARR_digis[MAXHITS];
308 Double_t ARR_dx[MAXHITS];
309 Double_t ARR_dy[MAXHITS];
310 Double_t ARR_dz[MAXHITS];
311 Double_t ARR_dxp[MAXHITS];
312 Double_t ARR_dyp[MAXHITS];
313 UInt_t ARR_shape[MAXHITS];
314 Int_t ARR_charge[MAXHITS];
317 Int_t xaxis, yaxis, xaxismin, xaxismax, yaxismin, yaxismax, xrel, yrel;
329 TGeoVolume* CurrentVolume;
330 TGeoBBox* VolumeShape;
332 std::map<std::pair<std::pair<Int_t, Int_t>, TString>, std::vector<int>>
334 std::map<std::pair<std::pair<Int_t, Int_t>, TString>,
335 std::vector<int>>::iterator it;
336 std::pair<std::pair<Int_t, Int_t>, TString> DigiStation;
337 std::pair<Int_t, Int_t> Digi;
338 std::vector<int> McContrToHitList;
341 std::map<Int_t, Int_t> McInHit;
342 std::map<Int_t, Int_t>::iterator it2;
343 std::vector<int> DigisInMc(nMcpoints, 0);
344 std::map<Int_t, std::vector<int>> McsInHit;
345 std::map<Int_t, std::vector<int>> HitsInMc;
346 std::map<Int_t, std::vector<int>>::iterator it3;
356 for (
int iDigi = 0; iDigi < nDigis; iDigi++) {
361 Int_t nMatchedIndex = mvdDigiMatch->GetMatchedLink().GetIndex();
367 gloMC[0] = (mvdPoint->
GetXOut() + mvdPoint->GetX()) / 2.;
368 gloMC[1] = (mvdPoint->
GetYOut() + mvdPoint->GetY()) / 2.;
369 gloMC[2] = (mvdPoint->
GetZOut() + mvdPoint->GetZ()) / 2.;
371 gGeoManager->FindNode(gloMC[0], gloMC[1], gloMC[2]);
373 CurrentVolume = gGeoManager->GetCurrentVolume();
379 DigiStation.first = Digi;
380 DigiStation.second = CurrentVolume->GetName();
384 for (Int_t iLink = 0; iLink < mvdDigiMatch->GetNofLinks(); iLink++) {
385 McContrList.push_back(mvdDigiMatch->GetLink(iLink).GetIndex());
391 DigisMap[DigiStation] = McContrList;
401 for (Int_t iHit = 0; iHit < nHits; iHit++) {
403 <<
"run next Hit " << iHit <<
" of " << nHits <<
" Hits" << endl;
414 gloMC[0] = (mvdPoint->
GetXOut() + mvdPoint->GetX()) / 2.;
415 gloMC[1] = (mvdPoint->
GetYOut() + mvdPoint->GetY()) / 2.;
416 gloMC[2] = (mvdPoint->
GetZOut() + mvdPoint->GetZ()) / 2.;
418 gloHit[0] = mvdHit->
GetX();
419 gloHit[1] = mvdHit->
GetY();
420 gloHit[2] = mvdHit->
GetZ();
422 gGeoManager->FindNode(gloMC[0], gloMC[1], gloMC[2]);
423 gGeoManager->MasterToLocal(gloMC, locMC);
424 gGeoManager->MasterToLocal(gloHit, locHit);
426 CurrentVolume = gGeoManager->GetCurrentVolume();
427 VolumeShape = (TGeoBBox*) CurrentVolume->GetShape();
435 cOrth.SetXYZ(0., 0., mvdPoint->
GetZOut() - mvdPoint->GetZ());
436 cVect.SetXYZ(mvdPoint->
GetXOut() - mvdPoint->GetX(),
437 mvdPoint->
GetYOut() - mvdPoint->GetY(),
438 mvdPoint->
GetZOut() - mvdPoint->GetZ());
441 digiList = mvdCluster->GetDigiList();
448 McContrToHitList.clear();
449 cout << endl <<
"ping" << endl;
450 for (it_type iterator = digiMap.begin(); iterator != digiMap.end();
452 digiCoor = iterator->first;
453 digiCharge = iterator->second;
454 xaxis = digiCoor.first;
455 yaxis = digiCoor.second;
457 XAXIS[count] = xaxis;
458 YAXIS[count] = yaxis;
466 if (xaxismin > xaxis) { xaxismin = xaxis; }
467 if (xaxismax < xaxis) { xaxismax = xaxis; }
468 if (yaxismin > yaxis) { yaxismin = yaxis; }
469 if (yaxismax < yaxis) { yaxismax = yaxis; }
472 charge += digiCharge;
475 DigiStation.first = digiCoor;
476 DigiStation.second = CurrentVolume->GetName();
478 it = DigisMap.find(DigiStation);
480 McContrList = it->second;
486 cout << endl <<
"ping 2" << endl;
487 for (Int_t iMc = 0; iMc < McContrList.size(); iMc++) {
488 if (std::find(McContrToHitList.begin(),
489 McContrToHitList.end(),
491 == McContrToHitList.end()) {
492 McContrToHitList.push_back(McContrList[iMc]);
495 it2 = McInHit.find(McContrList[iMc]);
497 if (it2 != McInHit.end()) {
498 McInHit[McContrList[iMc]]++;
500 McInHit[McContrList[iMc]] = 1;
509 McsInHit[iHit] = McContrToHitList;
511 if (McInHit.size() < 11) {
517 cout << endl <<
"ping 3" << endl;
518 for (std::map<Int_t, Int_t>::iterator iterator = McInHit.begin();
519 iterator != McInHit.end();
521 DigisInMc[iterator->first] += iterator->second;
524 it3 = HitsInMc.find(iterator->first);
526 if (it3 != HitsInMc.end()) {
527 McContrList = it3->second;
528 McContrList.push_back(iHit);
531 McContrList.push_back(iHit);
534 HitsInMc[iterator->first] = McContrList;
536 cout << endl <<
"ping 4" << endl;
537 if ((xaxismax - xaxismin) < 4 && (yaxismax - yaxismin) < 4) {
541 xrel = XAXIS[
i] - xaxismin;
542 yrel = YAXIS[
i] - yaxismin;
543 POS = xrel + 5 * yrel;
544 shape += TMath::Power(2, POS);
549 }
else if (
shape == 99) {
551 }
else if (
shape == 33) {
553 }
else if (
shape == 7) {
555 }
else if (
shape == 67) {
557 }
else if (
shape == 97) {
559 }
else if (
shape == 35) {
561 }
else if (
shape == 98) {
563 }
else if (
shape == 1) {
571 cout << endl <<
"ping 5" << endl;
572 ARR_momentum[iHit] = mcTrack->
GetP();
573 ARR_angle[iHit] = cVect.Angle(cOrth);
575 ARR_dx[iHit] = 10000 * (locHit[0] - locMC[0]);
576 ARR_dy[iHit] = 10000 * (locHit[1] - locMC[1]);
577 ARR_dz[iHit] = 10000 * (gloHit[2] - gloMC[2]);
579 -(int) (((locMC[0] + VolumeShape->GetDX()) / (1 * pitchx)) - 0.5)
580 + (double) (((locMC[0] + VolumeShape->GetDX()) / (1 * pitchx)) - 0.5);
582 -(int) (((locMC[1] + VolumeShape->GetDY()) / (1 * pitchy)) - 0.5)
583 + (double) (((locMC[1] + VolumeShape->GetDY()) / (1 * pitchy)) - 0.5);
584 ARR_shape[iHit] =
shape;
585 ARR_charge[iHit] = charge;
586 cout << endl <<
"finished this hit" << endl;
590 for (Int_t iHit = 0; iHit < nHits; iHit++) {
591 cout << endl <<
"fill stuff" << endl;
605 fMvdHisto2[0]->Fill(ARR_dxp[iHit], ARR_dyp[iHit], ARR_digis[iHit]);
606 fMvdHisto2[0]->Fill(ARR_dxp[iHit], -ARR_dyp[iHit], ARR_digis[iHit]);
607 fMvdHisto2[0]->Fill(-ARR_dxp[iHit], ARR_dyp[iHit], ARR_digis[iHit]);
608 fMvdHisto2[0]->Fill(-ARR_dxp[iHit], -ARR_dyp[iHit], ARR_digis[iHit]);
609 fMvdHisto2[1]->Fill(ARR_dxp[iHit], ARR_dyp[iHit]);
610 fMvdHisto2[1]->Fill(ARR_dxp[iHit], -ARR_dyp[iHit]);
611 fMvdHisto2[1]->Fill(-ARR_dxp[iHit], ARR_dyp[iHit]);
612 fMvdHisto2[1]->Fill(-ARR_dxp[iHit], -ARR_dyp[iHit]);
613 fMvdHisto2[2]->Fill(ARR_momentum[iHit], ARR_dx[iHit]);
614 fMvdHisto2[3]->Fill(ARR_momentum[iHit], ARR_dy[iHit]);
615 fMvdHisto2[4]->Fill(ARR_angle[iHit], ARR_dx[iHit]);
616 fMvdHisto2[5]->Fill(ARR_angle[iHit], ARR_dy[iHit]);
617 fMvdHisto2[6]->Fill(ARR_digis[iHit], ARR_dx[iHit]);
618 fMvdHisto2[7]->Fill(ARR_digis[iHit], ARR_dy[iHit]);
621 fMvdHisto2[10]->Fill(ARR_charge[iHit], ARR_dx[iHit]);
622 fMvdHisto2[11]->Fill(ARR_charge[iHit], ARR_dy[iHit]);
623 fMvdHisto2[12]->Fill(ARR_momentum[iHit], ARR_dz[iHit]);
624 fMvdHisto2[13]->Fill(ARR_angle[iHit], ARR_dz[iHit]);
625 fMvdHisto2[14]->Fill(ARR_dx[iHit], ARR_dy[iHit]);
630 fMvdHisto2[15]->Fill(ARR_momentum[iHit], ARR_charge[iHit]);
631 fMvdHisto2[16]->Fill(ARR_angle[iHit], ARR_charge[iHit]);
633 if (ARR_angle[iHit] < 0.3) {
634 fMvdHisto2[17]->Fill(ARR_momentum[iHit], ARR_charge[iHit]);
638 for (
int iMc = 0; iMc < nMcpoints; iMc++) {
642 for (std::map<Int_t, std::vector<int>>::iterator iterator = HitsInMc.begin();
643 iterator != HitsInMc.end();
645 McContrList = iterator->second;
651 for (std::map<Int_t, std::vector<int>>::iterator iterator = McsInHit.begin();
652 iterator != McsInHit.end();
656 McContrToHitList = iterator->second;
658 for (
int i = 0;
i < McContrToHitList.size();
i++) {
659 it3 = HitsInMc.find(McContrToHitList[
i]);
661 if (it3 != HitsInMc.end()) {
662 if ((it3->second).size() != 1) { criteria =
false; }
666 if (criteria) {
fMvdHisto1[32]->Fill(McContrToHitList.size()); }
675 cout <<
"======================" << endl;
676 cout <<
"'Mvd QA Output' Start!" << endl;
677 cout <<
"======================" << endl;
679 cout <<
"----------------------" << endl;
680 cout <<
"Pixelpitch: " << endl;
685 cout <<
"----------------------" << endl;
686 cout <<
"MC points per Digi:" << endl;
688 for (Int_t
i = 0;
i < 6;
i++) {
691 for (Int_t
i = 0;
i < 6;
i++) {
697 cout <<
"----------------------" << endl;
698 cout <<
"Digis per MC Point:" << endl;
699 for (Int_t
i = 0;
i < 11;
i++) {
701 printf(
" %2i %10i %6.5f \n",
707 cout <<
" .." << endl;
709 cout <<
"----------------------" << endl;
710 cout <<
"Digis per Hit:" << endl;
711 for (Int_t
i = 0;
i < 11;
i++) {
713 printf(
" %2i %10i %6.5f \n",
719 cout <<
" .." << endl;
721 cout <<
"----------------------" << endl;
722 cout <<
"Hits per MC Point:" << endl;
723 for (Int_t
i = 0;
i < 11;
i++) {
725 printf(
" %2i %10i %6.5f \n",
731 cout <<
" .." << endl;
733 cout <<
"----------------------" << endl;
734 cout <<
"MC Points per Hit:" << endl;
736 for (Int_t
i = 0;
i < 11;
i++) {
739 for (Int_t
i = 0;
i < 11;
i++) {
744 cout <<
"----------------------" << endl;
745 cout <<
"MC Points per Hit (merged Clusters):" << endl;
746 for (Int_t
i = 0;
i < 11;
i++) {
748 printf(
" %2i %10i %6.5f \n",
754 cout <<
" .." << endl;
756 cout <<
"----------------------" << endl;
761 TF1* gFitx =
new TF1(
"gausx",
"gaus", -50, 50);
762 TF1* gFity =
new TF1(
"gausy",
"gaus", -50, 50);
767 gFitx->GetParameters(&xpar[0]);
768 gFity->GetParameters(&ypar[0]);
772 <<
"---------------------------------------------------------------------"
774 cout <<
"Resolution:" << endl;
777 <<
"---------------------------------------------------------------------"
779 cout << setw(9) <<
" Shape";
780 cout << setw(10) <<
" Mean(x)";
781 cout << setw(10) <<
" RMS(x)";
782 cout << setw(10) <<
" Mean(y)";
783 cout << setw(10) <<
" RMS(y)";
784 cout << setw(10) <<
" Mean(z)";
785 cout << setw(10) <<
" RMS(z)";
789 <<
"---------------------------------------------------------------------";
792 for (
int i = 0;
i < 10;
i++) {
793 printf(
"%6i %+5.4f %+5.4f %+5.4f %+5.4f \n",
802 <<
"---------------------------------------------------------------------"
804 printf(
"%10s%+5.4f %+5.4f %+5.4f %+5.4f %+5.4f %+5.4f \n",
812 printf(
"%10s%+5.4f %+5.4f %+5.4f %+5.4f \n",
821 <<
"---------------------------------------------------------------------"
826 gFitx->GetParameters(&xpar[0]);
827 gFity->GetParameters(&ypar[0]);
828 cout <<
"Pulls:" << endl;
829 printf(
"%10s%+5.4f %+5.4f %+5.4f %+5.4f \n",
835 printf(
"%10s%+5.4f %+5.4f %+5.4f %+5.4f \n",
841 cout <<
"(Using 3.8(x) and 4.8(y) as nominal resolution!)" << endl;
844 <<
"---------------------------------------------------------------------"
848 <<
"---------------------------------------------------------------------"
855 <<
"---------------------------------------------------------------------"
858 cout <<
"======================" << endl;
859 cout <<
"'Mvd QA Output' End!" << endl;
860 cout <<
"======================" << endl;
863 TCanvas* a =
new TCanvas(
"Residuals",
"Residuals");
868 fMvdHisto1[3]->GetXaxis()->SetTitle(
"Residual in x [um]");
869 fMvdHisto1[3]->GetYaxis()->SetTitle(
"Entries");
873 fMvdHisto1[4]->GetXaxis()->SetTitle(
"Residual in y [um]");
874 fMvdHisto1[4]->GetYaxis()->SetTitle(
"Entries");
878 fMvdHisto1[5]->GetXaxis()->SetTitle(
"Residual in z [um]");
879 fMvdHisto1[5]->GetYaxis()->SetTitle(
"Entries");
883 fMvdHisto1[33]->GetXaxis()->SetTitle(
"Pull in x [um]");
884 fMvdHisto1[33]->GetYaxis()->SetTitle(
"Entries");
888 fMvdHisto1[34]->GetXaxis()->SetTitle(
"Pull in y [um]");
889 fMvdHisto1[34]->GetYaxis()->SetTitle(
"Entries");
891 int col[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 11};
893 TLegend* leg =
new TLegend(0.1, 0.7, 0.48, 0.9);
896 for (
int i = 0;
i < 10;
i++) {
899 fMvdHisto1[10 +
i]->GetXaxis()->SetTitle(
"Residual in x [um]");
900 fMvdHisto1[10 +
i]->GetYaxis()->SetTitle(
"Entries");
910 for (
int i = 0;
i < 10;
i++) {
913 fMvdHisto1[20 +
i]->GetXaxis()->SetTitle(
"Residual in y [um]");
914 fMvdHisto1[20 +
i]->GetYaxis()->SetTitle(
"Entries");
922 TCanvas* b =
new TCanvas(
"Matches",
"Matches");
927 fMvdHisto1[35]->GetXaxis()->SetTitle(
"Mc Points per Digi");
928 fMvdHisto1[35]->GetYaxis()->SetTitle(
"Entries");
932 fMvdHisto1[30]->GetXaxis()->SetTitle(
"Digis per Mc Point");
933 fMvdHisto1[30]->GetYaxis()->SetTitle(
"Entries");
937 fMvdHisto1[2]->GetXaxis()->SetTitle(
"Digis per Hit");
938 fMvdHisto1[2]->GetYaxis()->SetTitle(
"Entries");
942 fMvdHisto1[31]->GetXaxis()->SetTitle(
"Hits per Mc Point");
943 fMvdHisto1[31]->GetYaxis()->SetTitle(
"Entries");
947 fMvdHisto1[36]->GetXaxis()->SetTitle(
"Mc Points per Hit");
948 fMvdHisto1[36]->GetYaxis()->SetTitle(
"Entries");
952 fMvdHisto1[32]->GetXaxis()->SetTitle(
"Mc Points per Hit (merged)");
953 fMvdHisto1[32]->GetYaxis()->SetTitle(
"Entries");
955 TCanvas*
d =
new TCanvas(
"ResAna",
"ResAna");
969 fProf[0]->GetXaxis()->SetTitle(
"Momentum [GeV]");
970 fProf[0]->GetYaxis()->SetTitle(
"Residual in x [um]");
974 fProf[1]->GetXaxis()->SetTitle(
"Momentum [GeV]");
975 fProf[1]->GetYaxis()->SetTitle(
"Residual in y [um]");
979 fProf[2]->GetXaxis()->SetTitle(
"Angle [rad]");
980 fProf[2]->GetYaxis()->SetTitle(
"Residual in x [um]");
984 fProf[3]->GetXaxis()->SetTitle(
"Angle [rad]");
985 fProf[3]->GetYaxis()->SetTitle(
"Residual in y [um]");
989 fProf[4]->GetXaxis()->SetTitle(
"Digis per Hit");
990 fProf[4]->GetYaxis()->SetTitle(
"Residual in x [um]");
994 fProf[5]->GetXaxis()->SetTitle(
"Digis per Hit");
995 fProf[5]->GetYaxis()->SetTitle(
"Residual in y [um]");
999 fProf[6]->GetXaxis()->SetTitle(
"Charge");
1000 fProf[6]->GetYaxis()->SetTitle(
"Residual in x [um]");
1004 fProf[7]->GetXaxis()->SetTitle(
"Charge");
1005 fProf[7]->GetYaxis()->SetTitle(
"Residual in y [um]");
1007 TCanvas* c =
new TCanvas(
"Rest",
"Rest");
1012 fMvdHisto1[0]->GetXaxis()->SetTitle(
"Momentum [GeV]");
1013 fMvdHisto1[0]->GetYaxis()->SetTitle(
"Entries");
1017 fMvdHisto1[1]->GetXaxis()->SetTitle(
"Angle [rad]");
1018 fMvdHisto1[1]->GetYaxis()->SetTitle(
"Entries");
1022 fMvdHisto1[2]->GetXaxis()->SetTitle(
"Digis per Hit");
1023 fMvdHisto1[2]->GetYaxis()->SetTitle(
"Entries");
1027 fMvdHisto2[14]->GetXaxis()->SetTitle(
"Residual in x [um]");
1028 fMvdHisto2[14]->GetYaxis()->SetTitle(
"Residual in y [um]");
1029 fMvdHisto2[14]->GetZaxis()->SetTitle(
"Entries");
1033 fMvdHisto2[15]->GetXaxis()->SetTitle(
"Momentum [GeV]");
1034 fMvdHisto2[15]->GetYaxis()->SetTitle(
"Charge");
1035 fMvdHisto2[15]->GetZaxis()->SetTitle(
"Entries");
1039 fMvdHisto2[16]->GetXaxis()->SetTitle(
"Angle [rad]");
1040 fMvdHisto2[16]->GetYaxis()->SetTitle(
"Charge");
1041 fMvdHisto2[16]->GetZaxis()->SetTitle(
"Entries");
1045 fMvdHisto1[6]->GetXaxis()->SetTitle(
"Distance to Pixel in x [Pixelpitch]");
1046 fMvdHisto1[6]->GetYaxis()->SetTitle(
"Entries");
1050 fMvdHisto1[7]->GetXaxis()->SetTitle(
"Distance to Pixel in y [Pixelpitch]");
1051 fMvdHisto1[7]->GetYaxis()->SetTitle(
"Entries");
1055 fMvdHisto1[8]->GetXaxis()->SetTitle(
"Clustershape");
1056 fMvdHisto1[8]->GetYaxis()->SetTitle(
"Entries");
1060 fMvdHisto1[9]->GetXaxis()->SetTitle(
"Charge");
1061 fMvdHisto1[9]->GetYaxis()->SetTitle(
"Entries");
1069 fProf[8]->GetXaxis()->SetTitle(
"Momentum [GeV]");
1070 fProf[8]->GetYaxis()->SetTitle(
"Charge");
1071 fProf[10]->Draw(
"same");
1072 fProf[10]->SetLineColor(2);
1076 fProf[9]->GetXaxis()->SetTitle(
"Angle [rad]");
1077 fProf[9]->GetYaxis()->SetTitle(
"Charge");