115 LOG(info) << GetName() <<
"::Init: Start Initilisation ";
117 FairRootManager* ioman = FairRootManager::Instance();
119 LOG(error) << GetName() <<
"::Init: RootManager not instantised!";
123 gGeoManager = (TGeoManager*) gROOT->FindObject(
"FAIRGeom");
125 fMcPoints = (TClonesArray*) ioman->GetObject(
"MvdPoint");
126 fMvdDigis = (TClonesArray*) ioman->GetObject(
"MvdDigi");
127 fMvdClusters = (TClonesArray*) ioman->GetObject(
"MvdCluster");
128 fMvdHits = (TClonesArray*) ioman->GetObject(
"MvdHit");
130 fMvdDigisMatch = (TClonesArray*) ioman->GetObject(
"MvdDigiMatch");
132 fMvdHitsMatch = (TClonesArray*) ioman->GetObject(
"MvdHitMatch");
155 fMvdHisto1[0] =
new TH1F(
"Momentum",
"Momentum", 100, 0, 30);
156 fMvdHisto1[1] =
new TH1F(
"Angle",
"Angle", 200, 0, 2);
157 fMvdHisto1[2] =
new TH1F(
"DigisPerHit",
"DigisPerHit", 100, 0, 100);
158 fMvdHisto1[3] =
new TH1F(
"xResidual",
"xResidual", 500, -50, 50);
159 fMvdHisto1[4] =
new TH1F(
"yResidual",
"yResidual", 500, -50, 50);
160 fMvdHisto1[5] =
new TH1F(
"zResidual",
"zResidual", 2000, -20, 20);
161 fMvdHisto1[6] =
new TH1F(
"DistancePixX",
"DistancePixX", 100, -2, 2);
162 fMvdHisto1[7] =
new TH1F(
"DistancePixY",
"DistancePixY", 100, -2, 2);
163 fMvdHisto1[8] =
new TH1F(
"ClusterShape",
"ClusterShape", 10, 0, 10);
164 fMvdHisto1[9] =
new TH1F(
"ChargeSpectrum",
"ChargeSpectrum", 50000, 0, 10000);
165 fMvdHisto1[10] =
new TH1F(
"res_x_shape_0",
"res_x_shape_0", 500, -50, 50);
166 fMvdHisto1[11] =
new TH1F(
"res_x_shape_1",
"res_x_shape_1", 500, -50, 50);
167 fMvdHisto1[12] =
new TH1F(
"res_x_shape_2",
"res_x_shape_2", 500, -50, 50);
168 fMvdHisto1[13] =
new TH1F(
"res_x_shape_3",
"res_x_shape_3", 500, -50, 50);
169 fMvdHisto1[14] =
new TH1F(
"res_x_shape_4",
"res_x_shape_4", 500, -50, 50);
170 fMvdHisto1[15] =
new TH1F(
"res_x_shape_5",
"res_x_shape_5", 500, -50, 50);
171 fMvdHisto1[16] =
new TH1F(
"res_x_shape_6",
"res_x_shape_6", 500, -50, 50);
172 fMvdHisto1[17] =
new TH1F(
"res_x_shape_7",
"res_x_shape_7", 500, -50, 50);
173 fMvdHisto1[18] =
new TH1F(
"res_x_shape_8",
"res_x_shape_8", 500, -50, 50);
174 fMvdHisto1[19] =
new TH1F(
"res_x_shape_9",
"res_x_shape_9", 500, -50, 50);
175 fMvdHisto1[20] =
new TH1F(
"res_y_shape_0",
"res_y_shape_0", 500, -50, 50);
176 fMvdHisto1[21] =
new TH1F(
"res_y_shape_1",
"res_y_shape_1", 500, -50, 50);
177 fMvdHisto1[22] =
new TH1F(
"res_y_shape_2",
"res_y_shape_2", 500, -50, 50);
178 fMvdHisto1[23] =
new TH1F(
"res_y_shape_3",
"res_y_shape_3", 500, -50, 50);
179 fMvdHisto1[24] =
new TH1F(
"res_y_shape_4",
"res_y_shape_4", 500, -50, 50);
180 fMvdHisto1[25] =
new TH1F(
"res_y_shape_5",
"res_y_shape_5", 500, -50, 50);
181 fMvdHisto1[26] =
new TH1F(
"res_y_shape_6",
"res_y_shape_6", 500, -50, 50);
182 fMvdHisto1[27] =
new TH1F(
"res_y_shape_7",
"res_y_shape_7", 500, -50, 50);
183 fMvdHisto1[28] =
new TH1F(
"res_y_shape_8",
"res_y_shape_8", 500, -50, 50);
184 fMvdHisto1[29] =
new TH1F(
"res_y_shape_9",
"res_y_shape_9", 500, -50, 50);
185 fMvdHisto1[30] =
new TH1F(
"DigisPerMC",
"DigisPerMC", 100, 0, 100);
186 fMvdHisto1[31] =
new TH1F(
"HitsPerMC",
"HitsPerMC", 11, 0, 11);
187 fMvdHisto1[32] =
new TH1F(
"McPerHit (merged)",
"McPerHit (merged)", 11, 0, 11);
188 fMvdHisto1[33] =
new TH1F(
"xPull",
"xPull", 500, -50, 50);
189 fMvdHisto1[34] =
new TH1F(
"yPull",
"yPull", 500, -50, 50);
190 fMvdHisto1[35] =
new TH1F(
"McPerDigi",
"McPerDigi", 6, 0, 6);
191 fMvdHisto1[36] =
new TH1F(
"McPerHit",
"McPerHit", 11, 0, 11);
193 fMvdHisto2[0] =
new TH2F(
"dxpdyp",
"dxpdyp", 100, -1, 1, 100, -1, 1);
194 fMvdHisto2[1] =
new TH2F(
"dpnorm",
"dpnorm", 100, -1, 1, 100, -1, 1);
195 fMvdHisto2[2] =
new TH2F(
"mom_dx",
"mom_dx", 100, 0, 30, 100, -50, 50);
196 fMvdHisto2[3] =
new TH2F(
"mom_dy",
"mom_dy", 100, 0, 30, 100, -50, 50);
197 fMvdHisto2[4] =
new TH2F(
"ang_dx",
"ang_dx", 100, 0, 2, 100, -50, 50);
198 fMvdHisto2[5] =
new TH2F(
"ang_dy",
"ang_dy", 100, 0, 2, 100, -50, 50);
199 fMvdHisto2[6] =
new TH2F(
"dnr_dx",
"dnr_dx", 100, 0, 100, 100, -50, 50);
200 fMvdHisto2[7] =
new TH2F(
"dnr_dy",
"dnr_dy", 100, 0, 100, 100, -50, 50);
201 fMvdHisto2[8] =
new TH2F(
"dxp_dx",
"dxp_dx", 50, 0, 1, 100, -50, 50);
202 fMvdHisto2[9] =
new TH2F(
"dxp_dy",
"dxp_dy", 50, 0, 1, 100, -50, 50);
203 fMvdHisto2[10] =
new TH2F(
"cha_dx",
"cha_dx", 100, 0, 10000, 100, -50, 50);
204 fMvdHisto2[11] =
new TH2F(
"cha_dy",
"cha_dy", 100, 0, 10000, 100, -50, 50);
206 fMvdHisto2[12] =
new TH2F(
"mom_dz",
"mom_dz", 100, 0, 30, 2000, -20, 20);
207 fMvdHisto2[13] =
new TH2F(
"ang_dz",
"ang_dz", 200, 0, 2, 2000, -20, 20);
208 fMvdHisto2[14] =
new TH2F(
"dx_dy",
"dx_dy", 100, -50, 50, 100, -50, 50);
210 fMvdHisto2[15] =
new TH2F(
"mom_cha",
"mom_cha", 100, 0, 3, 1000, 0, 10000);
211 fMvdHisto2[16] =
new TH2F(
"ang_cha",
"ang_cha", 200, 0, 2, 1000, 0, 10000);
212 fMvdHisto2[17] =
new TH2F(
"mom_chacut",
"mom_chacut", 100, 0, 3, 1000, 0, 10000);
213 LOG(info) << GetName() <<
"::Init: Finished Initilisation ";
218 for (Int_t i = 0; i < 6; i++) {
221 for (Int_t i = 0; i < 11; i++) {
233 Int_t nMcpoints =
fMcPoints->GetEntriesFast();
234 Int_t nDigis =
fMvdDigis->GetEntriesFast();
236 Int_t nHits =
fMvdHits->GetEntriesFast();
261 CbmMvdDigiMatch* mvdDigiMatch;
270 typedef map<pair<Int_t, Int_t>, Int_t>::iterator it_type;
271 map<pair<Int_t, Int_t>, Int_t> digiMap;
272 pair<Int_t, Int_t> digiCoor;
285 Double_t pitchx, pitchy;
287 Int_t MAXHITS = nHits;
292 Double_t ARR_momentum[MAXHITS];
293 Double_t ARR_angle[MAXHITS];
294 Int_t ARR_digis[MAXHITS];
295 Double_t ARR_dx[MAXHITS];
296 Double_t ARR_dy[MAXHITS];
297 Double_t ARR_dz[MAXHITS];
298 Double_t ARR_dxp[MAXHITS];
299 Double_t ARR_dyp[MAXHITS];
300 UInt_t ARR_shape[MAXHITS];
301 Int_t ARR_charge[MAXHITS];
304 Int_t xaxis, yaxis, xaxismin, xaxismax, yaxismin, yaxismax, xrel, yrel;
316 TGeoVolume* CurrentVolume;
317 TGeoBBox* VolumeShape;
319 std::map<std::pair<std::pair<Int_t, Int_t>, TString>, std::vector<int>> DigisMap;
320 std::map<std::pair<std::pair<Int_t, Int_t>, TString>, std::vector<int>>::iterator it;
321 std::pair<std::pair<Int_t, Int_t>, TString> DigiStation;
322 std::pair<Int_t, Int_t> Digi;
323 std::vector<int> McContrToHitList;
324 std::vector<int> McContrList;
325 std::map<Int_t, Int_t> McInHit;
326 std::map<Int_t, Int_t>::iterator it2;
327 std::vector<int> DigisInMc(nMcpoints, 0);
328 std::map<Int_t, std::vector<int>> McsInHit;
329 std::map<Int_t, std::vector<int>> HitsInMc;
330 std::map<Int_t, std::vector<int>>::iterator it3;
340 for (
int iDigi = 0; iDigi < nDigis; iDigi++) {
345 Int_t nMatchedIndex = mvdDigiMatch->GetMatchedLink().GetIndex();
350 gloMC[0] = (mvdPoint->
GetXOut() + mvdPoint->GetX()) / 2.;
351 gloMC[1] = (mvdPoint->
GetYOut() + mvdPoint->GetY()) / 2.;
352 gloMC[2] = (mvdPoint->
GetZOut() + mvdPoint->GetZ()) / 2.;
354 gGeoManager->FindNode(gloMC[0], gloMC[1], gloMC[2]);
356 CurrentVolume = gGeoManager->GetCurrentVolume();
362 DigiStation.first = Digi;
363 DigiStation.second = CurrentVolume->GetName();
367 for (Int_t iLink = 0; iLink < mvdDigiMatch->GetNofLinks(); iLink++) {
368 McContrList.push_back(mvdDigiMatch->GetLink(iLink).GetIndex());
374 DigisMap[DigiStation] = McContrList;
384 for (Int_t iHit = 0; iHit < nHits; iHit++) {
385 LOG(info) <<
"run next Hit " << iHit <<
" of " << nHits <<
" Hits";
396 gloMC[0] = (mvdPoint->
GetXOut() + mvdPoint->GetX()) / 2.;
397 gloMC[1] = (mvdPoint->
GetYOut() + mvdPoint->GetY()) / 2.;
398 gloMC[2] = (mvdPoint->
GetZOut() + mvdPoint->GetZ()) / 2.;
400 gloHit[0] = mvdHit->
GetX();
401 gloHit[1] = mvdHit->
GetY();
402 gloHit[2] = mvdHit->
GetZ();
404 gGeoManager->FindNode(gloMC[0], gloMC[1], gloMC[2]);
405 gGeoManager->MasterToLocal(gloMC, locMC);
406 gGeoManager->MasterToLocal(gloHit, locHit);
408 CurrentVolume = gGeoManager->GetCurrentVolume();
409 VolumeShape = (TGeoBBox*) CurrentVolume->GetShape();
411 locRef[0] = (mvdHit->
GetIndexCentralX() + 0.5) * pitchx - VolumeShape->GetDX();
412 locRef[1] = (mvdHit->
GetIndexCentralY() + 0.5) * pitchy - VolumeShape->GetDY();
415 cOrth.SetXYZ(0., 0., mvdPoint->
GetZOut() - mvdPoint->GetZ());
416 cVect.SetXYZ(mvdPoint->
GetXOut() - mvdPoint->GetX(), mvdPoint->
GetYOut() - mvdPoint->GetY(),
417 mvdPoint->
GetZOut() - mvdPoint->GetZ());
420 digiList = mvdCluster->GetDigiList();
427 McContrToHitList.clear();
428 for (it_type iterator = digiMap.begin(); iterator != digiMap.end(); iterator++) {
429 digiCoor = iterator->first;
430 digiCharge = iterator->second;
431 xaxis = digiCoor.first;
432 yaxis = digiCoor.second;
434 XAXIS[count] = xaxis;
435 YAXIS[count] = yaxis;
444 if (xaxismin > xaxis) { xaxismin = xaxis; }
445 if (xaxismax < xaxis) { xaxismax = xaxis; }
446 if (yaxismin > yaxis) { yaxismin = yaxis; }
447 if (yaxismax < yaxis) { yaxismax = yaxis; }
450 charge += digiCharge;
453 DigiStation.first = digiCoor;
454 DigiStation.second = CurrentVolume->GetName();
456 it = DigisMap.find(DigiStation);
458 McContrList = it->second;
463 for (Int_t iMc = 0; iMc < McContrList.size(); iMc++) {
464 if (std::find(McContrToHitList.begin(), McContrToHitList.end(), McContrList[iMc]) == McContrToHitList.end()) {
465 McContrToHitList.push_back(McContrList[iMc]);
468 it2 = McInHit.find(McContrList[iMc]);
470 if (it2 != McInHit.end()) { McInHit[McContrList[iMc]]++; }
472 McInHit[McContrList[iMc]] = 1;
481 McsInHit[iHit] = McContrToHitList;
483 if (McInHit.size() < 11) {
fMcperHit[McInHit.size()]++; }
488 for (std::map<Int_t, Int_t>::iterator iterator = McInHit.begin(); iterator != McInHit.end(); iterator++) {
489 DigisInMc[iterator->first] += iterator->second;
492 it3 = HitsInMc.find(iterator->first);
494 if (it3 != HitsInMc.end()) {
495 McContrList = it3->second;
496 McContrList.push_back(iHit);
500 McContrList.push_back(iHit);
503 HitsInMc[iterator->first] = McContrList;
505 if ((xaxismax - xaxismin) < 4 && (yaxismax - yaxismin) < 4) {
508 for (
int i = 0; i < mvdCluster->
GetNofDigis(); i++) {
509 xrel = XAXIS[i] - xaxismin;
510 yrel = YAXIS[i] - yaxismin;
511 POS = xrel + 5 * yrel;
512 shape += TMath::Power(2, POS);
516 else if (
shape == 99) {
519 else if (
shape == 33) {
522 else if (
shape == 7) {
525 else if (
shape == 67) {
528 else if (
shape == 97) {
531 else if (
shape == 35) {
534 else if (
shape == 98) {
537 else if (
shape == 1) {
547 ARR_momentum[iHit] = mcTrack->
GetP();
548 ARR_angle[iHit] = cVect.Angle(cOrth);
550 ARR_dx[iHit] = 10000 * (locHit[0] - locMC[0]);
551 ARR_dy[iHit] = 10000 * (locHit[1] - locMC[1]);
552 ARR_dz[iHit] = 10000 * (gloHit[2] - gloMC[2]);
553 ARR_dxp[iHit] = -(int) (((locMC[0] + VolumeShape->GetDX()) / (1 * pitchx)) - 0.5)
554 + (double) (((locMC[0] + VolumeShape->GetDX()) / (1 * pitchx)) - 0.5);
555 ARR_dyp[iHit] = -(int) (((locMC[1] + VolumeShape->GetDY()) / (1 * pitchy)) - 0.5)
556 + (double) (((locMC[1] + VolumeShape->GetDY()) / (1 * pitchy)) - 0.5);
557 ARR_shape[iHit] =
shape;
558 ARR_charge[iHit] = charge;
562 for (Int_t iHit = 0; iHit < nHits; iHit++) {
563 LOG(debug) <<
"fill stuff";
577 fMvdHisto2[0]->Fill(ARR_dxp[iHit], ARR_dyp[iHit], ARR_digis[iHit]);
578 fMvdHisto2[0]->Fill(ARR_dxp[iHit], -ARR_dyp[iHit], ARR_digis[iHit]);
579 fMvdHisto2[0]->Fill(-ARR_dxp[iHit], ARR_dyp[iHit], ARR_digis[iHit]);
580 fMvdHisto2[0]->Fill(-ARR_dxp[iHit], -ARR_dyp[iHit], ARR_digis[iHit]);
581 fMvdHisto2[1]->Fill(ARR_dxp[iHit], ARR_dyp[iHit]);
582 fMvdHisto2[1]->Fill(ARR_dxp[iHit], -ARR_dyp[iHit]);
583 fMvdHisto2[1]->Fill(-ARR_dxp[iHit], ARR_dyp[iHit]);
584 fMvdHisto2[1]->Fill(-ARR_dxp[iHit], -ARR_dyp[iHit]);
585 fMvdHisto2[2]->Fill(ARR_momentum[iHit], ARR_dx[iHit]);
586 fMvdHisto2[3]->Fill(ARR_momentum[iHit], ARR_dy[iHit]);
587 fMvdHisto2[4]->Fill(ARR_angle[iHit], ARR_dx[iHit]);
588 fMvdHisto2[5]->Fill(ARR_angle[iHit], ARR_dy[iHit]);
589 fMvdHisto2[6]->Fill(ARR_digis[iHit], ARR_dx[iHit]);
590 fMvdHisto2[7]->Fill(ARR_digis[iHit], ARR_dy[iHit]);
593 fMvdHisto2[10]->Fill(ARR_charge[iHit], ARR_dx[iHit]);
594 fMvdHisto2[11]->Fill(ARR_charge[iHit], ARR_dy[iHit]);
595 fMvdHisto2[12]->Fill(ARR_momentum[iHit], ARR_dz[iHit]);
596 fMvdHisto2[13]->Fill(ARR_angle[iHit], ARR_dz[iHit]);
597 fMvdHisto2[14]->Fill(ARR_dx[iHit], ARR_dy[iHit]);
602 fMvdHisto2[15]->Fill(ARR_momentum[iHit], ARR_charge[iHit]);
603 fMvdHisto2[16]->Fill(ARR_angle[iHit], ARR_charge[iHit]);
605 if (ARR_angle[iHit] < 0.3) {
fMvdHisto2[17]->Fill(ARR_momentum[iHit], ARR_charge[iHit]); }
608 for (
int iMc = 0; iMc < nMcpoints; iMc++) {
612 for (std::map<Int_t, std::vector<int>>::iterator iterator = HitsInMc.begin(); iterator != HitsInMc.end();
614 McContrList = iterator->second;
620 for (std::map<Int_t, std::vector<int>>::iterator iterator = McsInHit.begin(); iterator != McsInHit.end();
624 McContrToHitList = iterator->second;
626 for (
int i = 0; i < McContrToHitList.size(); i++) {
627 it3 = HitsInMc.find(McContrToHitList[i]);
629 if (it3 != HitsInMc.end()) {
630 if ((it3->second).size() != 1) { criteria =
false; }
634 if (criteria) {
fMvdHisto1[32]->Fill(McContrToHitList.size()); }
644 LOG(info) <<
"======================";
645 LOG(info) <<
"'Mvd QA Output' Start!";
646 LOG(info) <<
"======================";
648 LOG(info) <<
"----------------------";
649 LOG(info) <<
"Pixelpitch: ";
654 LOG(info) <<
"----------------------";
655 LOG(info) <<
"MC points per Digi:";
657 for (Int_t i = 0; i < 6; i++) {
660 for (Int_t i = 0; i < 6; i++) {
665 LOG(info) <<
"----------------------";
666 LOG(info) <<
"Digis per MC Point:";
667 for (Int_t i = 0; i < 11; i++) {
669 printf(
" %2i %10i %6.5f \n", (
int) (
fMvdHisto1[30]->GetBinCenter(i)),
675 LOG(info) <<
"----------------------";
676 LOG(info) <<
"Digis per Hit:";
677 for (Int_t i = 0; i < 11; i++) {
679 printf(
" %2i %10i %6.5f \n", (
int) (
fMvdHisto1[2]->GetBinCenter(i)), (
int) (
fMvdHisto1[2]->GetBinContent(i)),
684 LOG(info) <<
"----------------------";
685 LOG(info) <<
"Hits per MC Point:";
686 for (Int_t i = 0; i < 11; i++) {
688 printf(
" %2i %10i %6.5f \n", (
int) (
fMvdHisto1[31]->GetBinCenter(i)),
694 LOG(info) <<
"----------------------";
695 LOG(info) <<
"MC Points per Hit:";
697 for (Int_t i = 0; i < 11; i++) {
700 for (Int_t i = 0; i < 11; i++) {
705 LOG(info) <<
"----------------------";
706 LOG(info) <<
"MC Points per Hit (merged Clusters):";
707 for (Int_t i = 0; i < 11; i++) {
709 printf(
" %2i %10i %6.5f \n", (
int) (
fMvdHisto1[32]->GetBinCenter(i)),
715 LOG(info) <<
"----------------------";
720 TF1* gFitx =
new TF1(
"gausx",
"gaus", -50, 50);
721 TF1* gFity =
new TF1(
"gausy",
"gaus", -50, 50);
726 gFitx->GetParameters(&xpar[0]);
727 gFity->GetParameters(&ypar[0]);
729 LOG(info) << setw(40) <<
"---------------------------------------------------------------------";
730 LOG(info) <<
"Resolution:";
731 LOG(info) << setw(40) <<
"---------------------------------------------------------------------";
732 LOG(info) << setw(9) <<
" Shape";
733 LOG(info) << setw(10) <<
" Mean(x)";
734 LOG(info) << setw(10) <<
" RMS(x)";
735 LOG(info) << setw(10) <<
" Mean(y)";
736 LOG(info) << setw(10) <<
" RMS(y)";
737 LOG(info) << setw(10) <<
" Mean(z)";
738 LOG(info) << setw(10) <<
" RMS(z)";
740 LOG(info) << setw(40) <<
"---------------------------------------------------------------------";
743 for (
int i = 0; i < 10; i++) {
744 printf(
"%6i %+5.4f %+5.4f %+5.4f %+5.4f \n", i,
fMvdHisto1[10 + i]->GetMean(),
747 LOG(info) << setw(40) <<
"---------------------------------------------------------------------";
748 printf(
"%10s%+5.4f %+5.4f %+5.4f %+5.4f %+5.4f %+5.4f \n",
"All ",
fMvdHisto1[3]->GetMean(),
751 printf(
"%10s%+5.4f %+5.4f %+5.4f %+5.4f \n",
"All (Fit) ", xpar[1], xpar[2], ypar[1], ypar[2]);
753 LOG(info) << setw(40) <<
"---------------------------------------------------------------------";
757 gFitx->GetParameters(&xpar[0]);
758 gFity->GetParameters(&ypar[0]);
759 LOG(info) <<
"Pulls:";
760 printf(
"%10s%+5.4f %+5.4f %+5.4f %+5.4f \n",
"All ",
fMvdHisto1[33]->GetMean(),
fMvdHisto1[33]->GetRMS(),
762 printf(
"%10s%+5.4f %+5.4f %+5.4f %+5.4f \n",
"All (Fit) ", xpar[1], xpar[2], ypar[1], ypar[2]);
763 LOG(info) <<
"(Using 3.8(x) and 4.8(y) as nominal resolution!)";
764 LOG(info) << setw(40) <<
"---------------------------------------------------------------------";
765 LOG(info) << setw(40) <<
"---------------------------------------------------------------------";
769 LOG(info) << setw(40) <<
"---------------------------------------------------------------------";
771 LOG(info) <<
"======================";
772 LOG(info) <<
"'Mvd QA Output' End!";
773 LOG(info) <<
"======================";
776 TCanvas* a =
new TCanvas(
"Residuals",
"Residuals");
781 fMvdHisto1[3]->GetXaxis()->SetTitle(
"Residual in x [um]");
782 fMvdHisto1[3]->GetYaxis()->SetTitle(
"Entries");
786 fMvdHisto1[4]->GetXaxis()->SetTitle(
"Residual in y [um]");
787 fMvdHisto1[4]->GetYaxis()->SetTitle(
"Entries");
791 fMvdHisto1[5]->GetXaxis()->SetTitle(
"Residual in z [um]");
792 fMvdHisto1[5]->GetYaxis()->SetTitle(
"Entries");
796 fMvdHisto1[33]->GetXaxis()->SetTitle(
"Pull in x [um]");
797 fMvdHisto1[33]->GetYaxis()->SetTitle(
"Entries");
801 fMvdHisto1[34]->GetXaxis()->SetTitle(
"Pull in y [um]");
802 fMvdHisto1[34]->GetYaxis()->SetTitle(
"Entries");
804 int col[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 11};
806 TLegend* leg =
new TLegend(0.1, 0.7, 0.48, 0.9);
809 for (
int i = 0; i < 10; i++) {
812 fMvdHisto1[10 + i]->GetXaxis()->SetTitle(
"Residual in x [um]");
813 fMvdHisto1[10 + i]->GetYaxis()->SetTitle(
"Entries");
819 leg->AddEntry(
fMvdHisto1[10 + i], Form(
"Shape %i", i));
824 for (
int i = 0; i < 10; i++) {
827 fMvdHisto1[20 + i]->GetXaxis()->SetTitle(
"Residual in y [um]");
828 fMvdHisto1[20 + i]->GetYaxis()->SetTitle(
"Entries");
837 TCanvas* b =
new TCanvas(
"Matches",
"Matches");
842 fMvdHisto1[35]->GetXaxis()->SetTitle(
"Mc Points per Digi");
843 fMvdHisto1[35]->GetYaxis()->SetTitle(
"Entries");
847 fMvdHisto1[30]->GetXaxis()->SetTitle(
"Digis per Mc Point");
848 fMvdHisto1[30]->GetYaxis()->SetTitle(
"Entries");
852 fMvdHisto1[2]->GetXaxis()->SetTitle(
"Digis per Hit");
853 fMvdHisto1[2]->GetYaxis()->SetTitle(
"Entries");
857 fMvdHisto1[31]->GetXaxis()->SetTitle(
"Hits per Mc Point");
858 fMvdHisto1[31]->GetYaxis()->SetTitle(
"Entries");
862 fMvdHisto1[36]->GetXaxis()->SetTitle(
"Mc Points per Hit");
863 fMvdHisto1[36]->GetYaxis()->SetTitle(
"Entries");
867 fMvdHisto1[32]->GetXaxis()->SetTitle(
"Mc Points per Hit (merged)");
868 fMvdHisto1[32]->GetYaxis()->SetTitle(
"Entries");
870 TCanvas* d =
new TCanvas(
"ResAna",
"ResAna");
884 fProf[0]->GetXaxis()->SetTitle(
"Momentum [GeV]");
885 fProf[0]->GetYaxis()->SetTitle(
"Residual in x [um]");
889 fProf[1]->GetXaxis()->SetTitle(
"Momentum [GeV]");
890 fProf[1]->GetYaxis()->SetTitle(
"Residual in y [um]");
894 fProf[2]->GetXaxis()->SetTitle(
"Angle [rad]");
895 fProf[2]->GetYaxis()->SetTitle(
"Residual in x [um]");
899 fProf[3]->GetXaxis()->SetTitle(
"Angle [rad]");
900 fProf[3]->GetYaxis()->SetTitle(
"Residual in y [um]");
904 fProf[4]->GetXaxis()->SetTitle(
"Digis per Hit");
905 fProf[4]->GetYaxis()->SetTitle(
"Residual in x [um]");
909 fProf[5]->GetXaxis()->SetTitle(
"Digis per Hit");
910 fProf[5]->GetYaxis()->SetTitle(
"Residual in y [um]");
914 fProf[6]->GetXaxis()->SetTitle(
"Charge");
915 fProf[6]->GetYaxis()->SetTitle(
"Residual in x [um]");
919 fProf[7]->GetXaxis()->SetTitle(
"Charge");
920 fProf[7]->GetYaxis()->SetTitle(
"Residual in y [um]");
922 TCanvas* c =
new TCanvas(
"Rest",
"Rest");
927 fMvdHisto1[0]->GetXaxis()->SetTitle(
"Momentum [GeV]");
928 fMvdHisto1[0]->GetYaxis()->SetTitle(
"Entries");
932 fMvdHisto1[1]->GetXaxis()->SetTitle(
"Angle [rad]");
933 fMvdHisto1[1]->GetYaxis()->SetTitle(
"Entries");
937 fMvdHisto1[2]->GetXaxis()->SetTitle(
"Digis per Hit");
938 fMvdHisto1[2]->GetYaxis()->SetTitle(
"Entries");
942 fMvdHisto2[14]->GetXaxis()->SetTitle(
"Residual in x [um]");
943 fMvdHisto2[14]->GetYaxis()->SetTitle(
"Residual in y [um]");
944 fMvdHisto2[14]->GetZaxis()->SetTitle(
"Entries");
948 fMvdHisto2[15]->GetXaxis()->SetTitle(
"Momentum [GeV]");
949 fMvdHisto2[15]->GetYaxis()->SetTitle(
"Charge");
950 fMvdHisto2[15]->GetZaxis()->SetTitle(
"Entries");
954 fMvdHisto2[16]->GetXaxis()->SetTitle(
"Angle [rad]");
955 fMvdHisto2[16]->GetYaxis()->SetTitle(
"Charge");
956 fMvdHisto2[16]->GetZaxis()->SetTitle(
"Entries");
960 fMvdHisto1[6]->GetXaxis()->SetTitle(
"Distance to Pixel in x [Pixelpitch]");
961 fMvdHisto1[6]->GetYaxis()->SetTitle(
"Entries");
965 fMvdHisto1[7]->GetXaxis()->SetTitle(
"Distance to Pixel in y [Pixelpitch]");
966 fMvdHisto1[7]->GetYaxis()->SetTitle(
"Entries");
970 fMvdHisto1[8]->GetXaxis()->SetTitle(
"Clustershape");
971 fMvdHisto1[8]->GetYaxis()->SetTitle(
"Entries");
975 fMvdHisto1[9]->GetXaxis()->SetTitle(
"Charge");
976 fMvdHisto1[9]->GetYaxis()->SetTitle(
"Entries");
984 fProf[8]->GetXaxis()->SetTitle(
"Momentum [GeV]");
985 fProf[8]->GetYaxis()->SetTitle(
"Charge");
986 fProf[10]->Draw(
"same");
987 fProf[10]->SetLineColor(2);
991 fProf[9]->GetXaxis()->SetTitle(
"Angle [rad]");
992 fProf[9]->GetYaxis()->SetTitle(
"Charge");