13 #include "TClonesArray.h"
14 #include "TGraphErrors.h"
15 #include "TPostScript.h"
20 #include "TPaveStats.h"
22 #include "TPolyLine.h"
31 char SMP2Name[][100]={
"SMA0",
"SMC0",
"SMA1",
"SMC1",
"SMA2",
"SMC2",
"SMA3",
"SMC3",
"SMA4",
"SMC4",
"SMA5",
"SMC5",
"SMA9",
"SMC9",
"SMA10",
"SMC10",
"SMA11",
"SMC11",
"SMA12",
"SMC12"};
32 char SMnumber[][100]={
"0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10",
"11",
"12",
"13",
"14",
"15",
"16",
"17",
"18",
"19"};
37 int SMdetType[]={
kEMCAL,
kEMCAL,
kEMCAL,
kEMCAL,
kEMCAL,
kEMCAL,
kEMCAL,
kEMCAL,
kEMCAL,
kEMCAL,
kEMCALthird,
kEMCALthird,
kDCAL,
kDCAL,
kDCAL,
kDCAL,
kDCAL,
kDCAL,
kDCALthird,kDCALthird};
98 {
int m,n,i,j,k,iCol,iRow,iSM,iPt,iStruct,iBin,discardFlag;
99 int testChoice,isFirstIteration,shiftCol,shiftRow,cmpt,flag[kNbFitParams+
kNbExtraParams],sm2,c2,r2,cmpt2,flag2[kNbFitParams+
kNbExtraParams],tmpFlag,tmpFlagTab[23],cmpt3,sm3,c3,r3,cmptEntriesDiscard,cmptAmpDiscard,cmptMasked,cmptEdge,cmptNDF;
100 int kNbColMinEff,kNbColMaxEff,cEff;
101 int tabChoiceCalos[4],tmpChoice,nbTowersConsideredTot,choiceNoEMCAL,choiceNoDCAL;
102 int kCalibrateMidRapBorderCol,kCalibrateLastBorderCol,kCalibrateTouchingBorderRow,kCalibrateLastBorderRow,flagBorderTower;
104 double tmpX,tmpY,fitPar3,fitPar4,fitPar5,nbTot,nbSig,intgS,intgSbincounting,intgN,intgKhi2,coeff,coeff3,maxGaussAmpl,maxIntgAmpl;
105 double coeffPower,coeffPowerPrev,fitRangeMin,fitRangeMax,maxHisto,fitResultMean,fitResultSigma,fitKhi2SmallRange,fitKhi2PeakLeft,fitKhi2PeakRight,valStatUncert,paramFitStatUncert_a,paramFitStatUncert_b,uncertKSpec,uncertSpec,uncertDist;
116 printf(
"\n\n\n\n##############\n###############\n#### Change one thing : when, at the last iteration, the calib coeff = 1, tower is untrusted and product of all calib coeffs of previous iterations must be 1, independantly of their actual value. Check mail a Catherine Apr 18th, 2013 w/ subject 'Calib status'.\n##################\n#################!!!!!!!!!!!!!!!!!!!!!\n\n\n");
146 kCalibrateMidRapBorderCol=0;
147 kCalibrateLastBorderCol=0;
148 kCalibrateTouchingBorderRow=0;
149 kCalibrateLastBorderRow=0;
151 paramFitStatUncert_a=18.1227/100.;
152 paramFitStatUncert_b=0.151497/100.;
160 {tmpChoice=choice>>i;
161 tabChoiceCalos[i]=tmpChoice;
162 choice-=tmpChoice*pow(2,i);
164 nbTowersConsideredTot=0;
165 printf(
"\n\n---------------------------------\n| Running for :");
167 {
if (tabChoiceCalos[i] == 1)
170 if (i<2) choiceNoEMCAL++;
175 if (choiceNoEMCAL == 0) printf(
"| Chose to run with no EMCAL supermodules.\n");
176 if (choiceNoDCAL == 0) printf(
"| Chose to run with no DCAL supermodules.\n");
177 if (isFirstIteration == 0) printf(
"| Declared that this is NOT the first iteration.\n");
178 else printf(
"| Declared that this IS the first iteration.\n");
179 printf(
"---------------------------------\n\n");
181 double mPDG = 134.9766;
182 double typicalWidth = 13.;
186 {
case 0 : kNbColMinEff=0;
188 printf(
"Calib mode, max tower col span %d -> %d.\n",kNbColMinEff,kNbColMaxEff-1);
190 case 1 : kNbColMinEff=0;
192 printf(
"\n########### TEST mode, max tower col span %d -> %d.\n",kNbColMinEff,kNbColMaxEff-1);
193 printf(
"#############################################\n\n");
196 case 2 : kNbColMinEff=0;
198 printf(
"\n########### TEST mode, 1 SM and max tower col span %d -> %d.\n",kNbColMinEff,kNbColMaxEff-1);
199 printf(
"#############################################\n\n");
202 case 3 : kNbColMinEff=0;
204 printf(
"\n########### TEST mode, max tower col span %d -> %d.\n",kNbColMinEff,kNbColMaxEff-1);
205 printf(
"########### Don't plot the inv mass histoes per tower.\n");
206 printf(
"#############################################\n\n");
209 default : printf(
"\nUnknown test mode option, exiting.\n\n");
213 printf(
"Running with target mass %f MeV.\n",mPDG);
214 if (mPDG != 134.9766) printf(
"\n########### CAUTION ! This is not the PDG mass %f MeV !\n",134.9766);
297 TFile *f05 =
new TFile(
"/cebaf/cebaf/EMCAL/calibPi0_run2/calibPi0_4_with2015data/input/pass5/AnalysisResults_LHC15sumijMaskMoreTowersByHand_pass5.root",
"read");
299 FILE *txtFileCalibIn = NULL;
300 FILE *txtFileParamsIn = NULL;
301 FILE *txtFileParamsOut = NULL;
329 txtFileCalibIn = fopen(
"/cebaf/cebaf/EMCAL/calibPi0_run2/calibPi0_4_with2015data/output/pass4_DCALandEMCALThirds/output_calibPi0_coeffs_clean.txt",
"r");
330 txtFileParamsIn = fopen(
"/cebaf/cebaf/EMCAL/calibPi0_run2/calibPi0_4_with2015data/output/pass4_DCALandEMCALThirds/output_calibPi0_parameters.txt",
"r");
333 TString txtFileParamsOutName(
"output_calibPi0_parameters.txt");
334 TString txtFileCalibOutName(
"output_calibPi0_coeffs.txt");
335 txtFileParamsOut = fopen(txtFileParamsOutName.Data(),
"w");
336 ofstream txtFileCalibOut(txtFileCalibOutName.Data());
349 Int_t colorIndex[]={1,4,6,8};
350 Int_t colorIndexStruct[]={kBlack,kGreen+2,kRed};
351 Int_t colorIndexZones[]={kGreen+2,kGreen+3,kAzure-5,kBlue+2,kPink+2,kRed,kRed+2};
352 Int_t colorIndexRatiosZones[]={kGreen+2,kBlue,kRed,kRed+2,kBlack};
354 TLine *linePDGMass =
new TLine(mPDG,0.,mPDG,1.);
355 TLine *lineFittedMass =
new TLine(mPDG,0.,mPDG,1.);
356 TLine *lineFittedWidth1 =
new TLine(mPDG,0.,mPDG,1.);
357 TLine *lineFittedWidth2 =
new TLine(mPDG,0.,mPDG,1.);
358 TLine *linePreviousFittedMass =
new TLine(mPDG,0.,mPDG,1.);
359 TLine *linePreviousFittedWidth1 =
new TLine(mPDG,0.,mPDG,1.);
360 TLine *linePreviousFittedWidth2 =
new TLine(mPDG,0.,mPDG,1.);
361 TLine *linePreviousDesiredMass =
new TLine(mPDG,0.,mPDG,1.);
362 TLine *linePreviousUntrustedFit =
new TLine(mPDG,0.,mPDG,1.);
363 linePDGMass->SetLineColor(kSpring+4);
364 lineFittedMass->SetLineColor(kMagenta);
365 lineFittedWidth1->SetLineColor(kMagenta-10);
366 lineFittedWidth2->SetLineColor(kMagenta-10);
368 TLine *lineSMborderVDCALthird =
new TLine(kNbColDCALthird-0.5,(
int)((kNbSMDCAL+1)/2)*kNbRowDCAL-0.5,kNbColDCALthird-0.5,(
int)((kNbSMDCAL+1)/2)*kNbRowDCAL+(
int)((kNbSMDCALthird+1)/2)*kNbRowDCALthird-0.5);
369 TLine *lineSMborderVDCAL1 =
new TLine(kNbColDCAL-0.5,-0.5,kNbColDCAL-0.5,(
int)((kNbSMDCAL+1)/2)*kNbRowDCAL-0.5);
370 TLine *lineSMborderVDCAL2 =
new TLine(2*
kNbColEMCAL-kNbColDCAL-0.5,-0.5,2*
kNbColEMCAL-kNbColDCAL-0.5,(
int)((kNbSMDCAL+1)/2)*kNbRowDCAL-0.5);
371 TLine **lineSMborderHEMCAL,**lineSMborderHDCAL;
372 lineSMborderHEMCAL =
new TLine*[(int)((
kNbSMEMCAL+1)/2)];
373 lineSMborderHDCAL =
new TLine*[(int)((kNbSMDCAL+1)/2)];
375 for (i=0;i<(int)((kNbSMDCAL+1)/2);i++) lineSMborderHDCAL[i] =
new TLine(-0.5,(i+1)*kNbRowDCAL-0.5,2.*kNbColDCALthird-0.5,(i+1)*kNbRowDCAL-0.5);
376 TLine *lineMin =
new TLine(0.,0.,1.,1.);
377 TLine *lineMax =
new TLine(0.,0.,1.,1.);
378 lineMin->SetLineColor(kGreen+2);
379 lineMax->SetLineColor(kGreen+2);
381 gStyle->SetPaintTextFormat(
"1.0f");
382 gStyle->SetTextSize(0.5);
385 TPaveStats *ptrPaveStat;
386 TPave *paveUncertStatus =
new TPave(0.95,1.0,0.845,0.850,2,
"NDC");
387 paveUncertStatus->SetFillStyle(1001);
388 TPave *paveMassStatus =
new TPave(0.95,1.0,0.845,0.850,2,
"NDC");
389 paveMassStatus->SetFillStyle(1001);
390 TPave **paveCutsStatus;
393 {paveCutsStatus[i] =
new TPave(0.95,1.0,0.845,0.850,4,
"NDC");
402 varName[1]=
"#mu (MeV)";
403 varName[2]=
"#sigma (MeV)";
408 varName[7]=
"Khi2/Ndf";
411 varName[10]=
"Khi2/Ndf peak";
412 varName[11]=
"Khi2/Ndf peakLeft";
413 varName[12]=
"Khi2/Ndf peakRight";
414 varNameLong[0]=
"Amplitude of gaussian fit";
415 varNameLong[1]=
"Mean of gaussian fit";
416 varNameLong[2]=
"Width of gaussian fit";
417 varNameLong[3]=
"Polynom coeff c";
418 varNameLong[4]=
"Polynom coeff b";
419 varNameLong[5]=
"Polynom coeff a";
420 varNameLong[6]=
"Histogram integral";
421 varNameLong[7]=
"Khi2/Ndf";
422 varNameLong[8]=
"Integral of gaussian fit";
423 varNameLong[9]=
"Histo-gaussian integrals";
424 varNameLong[10]=
"Khi2/Ndf around peak";
425 varNameLong[11]=
"Khi2/Ndf half-peak left";
426 varNameLong[12]=
"Khi2/Ndf half-peak right";
468 nbEntriesMax=100000.;
475 tabMinDiff[5]=-0.004;
489 cutEntriesDiscard=500.;
809 tabPtBins =
new double[nbPtBins-1];
846 TList *l05 = (
TList *) f05->Get(
"Pi0Calibration_Trig");
849 {printf(
"\n\nNull pointer to TList.\n");
850 printf(
"Try with this other name instead :\n");
854 const int kNbZones=7;
855 TH2F **hAllM_05_SM,**hAllM_05_SM_masked,***hAllM_05_SM_Zones,**hAllM_05_Zones;
859 hAllM_05_Zones =
new TH2F*[kNbZones];
860 TH2F *hAllM_05 = (
TH2F *) l05->FindObject(
"hmgg");
861 TH2F *hAllM_05_masked = (
TH2F *)hAllM_05->Clone(
"hmgg_masked");
862 for (j=0;j<kNbZones;j++)
863 {hAllM_05_Zones[j] = (
TH2F *)hAllM_05->Clone(Form(
"hmgg_Zone%d",j+1));
866 {hAllM_05_SM[i] = (
TH2F *) l05->FindObject(Form(
"hmgg_SM%d",i));
867 hAllM_05_SM_masked[i] = (
TH2F *) l05->FindObject(Form(
"hmgg_SM%d_MaskFrame",i));
868 hAllM_05_SM_Zones[i] =
new TH2F*[kNbZones];
869 for (j=0;j<kNbZones;j++)
870 {hAllM_05_SM_Zones[i][j] = (
TH2F *) l05->FindObject(Form(
"hmgg_SM%d_Zone%d",i,j+1));
894 TH1F *hNevts = (TH1F*)l05->FindObject(
"hNEvents");
895 printf(
"\n\nNumber of events in histo hNEvents : %d, nb of entries %d (%d Mevts).\n\n",(
int)hNevts->GetBinContent(1),(int)hNevts->GetEntries(),(int)(hNevts->GetEntries()/1000000.));
898 hAllM_05_masked->Reset();
899 for (j=0;j<kNbZones;j++)
900 {hAllM_05_Zones[j]->Reset();
904 {hAllM_05->Add(hAllM_05_SM[i]);
905 hAllM_05_masked->Add(hAllM_05_SM_masked[i]);
906 for (j=0;j<kNbZones;j++)
907 {hAllM_05_Zones[j]->Add(hAllM_05_SM_Zones[i][j]);
922 TH1F **hAllMPerSM,**hMassDistrPerSMPerPtPerZone;
923 hAllMPerSM =
new TH1F*[3*(nbPtBins+1)*(kNbSMtot+1)];
924 hMassDistrPerSMPerPtPerZone =
new TH1F*[kNbZones*(nbPtBins+1)*(kNbSMtot+1)];
926 for (i=0;i<(kNbSMtot+1);i++)
927 {
for (j=0;j<(nbPtBins+1);j++)
929 {hAllMPerSM[(3*(nbPtBins+1))*i+3*j+k] =
new TH1F(Form(
"hAllMPerSM%d_pT%d_%d",i,j,k),Form(
"hAllMPerSM%d_pT%d_%d",i,j,k),hAllM_05->GetNbinsX(),hAllM_05->GetXaxis()->GetXmin(),hAllM_05->GetXaxis()->GetXmax());
930 hAllMPerSM[(3*(nbPtBins+1))*i+3*j+k]->SetXTitle(
"#pi^{0} inv mass (MeV)");
931 hAllMPerSM[(3*(nbPtBins+1))*i+3*j+k]->SetYTitle(
"Counts");
933 hAllMPerSM[(3*(nbPtBins+1))*i+3*j+k]->SetLineColor(colorIndexStruct[k]);
935 for (k=0;k<kNbZones;k++)
936 {hMassDistrPerSMPerPtPerZone[(kNbZones*(nbPtBins+1))*i+kNbZones*j+k] =
new TH1F(Form(
"hMassDistrPerSMPerPtPerZone_SM%d_pT%d_Zone%d",i,j,k),Form(
"hMassDistrPerSMPerPtPerZone%d_pT%d_Zone%d",i,j,k),hAllM_05->GetNbinsX(),hAllM_05->GetXaxis()->GetXmin(),hAllM_05->GetXaxis()->GetXmax());
937 hMassDistrPerSMPerPtPerZone[(kNbZones*(nbPtBins+1))*i+kNbZones*j+k]->SetXTitle(
"#pi^{0} inv mass (MeV)");
938 hMassDistrPerSMPerPtPerZone[(kNbZones*(nbPtBins+1))*i+kNbZones*j+k]->SetYTitle(
"Counts");
939 hMassDistrPerSMPerPtPerZone[(kNbZones*(nbPtBins+1))*i+kNbZones*j+k]->SetLineColor(colorIndexZones[k]);
944 double *tabGraphX,*tabGraphYmass,*tabGraphYsig,*tabGraphYnumber,*tabGraphYnumberRatio,*tabErrGraphX,*tabErrGraphYmass,*tabErrGraphYsig,*tabErrGraphYnumber,*tabErrGraphYnumberRatio;
945 double *tabTmpGraphYmass,*tabTmpGraphYsig,*tabTmpGraphYnumber,*tabTmpGraphYnumberRatio,*tabTmpErrGraphYmass,*tabTmpErrGraphYsig,*tabTmpErrGraphYnumber,*tabTmpErrGraphYnumberRatio;
946 double cmptPtMoyLow,cmptPtMoyHigh;
947 double pTmoyLow,pTmoyHigh;
949 tabGraphX =
new double[nbPtBins];
950 tabGraphYmass =
new double[kNbZones*nbPtBins];
951 tabGraphYsig =
new double[kNbZones*nbPtBins];
952 tabGraphYnumber =
new double[kNbZones*nbPtBins];
953 tabGraphYnumberRatio =
new double[((int)(kNbZones/2))*(kNbZones-1)*nbPtBins];
954 tabErrGraphX =
new double[nbPtBins];
955 tabErrGraphYmass =
new double[kNbZones*nbPtBins];
956 tabErrGraphYsig =
new double[kNbZones*nbPtBins];
957 tabErrGraphYnumber =
new double[kNbZones*nbPtBins];
958 tabErrGraphYnumberRatio =
new double[((int)(kNbZones/2))*(kNbZones-1)*nbPtBins];
959 tabTmpGraphYmass =
new double[nbPtBins];
960 tabTmpGraphYsig =
new double[nbPtBins];
961 tabTmpGraphYnumber =
new double[nbPtBins];
962 tabTmpGraphYnumberRatio =
new double[nbPtBins];
963 tabTmpErrGraphYmass =
new double[nbPtBins];
964 tabTmpErrGraphYsig =
new double[nbPtBins];
965 tabTmpErrGraphYnumber =
new double[nbPtBins];
966 tabTmpErrGraphYnumberRatio =
new double[nbPtBins];
968 TGraphErrors **tgeMass,**tgeSig,**tgeNumber,**tgeNumberRatio,**tgeMassZones,**tgeSigZones,**tgeNumberZones,**tgeNumberRatioZones;
973 tgeMassZones =
new TGraphErrors*[kNbZones*(kNbSMtot+1)];
975 tgeNumberZones =
new TGraphErrors*[kNbZones*(kNbSMtot+1)];
976 tgeNumberRatioZones =
new TGraphErrors*[((int)(kNbZones/2))*(kNbZones-1)*(kNbSMtot+1)];
993 TH2F **hSpaceEntriesDiscard;
994 TH2F **hSpaceEntriesDiscardHack;
1005 {hSpace[kNbFitParams*i+j] =
new TH2F(Form(
"hSpace_SM%d_%d",i,j),Form(
"hSpace_SM%d_%d",i,j),kNbColMax,-0.5,kNbColMax-0.5,kNbRowMax,-0.5,kNbRowMax-0.5);
1006 hSpace[kNbFitParams*i+j]->SetXTitle(
"Column");
1007 hSpace[kNbFitParams*i+j]->SetYTitle(
"Row");
1008 hSpace[kNbFitParams*i+j]->SetStats(0);
1009 hSpace[kNbFitParams*i+j]->SetContour(30);
1012 {hSpaceIntg[kNbExtraParams*i+j] =
new TH2F(Form(
"hSpaceIntg_SM%d_%d",i,j),Form(
"hSpaceIntg_SM%d_%d",i,j),kNbColMax,-0.5,kNbColMax-0.5,kNbRowMax,-0.5,kNbRowMax-0.5);
1013 hSpaceIntg[kNbExtraParams*i+j]->SetXTitle(
"Column");
1014 hSpaceIntg[kNbExtraParams*i+j]->SetYTitle(
"Row");
1015 hSpaceIntg[kNbExtraParams*i+j]->SetStats(0);
1016 hSpaceIntg[kNbExtraParams*i+j]->SetContour(30);
1019 {hSpaceCuts[5*i+j] =
new TH2F(Form(
"hSpaceCuts_SM%d_%d",i,j),Form(
"hSpaceCuts_SM%d_%d",i,j),kNbColMax,-0.5,kNbColMax-0.5,kNbRowMax,-0.5,kNbRowMax-0.5);
1020 hSpaceCuts[5*i+j]->SetXTitle(
"Column");
1021 hSpaceCuts[5*i+j]->SetYTitle(
"Row");
1022 hSpaceCuts[5*i+j]->SetStats(0);
1023 hSpaceCuts[5*i+j]->SetContour(30);
1026 {hSpaceCoeff[1*i+j] =
new TH2F(Form(
"hSpaceCoeff_SM%d_%d",i,j),Form(
"hSpaceCoeff_SM%d_%d",i,j),kNbColMax,-0.5,kNbColMax-0.5,kNbRowMax,-0.5,kNbRowMax-0.5);
1027 hSpaceCoeff[1*i+j]->SetXTitle(
"Column");
1028 hSpaceCoeff[1*i+j]->SetYTitle(
"Row");
1029 hSpaceCoeff[1*i+j]->SetStats(0);
1030 hSpaceCoeff[1*i+j]->SetContour(30);
1031 hSpaceFitErr[1*i+j] =
new TH2F(Form(
"hSpaceFitErr_SM%d_%d",i,j),Form(
"hSpaceFitErr_SM%d_%d",i,j),kNbColMax,-0.5,kNbColMax-0.5,kNbRowMax,-0.5,kNbRowMax-0.5);
1032 hSpaceFitErr[1*i+j]->SetXTitle(
"Column");
1033 hSpaceFitErr[1*i+j]->SetYTitle(
"Row");
1034 hSpaceFitErr[1*i+j]->SetStats(0);
1035 hSpaceFitErr[1*i+j]->SetContour(30);
1036 hSpaceEntriesDiscard[1*i+j] =
new TH2F(Form(
"hSpaceEntriesDiscard_SM%d_%d",i,j),Form(
"hSpaceEntriesDiscard_SM%d_%d",i,j),kNbColMax,-0.5,kNbColMax-0.5,kNbRowMax,-0.5,kNbRowMax-0.5);
1037 hSpaceEntriesDiscard[1*i+j]->SetXTitle(
"Column");
1038 hSpaceEntriesDiscard[1*i+j]->SetYTitle(
"Row");
1039 hSpaceEntriesDiscard[1*i+j]->SetStats(0);
1040 hSpaceEntriesDiscard[1*i+j]->SetContour(30);
1041 hSpaceEntriesDiscardHack[1*i+j] =
new TH2F(Form(
"hSpaceEntriesDiscardHack_SM%d_%d",i,j),Form(
"hSpaceEntriesDiscardHack_SM%d_%d",i,j),kNbColMax,-0.5,kNbColMax-0.5,kNbRowMax,-0.5,kNbRowMax-0.5);
1042 hSpaceEntriesDiscardHack[1*i+j]->SetStats(0);
1043 hSpaceEntriesDiscardHack[1*i+j]->Fill(-1,5.);
1044 hSpaceEntriesDiscardHack[1*i+j]->SetMarkerSize(1.5);
1047 {hSpaceDiff[kNbTotParams*i+j] =
new TH2F(Form(
"hSpaceDiff_SM%d_%d",i,j),Form(
"hSpaceDiff_SM%d_%d",i,j),kNbColMax,-0.5,kNbColMax-0.5,kNbRowMax,-0.5,kNbRowMax-0.5);
1048 hSpaceDiff[kNbTotParams*i+j]->SetXTitle(
"Column");
1049 hSpaceDiff[kNbTotParams*i+j]->SetYTitle(
"Row");
1050 hSpaceDiff[kNbTotParams*i+j]->SetStats(0);
1051 hSpaceDiff[kNbTotParams*i+j]->SetContour(30);
1054 TH1F *hAllDistribNbEntries;
1055 hAllDistribNbEntries =
new TH1F(
"hAllDistribNbEntries",
"hAllDistribNbEntries",100,0.,nbEntriesMax);
1056 hAllDistribNbEntries->SetXTitle(
"Nb of entries");
1057 hAllDistribNbEntries->SetYTitle(
"Counts");
1058 hAllDistribNbEntries->SetStats(0);
1059 TH2F *hAllDistribNbEntriesCorrel;
1060 hAllDistribNbEntriesCorrel =
new TH2F(
"hAllDistribNbEntriesCorrel",
"hAllDistribNbEntriesCorrel",100,tabMin[6],tabMax[6]/4.,100,0.,nbEntriesMax/4.);
1061 hAllDistribNbEntriesCorrel->SetXTitle(
"I");
1062 hAllDistribNbEntriesCorrel->SetYTitle(
"Nb of entries");
1063 hAllDistribNbEntriesCorrel->SetStats(0);
1065 TH1F **hAllDistribDistance;
1066 TH1F **hAllDistribDistance2;
1067 TH1F *hAllDistribMass;
1068 TH1F *hAllOldDistribMass;
1070 TH1F *hMassOldPerSM;
1071 TH1F **hAllDistribMassPerSM;
1072 TH1F **hAllOldDistribMassPerSM;
1073 TH1F **hAllDistribIntg;
1074 TH2F **hAllSpaceEMCAL;
1075 TH2F **hAllSpaceEMCALIntg;
1076 TH2F **hAllSpaceEMCALCoeff;
1077 TH2F **hAllSpaceEMCALDistance;
1078 TH2F **hAllSpaceEMCALDiff;
1079 TH2F **hAllSpaceDCAL;
1080 TH2F **hAllSpaceDCALIntg;
1081 TH2F **hAllSpaceDCALCoeff;
1082 TH2F **hAllSpaceDCALDistance;
1083 TH2F **hAllSpaceDCALDiff;
1084 TH1F **hAllOldDistrib;
1086 TH1F **hAllDiffAllTw;
1087 hAllDistribMassPerSM =
new TH1F*[
kNbSMtot];
1088 hAllOldDistribMassPerSM =
new TH1F*[
kNbSMtot];
1090 hAllDistribDistance =
new TH1F*[3];
1091 hAllDistribDistance2 =
new TH1F*[2*2];
1095 hAllSpaceEMCALCoeff =
new TH2F*[1];
1096 hAllSpaceEMCALDistance =
new TH2F*[3];
1100 hAllSpaceDCALCoeff =
new TH2F*[1];
1101 hAllSpaceDCALDistance =
new TH2F*[3];
1109 {hAllDistribMassPerSM[j] =
new TH1F(Form(
"hAllDistribMassPerSM_%d",j),Form(
"hAllDistribMassPerSM_%d",j),150,mPDG-10.,mPDG+10.);
1110 hAllDistribMassPerSM[j]->SetXTitle(Form(
"#pi^{0} inv mass (MeV) SM %d",j));
1111 hAllDistribMassPerSM[j]->SetYTitle(
"Counts");
1112 hAllDistribMassPerSM[j]->SetStats(0);
1113 hAllOldDistribMassPerSM[j] =
new TH1F(Form(
"hAllOldDistribMassPerSM%d",j),Form(
"hAllOldDistribMassPerSM%d",j),150,mPDG-10.,mPDG+10.);
1114 hAllOldDistribMassPerSM[j]->SetXTitle(Form(
"#pi^{0} inv mass (MeV) SM %d",j));
1115 hAllOldDistribMassPerSM[j]->SetYTitle(
"Counts");
1116 hAllOldDistribMassPerSM[j]->SetStats(0);
1120 hAllSpaceEMCAL[j]->SetXTitle(
"Column");
1121 hAllSpaceEMCAL[j]->SetYTitle(
"Row");
1122 hAllSpaceEMCAL[j]->SetStats(0);
1123 hAllSpaceEMCAL[j]->SetContour(30);
1124 hAllSpaceDCAL[j] =
new TH2F(Form(
"hAllSpaceDCAL_%d",j),Form(
"hAllSpaceDCAL_%d",j),2*kNbColMax,-0.5,2.*kNbColMax-0.5,(
int)((kNbSMDCAL+1)/2)*kNbRowDCAL+(
int)((kNbSMDCALthird+1)/2)*kNbRowDCALthird,-0.5,(
int)((kNbSMDCAL+1)/2)*kNbRowDCAL+(
int)((kNbSMDCALthird+1)/2)*kNbRowDCALthird-0.5);
1125 hAllSpaceDCAL[j]->SetXTitle(
"Column");
1126 hAllSpaceDCAL[j]->SetYTitle(
"Row");
1127 hAllSpaceDCAL[j]->SetStats(0);
1128 hAllSpaceDCAL[j]->SetContour(30);
1129 hAllDistrib[j] =
new TH1F(Form(
"hAllDistrib_%d",j),Form(
"hAllDistrib_%d",j),100,tabMin[j],tabMax[j]);
1130 hAllDistrib[j]->SetXTitle(Form(
"%s",varName[j]));
1131 hAllDistrib[j]->SetYTitle(
"Counts");
1132 hAllDistrib[j]->SetStats(0);
1135 {hAllDistribDistance[j] =
new TH1F(Form(
"hAllDistribDistance_%d",j),Form(
"hAllDistribDistance_%d",j),100,0.,10.);
1136 hAllDistribDistance[j]->SetXTitle(
"(#mu_{fit}-#mu_{PDG})/#sigma");
1137 hAllDistribDistance[j]->SetYTitle(
"Counts");
1138 hAllDistribDistance[j]->SetStats(0);
1141 {hAllDistribDistance2[2*j+0] =
new TH1F(Form(
"hAllDistribDistance2_%d_0",j),Form(
"hAllDistribDistance2_%d_0",j),100,0.,5.);
1142 hAllDistribDistance2[2*j+0]->SetXTitle(
"#sigma_{#mu} (stat) (%)");
1143 hAllDistribDistance2[2*j+0]->SetYTitle(
"Counts");
1144 hAllDistribDistance2[2*j+0]->SetStats(0);
1145 hAllDistribDistance2[2*j+1] =
new TH1F(Form(
"hAllDistribDistance2_%d_1",j),Form(
"hAllDistribDistance2_%d_1",j),100,0.,0.2);
1146 hAllDistribDistance2[2*j+1]->SetXTitle(
"|#mu_{fit}-#mu_{PDG}|/#mu_{PDG}");
1147 hAllDistribDistance2[2*j+1]->SetYTitle(
"Counts");
1148 hAllDistribDistance2[2*j+1]->SetStats(0);
1150 hAllDistribMass =
new TH1F(
"hAllDistribMass",
"hAllDistribMass",200,mPDG-25.,mPDG+25.);
1151 hAllDistribMass->SetXTitle(
"#pi^{0} inv mass (MeV)");
1152 hAllDistribMass->SetYTitle(
"Counts");
1153 hAllDistribMass->SetStats(0);
1154 hAllOldDistribMass =
new TH1F(
"hAllOldDistribMass",
"hAllOldDistribMass",200,mPDG-25.,mPDG+25.);
1155 hAllOldDistribMass->SetXTitle(
"#pi^{0} inv mass (MeV)");
1156 hAllOldDistribMass->SetYTitle(
"Counts");
1157 hAllOldDistribMass->SetStats(0);
1158 hMassPerSM =
new TH1F(
"hMassPerSM",
"hMassPerSM",kNbSMtot,-0.5,kNbSMtot-0.5);
1159 hMassPerSM->SetXTitle(
"SM number");
1160 hMassPerSM->SetYTitle(
"#pi^{0} inv mass (MeV)");
1161 hMassPerSM->SetStats(0);
1162 hMassOldPerSM =
new TH1F(
"hMassOldPerSM",
"hMassOldPerSM",kNbSMtot,-0.42,kNbSMtot-0.42);
1163 hMassOldPerSM->SetXTitle(
"SM number");
1164 hMassOldPerSM->SetYTitle(
"#pi^{0} inv mass (MeV)");
1165 hMassOldPerSM->SetStats(0);
1168 hAllSpaceEMCALIntg[j]->SetXTitle(
"Column");
1169 hAllSpaceEMCALIntg[j]->SetYTitle(
"Row");
1170 hAllSpaceEMCALIntg[j]->SetStats(0);
1171 hAllSpaceEMCALIntg[j]->SetContour(30);
1172 hAllSpaceDCALIntg[j] =
new TH2F(Form(
"hAllSpaceDCALIntg_%d",j),Form(
"hAllSpaceDCALIntg_%d",j),2*kNbColMax,-0.5,2.*kNbColMax-0.5,(
int)((kNbSMDCAL+1)/2)*kNbRowDCAL+(
int)((kNbSMDCALthird+1)/2)*kNbRowDCALthird,-0.5,(
int)((kNbSMDCAL+1)/2)*kNbRowDCAL+(
int)((kNbSMDCALthird+1)/2)*kNbRowDCALthird-0.5);
1173 hAllSpaceDCALIntg[j]->SetXTitle(
"Column");
1174 hAllSpaceDCALIntg[j]->SetYTitle(
"Row");
1175 hAllSpaceDCALIntg[j]->SetStats(0);
1176 hAllSpaceDCALIntg[j]->SetContour(30);
1177 hAllDistribIntg[j] =
new TH1F(Form(
"hAllDistribIntg_%d",j),Form(
"hAllDistribIntg_%d",j),100,tabMin[j+kNbFitParams],tabMax[j+kNbFitParams]);
1178 hAllDistribIntg[j]->SetXTitle(Form(
"%s",varName[j+kNbFitParams]));
1179 hAllDistribIntg[j]->SetYTitle(
"Counts");
1180 hAllDistribIntg[j]->SetStats(0);
1184 hAllSpaceEMCALCoeff[j]->SetXTitle(
"Column");
1185 hAllSpaceEMCALCoeff[j]->SetYTitle(
"Row");
1186 hAllSpaceEMCALCoeff[j]->SetStats(0);
1187 hAllSpaceEMCALCoeff[j]->SetContour(30);
1188 hAllSpaceDCALCoeff[j] =
new TH2F(Form(
"hAllSpaceDCALCoeff%d",j),Form(
"hAllSpaceDCALCoeff%d",j),2*kNbColMax,-0.5,2.*kNbColMax-0.5,(
int)((kNbSMDCAL+1)/2)*kNbRowDCAL+(
int)((kNbSMDCALthird+1)/2)*kNbRowDCALthird,-0.5,(
int)((kNbSMDCAL+1)/2)*kNbRowDCAL+(
int)((kNbSMDCALthird+1)/2)*kNbRowDCALthird-0.5);
1189 hAllSpaceDCALCoeff[j]->SetXTitle(
"Column");
1190 hAllSpaceDCALCoeff[j]->SetYTitle(
"Row");
1191 hAllSpaceDCALCoeff[j]->SetStats(0);
1192 hAllSpaceDCALCoeff[j]->SetContour(30);
1196 hAllSpaceEMCALDistance[j]->SetXTitle(
"Column");
1197 hAllSpaceEMCALDistance[j]->SetYTitle(
"Row");
1198 hAllSpaceEMCALDistance[j]->SetStats(0);
1199 hAllSpaceEMCALDistance[j]->SetContour(30);
1200 hAllSpaceDCALDistance[j] =
new TH2F(Form(
"hAllSpaceDCALDistance%d",j),Form(
"hAllSpaceDCALDistance%d",j),2*kNbColMax,-0.5,2.*kNbColMax-0.5,(
int)((kNbSMDCAL+1)/2)*kNbRowDCAL+(
int)((kNbSMDCALthird+1)/2)*kNbRowDCALthird,-0.5,(
int)((kNbSMDCAL+1)/2)*kNbRowDCAL+(
int)((kNbSMDCALthird+1)/2)*kNbRowDCALthird-0.5);
1201 hAllSpaceDCALDistance[j]->SetXTitle(
"Column");
1202 hAllSpaceDCALDistance[j]->SetYTitle(
"Row");
1203 hAllSpaceDCALDistance[j]->SetStats(0);
1204 hAllSpaceDCALDistance[j]->SetContour(30);
1207 {hAllOldDistrib[j] =
new TH1F(Form(
"hAllOldDistrib_%d",j),Form(
"hAllOldDistrib_%d",j),100,tabMin[j],tabMax[j]);
1208 hAllOldDistrib[j]->SetXTitle(Form(
"%s",varName[j]));
1209 hAllOldDistrib[j]->SetYTitle(
"Counts");
1210 hAllOldDistrib[j]->SetStats(0);
1214 hAllSpaceEMCALDiff[j]->SetXTitle(
"Column");
1215 hAllSpaceEMCALDiff[j]->SetYTitle(
"Row");
1216 hAllSpaceEMCALDiff[j]->SetStats(0);
1217 hAllSpaceEMCALDiff[j]->SetContour(30);
1218 hAllSpaceDCALDiff[j] =
new TH2F(Form(
"hAllSpaceDCALDiff%d",j),Form(
"hAllSpaceDCALDiff%d",j),2*kNbColMax,-0.5,2.*kNbColMax-0.5,(
int)((kNbSMDCAL+1)/2)*kNbRowDCAL+(
int)((kNbSMDCALthird+1)/2)*kNbRowDCALthird,-0.5,(
int)((kNbSMDCAL+1)/2)*kNbRowDCAL+(
int)((kNbSMDCALthird+1)/2)*kNbRowDCALthird-0.5);
1219 hAllSpaceDCALDiff[j]->SetXTitle(
"Column");
1220 hAllSpaceDCALDiff[j]->SetYTitle(
"Row");
1221 hAllSpaceDCALDiff[j]->SetStats(0);
1222 hAllSpaceDCALDiff[j]->SetContour(30);
1223 hAllDiff[j] =
new TH1F(Form(
"hAllDiff%d",j),Form(
"hAllDiff%d",j),100,tabMinDiff[j],tabMaxDiff[j]);
1224 hAllDiff[j]->SetXTitle(Form(
"Ratio var_%d",j));
1225 hAllDiff[j]->SetYTitle(
"Counts");
1226 hAllDiff[j]->SetStats(0);
1227 hAllDiffAllTw[j] =
new TH1F(Form(
"hAllDiffAllTw%d",j),Form(
"hAllDiffAllTw%d",j),100,tabMinDiff[j],tabMaxDiff[j]);
1228 hAllDiffAllTw[j]->SetXTitle(Form(
"Ratio var_%d",j));
1229 hAllDiffAllTw[j]->SetYTitle(
"Counts");
1230 hAllDiffAllTw[j]->SetStats(0);
1233 TH2F *hCorrelMuVsA =
new TH2F(
"hCorrelMuVsA",
"hCorrelMuVsA",100,tabMin[0],tabMax[0],100,tabMin[1],tabMax[1]);
1234 hCorrelMuVsA->SetXTitle(
"A");
1235 hCorrelMuVsA->SetYTitle(
"Mu");
1236 hCorrelMuVsA->SetStats(0);
1237 hCorrelMuVsA->SetContour(30);
1238 TH2F *hCorrelSigVsA =
new TH2F(
"hCorrelSigVsA",
"hCorrelSigVsA",100,tabMin[0],tabMax[0],100,tabMin[2],tabMax[2]);
1239 hCorrelSigVsA->SetXTitle(
"A");
1240 hCorrelSigVsA->SetYTitle(
"Sig");
1241 hCorrelSigVsA->SetStats(0);
1242 hCorrelSigVsA->SetContour(30);
1243 TH2F *hCorrelSigVsMu =
new TH2F(
"hCorrelSigVsMu",
"hCorrelSigVsMu",100,tabMin[1],tabMax[1],100,tabMin[2],tabMax[2]);
1244 hCorrelSigVsMu->SetXTitle(
"Mu");
1245 hCorrelSigVsMu->SetYTitle(
"Sig");
1246 hCorrelSigVsMu->SetStats(0);
1247 hCorrelSigVsMu->SetContour(30);
1248 TH2F *hCorrelBVsA =
new TH2F(
"hCorrelBVsA",
"hCorrelBVsA",100,tabMin[3],tabMax[3],100,tabMin[4],tabMax[4]);
1249 hCorrelBVsA->SetXTitle(
"C");
1250 hCorrelBVsA->SetYTitle(
"B");
1251 hCorrelBVsA->SetStats(0);
1252 hCorrelBVsA->SetContour(30);
1253 TH2F *hCorrelCVsA =
new TH2F(
"hCorrelCVsA",
"hCorrelCVsA",100,tabMin[3],tabMax[3],100,tabMin[5],tabMax[5]);
1254 hCorrelCVsA->SetXTitle(
"C");
1255 hCorrelCVsA->SetYTitle(
"A");
1256 hCorrelCVsA->SetStats(0);
1257 hCorrelCVsA->SetContour(30);
1258 TH2F *hCorrelCVsB =
new TH2F(
"hCorrelCVsB",
"hCorrelCVsB",100,tabMin[4],tabMax[4],100,tabMin[5],tabMax[5]);
1259 hCorrelCVsB->SetXTitle(
"B");
1260 hCorrelCVsB->SetYTitle(
"A");
1261 hCorrelCVsB->SetStats(0);
1262 hCorrelCVsB->SetContour(30);
1263 TH2F *hCorrelISVsI =
new TH2F(
"hCorrelISVsI",
"hCorrelISVsI",100,tabMin[6],tabMax[6],100,tabMin[9],tabMax[9]);
1264 hCorrelISVsI->SetXTitle(
"I");
1265 hCorrelISVsI->SetYTitle(
"IS");
1266 hCorrelISVsI->SetStats(0);
1267 hCorrelISVsI->SetContour(30);
1268 TH2F *hCorrelSVsI =
new TH2F(
"hCorrelSVsI",
"hCorrelSVsI",100,tabMin[6],tabMax[6],100,tabMin[8],tabMax[8]);
1269 hCorrelSVsI->SetXTitle(
"I");
1270 hCorrelSVsI->SetYTitle(
"S");
1271 hCorrelSVsI->SetStats(0);
1272 hCorrelSVsI->SetContour(30);
1273 TH2F *hCorrelSVsIS =
new TH2F(
"hCorrelSVsIS",
"hCorrelSVsIS",100,tabMin[9],tabMax[9],100,tabMin[8],tabMax[8]);
1274 hCorrelSVsIS->SetXTitle(
"IS");
1275 hCorrelSVsIS->SetYTitle(
"S");
1276 hCorrelSVsIS->SetStats(0);
1277 hCorrelSVsIS->SetContour(30);
1278 TH2F *hCorrelSbincountingVsS =
new TH2F(
"hCorrelSbincountingVsS",
"hCorrelSbincountingVsS",100,tabMin[8],tabMax[8],100,tabMin[8],tabMax[8]);
1279 hCorrelSbincountingVsS->SetXTitle(
"S");
1280 hCorrelSbincountingVsS->SetYTitle(
"S bin counting");
1281 hCorrelSbincountingVsS->SetStats(0);
1282 hCorrelSbincountingVsS->SetContour(30);
1283 TH2F *hCorrelMuVsI =
new TH2F(
"hCorrelMuVsI",
"hCorrelMuVsI",100,tabMin[6],tabMax[6],100,tabMin[1],tabMax[1]);
1284 hCorrelMuVsI->SetXTitle(
"I");
1285 hCorrelMuVsI->SetYTitle(
"Mu");
1286 hCorrelMuVsI->SetStats(0);
1287 hCorrelMuVsI->SetContour(30);
1288 TH2F *hCorrelMuVsS =
new TH2F(
"hCorrelMuVsS",
"hCorrelMuVsS",100,tabMin[8],tabMax[8],100,tabMin[1],tabMax[1]);
1289 hCorrelMuVsS->SetXTitle(
"S");
1290 hCorrelMuVsS->SetYTitle(
"Mu");
1291 hCorrelMuVsS->SetStats(0);
1292 hCorrelMuVsS->SetContour(30);
1293 TH2F *hCorrelSigVsI =
new TH2F(
"hCorrelSigVsI",
"hCorrelSigVsI",100,tabMin[6],tabMax[6],100,tabMin[2],tabMax[2]);
1294 hCorrelSigVsI->SetXTitle(
"I");
1295 hCorrelSigVsI->SetYTitle(
"Sig");
1296 hCorrelSigVsI->SetStats(0);
1297 hCorrelSigVsI->SetContour(30);
1298 TH2F *hCorrelSigVsS =
new TH2F(
"hCorrelSigVsS",
"hCorrelSigVsS",100,tabMin[8],tabMax[8],100,tabMin[2],tabMax[2]);
1299 hCorrelSigVsS->SetXTitle(
"S");
1300 hCorrelSigVsS->SetYTitle(
"Sig");
1301 hCorrelSigVsS->SetStats(0);
1302 hCorrelSigVsS->SetContour(30);
1303 TH2F *hCorrelDvsSig =
new TH2F(
"hCorrelDvsSig",
"hCorrelDvsSig",100,tabMin[2],tabMax[2],100,0.,5.);
1304 hCorrelDvsSig->SetXTitle(
"#sigma");
1305 hCorrelDvsSig->SetYTitle(
"d_{fit}");
1306 hCorrelDvsSig->SetStats(0);
1307 hCorrelDvsSig->SetContour(30);
1308 TH2F *hCorrelCmpD =
new TH2F(
"hCorrelCmpD",
"hCorrelCmpD",100,0.,5.,100,-1.,5.);
1309 hCorrelCmpD->SetXTitle(
"d_{fit}");
1310 hCorrelCmpD->SetYTitle(
"(d_{N}-d_{fit})/d_{fit}");
1311 hCorrelCmpD->SetStats(0);
1312 hCorrelCmpD->SetContour(30);
1315 hAllSpaceEMCALSoverN->SetXTitle(
"Column");
1316 hAllSpaceEMCALSoverN->SetYTitle(
"Row");
1317 hAllSpaceEMCALSoverN->SetStats(0);
1318 hAllSpaceEMCALSoverN->SetContour(30);
1319 TH2F *hAllSpaceDCALSoverN =
new TH2F(
"hAllSpaceDCALSoverN",
"hAllSpaceDCALSoverN",2*kNbColMax,-0.5,2.*kNbColMax-0.5,(
int)((kNbSMDCAL+1)/2)*kNbRowDCAL+(
int)((kNbSMDCALthird+1)/2)*kNbRowDCALthird,-0.5,(
int)((kNbSMDCAL+1)/2)*kNbRowDCAL+(
int)((kNbSMDCALthird+1)/2)*kNbRowDCALthird-0.5);
1320 hAllSpaceDCALSoverN->SetXTitle(
"Column");
1321 hAllSpaceDCALSoverN->SetYTitle(
"Row");
1322 hAllSpaceDCALSoverN->SetStats(0);
1323 hAllSpaceDCALSoverN->SetContour(30);
1324 TH1F *hCoeff =
new TH1F(
"hCoeff",
"hCoeff",100,0.9,1.1);
1325 hCoeff->SetXTitle(
"Coeff");
1326 hCoeff->SetYTitle(
"Counts");
1327 hCoeff->SetStats(0);
1328 TH1F *hCoeffOld =
new TH1F(
"hCoeffOld",
"hCoeffOld",100,0.9,1.1);
1329 hCoeffOld->SetXTitle(
"Coeff");
1330 hCoeffOld->SetYTitle(
"Counts");
1331 hCoeffOld->SetStats(0);
1332 TH1F *hCoeffOldCorr =
new TH1F(
"hCoeffOldCorr",
"hCoeffOldCorr",100,0.9,1.1);
1333 hCoeffOldCorr->SetXTitle(
"Coeff");
1334 hCoeffOldCorr->SetYTitle(
"Counts");
1335 hCoeffOldCorr->SetStats(0);
1336 TH1F *hCoeffOldLarge =
new TH1F(
"hCoeffOldLarge",
"hCoeffOldLarge",100,0.4,1.8);
1337 hCoeffOldLarge->SetXTitle(
"Coeff");
1338 hCoeffOldLarge->SetYTitle(
"Counts");
1339 hCoeffOldLarge->SetStats(0);
1340 TH1F *hCoeffOldCorrLarge =
new TH1F(
"hCoeffOldCorrLarge",
"hCoeffOldCorrLarge",100,0.4,1.8);
1341 hCoeffOldCorrLarge->SetXTitle(
"Coeff");
1342 hCoeffOldCorrLarge->SetYTitle(
"Counts");
1343 hCoeffOldCorrLarge->SetStats(0);
1344 TH1F *hCtrlEvolMu =
new TH1F(
"hCtrlEvolMu",
"hCtrlEvolMu",100,-3.,3.);
1345 hCtrlEvolMu->SetXTitle(
"(#mu_{2}-m_{PDG})/(#mu_{1}-m_{PDG})");
1346 hCtrlEvolMu->SetYTitle(
"Counts");
1347 hCtrlEvolMu->SetStats(0);
1348 TH2F *h2CtrlEvolMu1 =
new TH2F(
"h2CtrlEvolMu1",
"h2CtrlEvolMu1",200,mPDG-10.,mPDG+20.,100,-3.,3.);
1349 h2CtrlEvolMu1->SetXTitle(
"#mu_{1}");
1350 h2CtrlEvolMu1->SetYTitle(
"(#mu_{2}-m_{PDG})/(#mu_{1}-m_{PDG})");
1351 h2CtrlEvolMu1->SetStats(0);
1352 h2CtrlEvolMu1->SetContour(30);
1353 TH2F *h2CtrlEvolMu2 =
new TH2F(
"h2CtrlEvolMu2",
"h2CtrlEvolMu2",200,-0.1,0.2,200,-0.1,0.2);
1354 h2CtrlEvolMu2->SetXTitle(
"(#mu_{1}-m_{PDG})/m_{PDG}");
1355 h2CtrlEvolMu2->SetYTitle(
"(#mu_{1}-#mu_{2})/m_{PDG}");
1356 h2CtrlEvolMu2->SetStats(0);
1357 h2CtrlEvolMu2->SetContour(30);
1358 TH1F *hCtrlEvolCoeff =
new TH1F(
"hCtrlEvolCoeff",
"hCtrlEvolCoeff",100,-3.,3.);
1359 hCtrlEvolCoeff->SetXTitle(
"(c_{2}-1)/(c_{1}-1)");
1360 hCtrlEvolCoeff->SetYTitle(
"Counts");
1361 hCtrlEvolCoeff->SetStats(0);
1362 TH2F *h2CtrlEvolCoeff1 =
new TH2F(
"h2CtrlEvolCoeff1",
"h2CtrlEvolCoeff1",200,0.8,1.2,100,-3.,3.);
1363 h2CtrlEvolCoeff1->SetXTitle(
"c_{1}");
1364 h2CtrlEvolCoeff1->SetYTitle(
"(c_{2}-1)/(c_{1}-1)");
1365 h2CtrlEvolCoeff1->SetStats(0);
1366 h2CtrlEvolCoeff1->SetContour(30);
1367 TH2F *h2CtrlEvolCoeff2 =
new TH2F(
"h2CtrlEvolCoeff2",
"h2CtrlEvolCoeff2",200,-0.1,0.2,200,-0.1,0.2);
1368 h2CtrlEvolCoeff2->SetXTitle(
"c_{1}-1");
1369 h2CtrlEvolCoeff2->SetYTitle(
"c_{1}-c_{2}");
1370 h2CtrlEvolCoeff2->SetStats(0);
1371 h2CtrlEvolCoeff2->SetContour(30);
1387 for (i=0;i<nbPtBins-2;i++)
1388 {tabGraphX[i+1]=tabPtBins[i]+(tabPtBins[i+1]-tabPtBins[i])/2.;
1389 tabErrGraphX[i+1]=(tabPtBins[i+1]-tabPtBins[i])/2.;
1404 for (i=0;i<hAllM_05->GetNbinsY();i++)
1405 {
for (k=0;k<nbPtBins-1;k++)
1406 {
if (hAllM_05->GetYaxis()->GetBinCenter(i+1) < tabPtBins[k])
break;
1408 for (j=0;j<hAllM_05->GetNbinsX();j++)
1411 hAllMPerSM[(3*(nbPtBins+1))*kNbSMtot+3*k+0]->Fill(hAllM_05->GetXaxis()->GetBinCenter(j+1),hAllM_05->GetBinContent(j+1,i+1));
1412 hAllMPerSM[(3*(nbPtBins+1))*kNbSMtot+3*k+0]->SetEntries(hAllMPerSM[(3*(nbPtBins+1))*kNbSMtot+3*k+0]->GetEntries()+hAllM_05->GetBinContent(j+1,i+1));
1413 hAllMPerSM[(3*(nbPtBins+1))*kNbSMtot+3*nbPtBins+0]->Fill(hAllM_05->GetXaxis()->GetBinCenter(j+1),hAllM_05->GetBinContent(j+1,i+1));
1414 hAllMPerSM[(3*(nbPtBins+1))*kNbSMtot+3*nbPtBins+0]->SetEntries(hAllMPerSM[(3*(nbPtBins+1))*kNbSMtot+3*nbPtBins+0]->GetEntries()+hAllM_05->GetBinContent(j+1,i+1));
1415 hAllMPerSM[(3*(nbPtBins+1))*kNbSMtot+3*k+1]->Fill(hAllM_05->GetXaxis()->GetBinCenter(j+1),hAllM_05_masked->GetBinContent(j+1,i+1));
1416 hAllMPerSM[(3*(nbPtBins+1))*kNbSMtot+3*k+1]->SetEntries(hAllMPerSM[(3*(nbPtBins+1))*kNbSMtot+3*k+1]->GetEntries()+hAllM_05_masked->GetBinContent(j+1,i+1));
1417 hAllMPerSM[(3*(nbPtBins+1))*kNbSMtot+3*nbPtBins+1]->Fill(hAllM_05->GetXaxis()->GetBinCenter(j+1),hAllM_05_masked->GetBinContent(j+1,i+1));
1418 hAllMPerSM[(3*(nbPtBins+1))*kNbSMtot+3*nbPtBins+1]->SetEntries(hAllMPerSM[(3*(nbPtBins+1))*kNbSMtot+3*nbPtBins+1]->GetEntries()+hAllM_05_masked->GetBinContent(j+1,i+1));
1419 hAllMPerSM[(3*(nbPtBins+1))*kNbSMtot+3*k+2]->Fill(hAllM_05->GetXaxis()->GetBinCenter(j+1),hAllM_05->GetBinContent(j+1,i+1)-hAllM_05_masked->GetBinContent(j+1,i+1));
1420 hAllMPerSM[(3*(nbPtBins+1))*kNbSMtot+3*k+2]->SetEntries(hAllMPerSM[(3*(nbPtBins+1))*kNbSMtot+3*k+2]->GetEntries()+hAllM_05->GetBinContent(j+1,i+1)-hAllM_05_masked->GetBinContent(j+1,i+1));
1421 hAllMPerSM[(3*(nbPtBins+1))*kNbSMtot+3*nbPtBins+2]->Fill(hAllM_05->GetXaxis()->GetBinCenter(j+1),hAllM_05->GetBinContent(j+1,i+1)-hAllM_05_masked->GetBinContent(j+1,i+1));
1422 hAllMPerSM[(3*(nbPtBins+1))*kNbSMtot+3*nbPtBins+2]->SetEntries(hAllMPerSM[(3*(nbPtBins+1))*kNbSMtot+3*nbPtBins+2]->GetEntries()+hAllM_05->GetBinContent(j+1,i+1)-hAllM_05_masked->GetBinContent(j+1,i+1));
1423 for (m=0;m<kNbZones;m++)
1424 {hMassDistrPerSMPerPtPerZone[(kNbZones*(nbPtBins+1))*kNbSMtot+kNbZones*k+m]->Fill(hAllM_05->GetXaxis()->GetBinCenter(j+1),hAllM_05_Zones[m]->GetBinContent(j+1,i+1));
1425 hMassDistrPerSMPerPtPerZone[(kNbZones*(nbPtBins+1))*kNbSMtot+kNbZones*k+m]->SetEntries(hMassDistrPerSMPerPtPerZone[(kNbZones*(nbPtBins+1))*kNbSMtot+kNbZones*k+0]->GetEntries()+hAllM_05_Zones[m]->GetBinContent(j+1,i+1));
1426 hMassDistrPerSMPerPtPerZone[(kNbZones*(nbPtBins+1))*kNbSMtot+kNbZones*nbPtBins+m]->Fill(hAllM_05->GetXaxis()->GetBinCenter(j+1),hAllM_05_Zones[m]->GetBinContent(j+1,i+1));
1427 hMassDistrPerSMPerPtPerZone[(kNbZones*(nbPtBins+1))*kNbSMtot+kNbZones*nbPtBins+m]->SetEntries(hMassDistrPerSMPerPtPerZone[(kNbZones*(nbPtBins+1))*kNbSMtot+kNbZones*nbPtBins+0]->GetEntries()+hAllM_05_Zones[m]->GetBinContent(j+1,i+1));
1430 {hAllMPerSM[(3*(nbPtBins+1))*iSM+3*k+0]->Fill(hAllM_05->GetXaxis()->GetBinCenter(j+1),hAllM_05_SM[iSM]->GetBinContent(j+1,i+1));
1431 hAllMPerSM[(3*(nbPtBins+1))*iSM+3*k+0]->SetEntries(hAllMPerSM[(3*(nbPtBins+1))*iSM+3*k+0]->GetEntries()+hAllM_05_SM[iSM]->GetBinContent(j+1,i+1));
1432 hAllMPerSM[(3*(nbPtBins+1))*iSM+3*nbPtBins+0]->Fill(hAllM_05->GetXaxis()->GetBinCenter(j+1),hAllM_05_SM[iSM]->GetBinContent(j+1,i+1));
1433 hAllMPerSM[(3*(nbPtBins+1))*iSM+3*nbPtBins+0]->SetEntries(hAllMPerSM[(3*(nbPtBins+1))*iSM+3*nbPtBins+0]->GetEntries()+hAllM_05_SM[iSM]->GetBinContent(j+1,i+1));
1434 hAllMPerSM[(3*(nbPtBins+1))*iSM+3*k+1]->Fill(hAllM_05->GetXaxis()->GetBinCenter(j+1),hAllM_05_SM_masked[iSM]->GetBinContent(j+1,i+1));
1435 hAllMPerSM[(3*(nbPtBins+1))*iSM+3*k+1]->SetEntries(hAllMPerSM[(3*(nbPtBins+1))*iSM+3*k+1]->GetEntries()+hAllM_05_SM_masked[iSM]->GetBinContent(j+1,i+1));
1436 hAllMPerSM[(3*(nbPtBins+1))*iSM+3*nbPtBins+1]->Fill(hAllM_05->GetXaxis()->GetBinCenter(j+1),hAllM_05_SM_masked[iSM]->GetBinContent(j+1,i+1));
1437 hAllMPerSM[(3*(nbPtBins+1))*iSM+3*nbPtBins+1]->SetEntries(hAllMPerSM[(3*(nbPtBins+1))*iSM+3*nbPtBins+1]->GetEntries()+hAllM_05_SM_masked[iSM]->GetBinContent(j+1,i+1));
1438 hAllMPerSM[(3*(nbPtBins+1))*iSM+3*k+2]->Fill(hAllM_05->GetXaxis()->GetBinCenter(j+1),hAllM_05_SM[iSM]->GetBinContent(j+1,i+1)-hAllM_05_SM_masked[iSM]->GetBinContent(j+1,i+1));
1439 hAllMPerSM[(3*(nbPtBins+1))*iSM+3*k+2]->SetEntries(hAllMPerSM[(3*(nbPtBins+1))*iSM+3*k+2]->GetEntries()+hAllM_05_SM[iSM]->GetBinContent(j+1,i+1)-hAllM_05_SM_masked[iSM]->GetBinContent(j+1,i+1));
1440 hAllMPerSM[(3*(nbPtBins+1))*iSM+3*nbPtBins+2]->Fill(hAllM_05->GetXaxis()->GetBinCenter(j+1),hAllM_05_SM[iSM]->GetBinContent(j+1,i+1)-hAllM_05_SM_masked[iSM]->GetBinContent(j+1,i+1));
1441 hAllMPerSM[(3*(nbPtBins+1))*iSM+3*nbPtBins+2]->SetEntries(hAllMPerSM[(3*(nbPtBins+1))*iSM+3*nbPtBins+2]->GetEntries()+hAllM_05_SM[iSM]->GetBinContent(j+1,i+1)-hAllM_05_SM_masked[iSM]->GetBinContent(j+1,i+1));
1442 for (m=0;m<kNbZones;m++)
1443 {hMassDistrPerSMPerPtPerZone[(kNbZones*(nbPtBins+1))*iSM+kNbZones*k+m]->Fill(hAllM_05->GetXaxis()->GetBinCenter(j+1),hAllM_05_SM_Zones[iSM][m]->GetBinContent(j+1,i+1));
1444 hMassDistrPerSMPerPtPerZone[(kNbZones*(nbPtBins+1))*iSM+kNbZones*k+m]->SetEntries(hMassDistrPerSMPerPtPerZone[(kNbZones*(nbPtBins+1))*iSM+kNbZones*k+0]->GetEntries()+hAllM_05_SM_Zones[iSM][m]->GetBinContent(j+1,i+1));
1445 hMassDistrPerSMPerPtPerZone[(kNbZones*(nbPtBins+1))*iSM+kNbZones*nbPtBins+m]->Fill(hAllM_05->GetXaxis()->GetBinCenter(j+1),hAllM_05_SM_Zones[iSM][m]->GetBinContent(j+1,i+1));
1446 hMassDistrPerSMPerPtPerZone[(kNbZones*(nbPtBins+1))*iSM+kNbZones*nbPtBins+m]->SetEntries(hMassDistrPerSMPerPtPerZone[(kNbZones*(nbPtBins+1))*iSM+kNbZones*nbPtBins+0]->GetEntries()+hAllM_05_SM_Zones[iSM][m]->GetBinContent(j+1,i+1));
1449 if ((hAllM_05->GetXaxis()->GetBinCenter(j+1) > mPDG-10.) && (hAllM_05->GetXaxis()->GetBinCenter(j+1) < mPDG+10.))
1451 {cmptPtMoyLow+=hAllM_05->GetBinContent(j+1,i+1);
1452 pTmoyLow+=hAllM_05->GetYaxis()->GetBinCenter(i+1)*hAllM_05->GetBinContent(j+1,i+1);
1454 if (k == nbPtBins-1)
1455 {cmptPtMoyHigh+=hAllM_05->GetBinContent(j+1,i+1);
1456 pTmoyHigh+=hAllM_05->GetYaxis()->GetBinCenter(i+1)*hAllM_05->GetBinContent(j+1,i+1);
1461 if (cmptPtMoyLow != 0.) pTmoyLow=pTmoyLow/cmptPtMoyLow;
1462 pTmoyHigh=pTmoyHigh/cmptPtMoyHigh;
1463 printf(
"\nMean pT low = %f, high = %f\n\n",pTmoyLow,pTmoyHigh);
1464 tabGraphX[0]=pTmoyLow;
1465 tabErrGraphX[0]=tabGraphX[1]-tabErrGraphX[1]-pTmoyLow;
1466 tabGraphX[nbPtBins-1]=pTmoyHigh;
1467 tabErrGraphX[nbPtBins-1]=pTmoyHigh-tabGraphX[nbPtBins-2]-tabErrGraphX[nbPtBins-2];
1486 hAllM_05Proj = hAllM_05->ProjectionX(
"hAllM_05Proj",0,-1,
"e");
1487 hAllM_05Proj->SetLineColor(colorIndex[1]);
1495 TF1 *fitfunBkgPol2 = 0;
1497 fitfun =
new TF1(
"fitfun",pi0massP1,100,250,5);
1499 fitfun =
new TF1(
"fitfun",pi0massP2,100,250,6);
1500 fitfun->SetLineColor(kRed);
1501 fitfun->SetLineWidth(2);
1502 fitfun3 =
new TF1(
"fitfun3",pi0massP3,100,250,7);
1503 fitfun3->SetLineColor(kRed);
1504 fitfun3->SetLineWidth(2);
1506 fitfun->SetParName(0,
"A");
1507 fitfun->SetParName(1,
"m_{0}");
1508 fitfun->SetParName(2,
"#sigma");
1509 fitfun->SetParName(3,
"a_{0}");
1510 fitfun->SetParName(4,
"a_{1}");
1512 fitfun->SetParName(5,
"a_{2}");
1515 fitfun->SetParLimits(0, 8.,maxGaussAmpl);
1516 fitfun->SetParLimits(1, 80.,160.);
1517 fitfun->SetParLimits(2, 2.,35.);
1518 fitfun3->SetParLimits(0, 8.,maxGaussAmpl);
1519 fitfun3->SetParLimits(1, 80.,160.);
1520 fitfun3->SetParLimits(2, 2.,35.);
1522 fitfunBkgPol2 =
new TF1(
"fitfunBkgPol2",
"[0] + [1]*x + [2]*x*x",100.,250.);
1523 fitfunBkgPol2->SetLineWidth(1);
1524 fitfunBkgPol2->SetLineColor(kMagenta);
1526 gStyle->SetOptTitle(0);
1527 hAllM_05Proj->Rebin(rebin);
1529 hAllM_05Proj->SetXTitle(
"M_{#gamma,#gamma} (MeV/c^{2})");
1532 tmpY=hAllM_05Proj->GetBinContent(hAllM_05Proj->FindBin(tmpX));
1533 fitPar4=2.*tmpY/tmpX;
1534 fitPar5=-tmpY/(tmpX*tmpX);
1535 fitfun->SetParameter(0,(
double)hAllM_05Proj->GetEntries()/100.);
1536 fitfun->SetParameter(1,mPDG);
1537 fitfun->SetParameter(2,typicalWidth);
1538 fitfun->SetParameter(3,0.);
1539 fitfun->SetParameter(4,fitPar4);
1540 fitfun->SetParameter(5,fitPar5);
1541 printf(
"Fit start parameters : amplitude %f, b %f, a %f\n\n",fitfun->GetParameter(0),fitfun->GetParameter(4),fitfun->GetParameter(5));
1542 hAllM_05Proj->Fit(
"fitfun",
"",
"",50,250);
1543 fitPar3=fitfun->GetParameter(3);
1544 fitPar4=fitfun->GetParameter(4);
1545 fitPar5=fitfun->GetParameter(5);
1546 nbTot=hAllM_05Proj->GetEntries();
1547 nbSig=fitfun->GetParameter(0);
1563 TFile *rootFileOut =
new TFile(
"output_calibPi0.root",
"RECREATE");
1565 sprintf(psfile,
"output_calibPi0.ps");
1566 const int cWidth=500;
1567 const int cHeight=(int)(500*(29./21.));
1568 TCanvas *c1 =
new TCanvas(
"c1",
"EMCal cosmics analysis",cWidth,cHeight);
1569 TPostScript *ps =
new TPostScript(psfile,111);
1572 hAllM_05Proj->Write();
1588 printf(
"\nInv mass plots per pT bin per SM.\n");
1589 linePDGMass->SetLineColor(kBlue);
1590 for (iSM=0;iSM<(kNbSMtot+1);iSM++)
1591 {
if ((iSM<kNbSMtot) && (tabChoiceCalos[
SMdetType[iSM]] == 0))
1592 {printf(
"Skip SM %d of type %s.\n",iSM,
detTypeString[SMdetType[iSM]]);
1595 for (j=0;j<(int)((
double)nbPtBins/8.)+1;j++)
1600 {
if ((j*8+i) > nbPtBins)
break;
1602 if ((j*8+i) != nbPtBins) printf(
"\nNow fitting pT bin %d",j*8+i);
1603 else printf(
"\nNow fitting all pT");
1604 if (iSM != kNbSMtot) printf(
" in SM %d -- nEntries = %f\n",iSM,hAllMPerSM[(3*(nbPtBins+1))*iSM+3*(j*8+i)+0]->GetEntries());
1605 else printf(
" for all SMs -- nEntries = %f\n",hAllMPerSM[(3*(nbPtBins+1))*iSM+3*(j*8+i)+0]->GetEntries());
1606 hAllMPerSM[(3*(nbPtBins+1))*iSM+3*(j*8+i)+0]->
Draw();
1607 if ((j*8+i) < (nbPtBins-1))
1608 {fitRangeMin=14.28*tabPtBins[j*8+i]+37.15;
1609 if (tabPtBins[j*8+i] > 3.0) fitRangeMin=80.;
1610 fitRangeMax=11.54*tabPtBins[j*8+i]+201.5;
1614 fitRangeMax=11.54*tabPtBins[nbPtBins-2]+201.5;
1616 for (iStruct=0;iStruct<3;iStruct++)
1617 {fitfun->SetParameter(0,hAllMPerSM[(3*(nbPtBins+1))*iSM+3*(j*8+i)+iStruct]->GetEntries()*(
double)nbSig/(
double)nbTot);
1618 fitfun->SetParameter(1,mPDG);
1619 fitfun->SetParameter(2,typicalWidth);
1620 fitfun->SetParameter(3,fitPar3*(
double)hAllMPerSM[(3*(nbPtBins+1))*iSM+3*(j*8+i)+iStruct]->GetEntries()/(
double)nbTot);
1621 fitfun->SetParameter(4,fitPar4*(
double)hAllMPerSM[(3*(nbPtBins+1))*iSM+3*(j*8+i)+iStruct]->GetEntries()/(
double)nbTot);
1622 fitfun->SetParameter(5,fitPar5*(
double)hAllMPerSM[(3*(nbPtBins+1))*iSM+3*(j*8+i)+iStruct]->GetEntries()/(
double)nbTot);
1624 hAllMPerSM[(3*(nbPtBins+1))*iSM+3*(j*8+i)+iStruct]->Fit(
"fitfun",
"R",
"SAME",fitRangeMin,fitRangeMax);
1626 {
case 0 : lineFittedMass->SetLineColor(colorIndexStruct[iStruct]);
1627 lineFittedMass->SetX1(fitfun->GetParameter(1));
1628 lineFittedMass->SetX2(fitfun->GetParameter(1));
1629 lineFittedMass->SetY2(1.05*hAllMPerSM[(3*(nbPtBins+1))*iSM+3*(j*8+i)+0]->GetMaximum());
1630 lineFittedMass->Draw(
"SAME");
1632 case 1 : lineFittedWidth1->SetLineColor(colorIndexStruct[iStruct]);
1633 lineFittedWidth1->SetX1(fitfun->GetParameter(1));
1634 lineFittedWidth1->SetX2(fitfun->GetParameter(1));
1635 lineFittedWidth1->SetY2(1.05*hAllMPerSM[(3*(nbPtBins+1))*iSM+3*(j*8+i)+0]->GetMaximum());
1636 lineFittedWidth1->Draw(
"SAME");
1638 case 2 : lineFittedWidth2->SetLineColor(colorIndexStruct[iStruct]);
1639 lineFittedWidth2->SetX1(fitfun->GetParameter(1));
1640 lineFittedWidth2->SetX2(fitfun->GetParameter(1));
1641 lineFittedWidth2->SetY2(1.05*hAllMPerSM[(3*(nbPtBins+1))*iSM+3*(j*8+i)+0]->GetMaximum());
1642 lineFittedWidth2->Draw(
"SAME");
1646 if ((j*8+i) < nbPtBins)
1647 {tabGraphYmass[3*(j*8+i)+iStruct]=fitfun->GetParameter(1);
1648 tabGraphYsig[3*(j*8+i)+iStruct]=fitfun->GetParameter(2);
1649 tabGraphYnumber[3*(j*8+i)+iStruct]=fitfun->GetParameter(2)*fitfun->GetParameter(0)*TMath::Sqrt(2.*TMath::Pi())/hAllMPerSM[(3*(nbPtBins+1))*iSM+3*(j*8+i)+iStruct]->GetBinWidth(1);
1650 tabErrGraphYmass[3*(j*8+i)+iStruct]=fitfun->GetParError(1);
1651 tabErrGraphYsig[3*(j*8+i)+iStruct]=fitfun->GetParError(2);
1652 if (fitfun->Integral(mPDG-3.*fitfun->GetParameter(2),mPDG+3.*fitfun->GetParameter(2)) >= 0) tabErrGraphYnumber[3*(j*8+i)+iStruct]=TMath::Sqrt(fitfun->Integral(mPDG-3.*fitfun->GetParameter(2),mPDG+3.*fitfun->GetParameter(2)));
1653 else tabErrGraphYnumber[3*(j*8+i)+iStruct]=0.;
1655 hAllMPerSM[(3*(nbPtBins+1))*iSM+3*(j*8+i)+iStruct]->Write();
1657 if ((j*8+i) < nbPtBins)
1658 {
if ((tabGraphYnumber[3*(j*8+i)+1] != 0.) && (tabGraphYnumber[3*(j*8+i)+2] != 0.))
1659 {tabGraphYnumberRatio[3*(j*8+i)+0]=tabGraphYnumber[3*(j*8+i)+2]/tabGraphYnumber[3*(j*8+i)+1];
1660 tabErrGraphYnumberRatio[3*(j*8+i)+0]=tabGraphYnumberRatio[3*(j*8+i)+0]*TMath::Sqrt((tabErrGraphYnumber[3*(j*8+i)+2]/tabGraphYnumber[3*(j*8+i)+2])*(tabErrGraphYnumber[3*(j*8+i)+2]/tabGraphYnumber[3*(j*8+i)+2])+(tabErrGraphYnumber[3*(j*8+i)+1]/tabGraphYnumber[3*(j*8+i)+1])*(tabErrGraphYnumber[3*(j*8+i)+1]/tabGraphYnumber[3*(j*8+i)+1]));
1663 {tabGraphYnumberRatio[3*(j*8+i)+0]=0.;
1664 tabErrGraphYnumberRatio[3*(j*8+i)+0]=0.;
1667 linePDGMass->SetY2(1.05*hAllMPerSM[(3*(nbPtBins+1))*iSM+3*(j*8+i)+0]->GetMaximum());
1668 linePDGMass->Draw(
"SAME");
1670 if (iSM != kNbSMtot) sprintf(txtPS,
"Pi0 inv mass in SM %d,",iSM);
1671 else sprintf(txtPS,
"Pi0 inv mass in all SMs,");
1672 if ((j*8+i) != nbPtBins) sprintf(txtPS,
"%s %4.2f < pT < %4.2f GeV",txtPS,tabGraphX[j*8+i]-tabErrGraphX[j*8+i],tabGraphX[j*8+i]+tabErrGraphX[j*8+i]);
1673 else sprintf(txtPS,
"%s pT-integrated",txtPS);
1674 ps->TextNDC(0.3,0.93,txtPS);
1678 for (iStruct=0;iStruct<3;iStruct++)
1679 {
for (iPt=0;iPt<nbPtBins;iPt++)
1680 {tabTmpGraphYmass[iPt]=tabGraphYmass[3*iPt+iStruct];
1681 tabTmpErrGraphYmass[iPt]=tabErrGraphYmass[3*iPt+iStruct];
1682 tabTmpGraphYsig[iPt]=tabGraphYsig[3*iPt+iStruct];
1683 tabTmpErrGraphYsig[iPt]=tabErrGraphYsig[3*iPt+iStruct];
1684 tabTmpGraphYnumber[iPt]=tabGraphYnumber[3*iPt+iStruct];
1685 tabTmpErrGraphYnumber[iPt]=tabErrGraphYnumber[3*iPt+iStruct];
1686 tabTmpGraphYnumberRatio[iPt]=tabGraphYnumberRatio[3*iPt+iStruct];
1687 tabTmpErrGraphYnumberRatio[iPt]=tabErrGraphYnumberRatio[3*iPt+iStruct];
1689 tgeMass[3*iSM+iStruct] =
new TGraphErrors(nbPtBins,tabGraphX,tabTmpGraphYmass,tabErrGraphX,tabTmpErrGraphYmass);
1690 tgeSig[3*iSM+iStruct] =
new TGraphErrors(nbPtBins,tabGraphX,tabTmpGraphYsig,tabErrGraphX,tabTmpErrGraphYsig);
1691 tgeNumber[3*iSM+iStruct] =
new TGraphErrors(nbPtBins,tabGraphX,tabTmpGraphYnumber,tabErrGraphX,tabTmpErrGraphYnumber);
1692 tgeNumberRatio[3*iSM+iStruct] =
new TGraphErrors(nbPtBins,tabGraphX,tabTmpGraphYnumberRatio,tabErrGraphX,tabTmpErrGraphYnumberRatio);
1693 tgeMass[3*iSM+iStruct]->SetName(Form(
"tgeMass_SM%d_%d",iSM,iStruct));
1694 tgeSig[3*iSM+iStruct]->SetName(Form(
"tgeSig_SM%d_%d",iSM,iStruct));
1695 tgeNumber[3*iSM+iStruct]->SetName(Form(
"tgeNumber_SM%d_%d",iSM,iStruct));
1696 tgeNumberRatio[3*iSM+iStruct]->SetName(Form(
"tgeNumberRatio_SM%d_%d",iSM,iStruct));
1697 tgeMass[3*iSM+iStruct]->SetLineColor(colorIndexStruct[iStruct]);
1698 tgeSig[3*iSM+iStruct]->SetLineColor(colorIndexStruct[iStruct]);
1699 tgeNumber[3*iSM+iStruct]->SetLineColor(colorIndexStruct[iStruct]);
1700 tgeNumberRatio[3*iSM+iStruct]->SetLineColor(colorIndexStruct[iStruct]);
1701 tgeMass[3*iSM+iStruct]->GetHistogram()->SetXTitle(
"#pi^{0} p_{#perp} (GeV)");
1702 tgeMass[3*iSM+iStruct]->GetHistogram()->SetYTitle(
"Fitted #pi^{0} inv mass (MeV)");
1703 tgeMass[3*iSM+iStruct]->GetHistogram()->SetMinimum(120.);
1704 tgeMass[3*iSM+iStruct]->GetHistogram()->SetMaximum(150.);
1705 tgeSig[3*iSM+iStruct]->GetHistogram()->SetXTitle(
"#pi^{0} p_{#perp} (GeV)");
1706 tgeSig[3*iSM+iStruct]->GetHistogram()->SetYTitle(
"Fitted #pi^{0} width (MeV)");
1707 tgeSig[3*iSM+iStruct]->GetHistogram()->SetMinimum(7.5);
1708 tgeSig[3*iSM+iStruct]->GetHistogram()->SetMaximum(22.);
1709 tgeNumber[3*iSM+iStruct]->GetHistogram()->SetXTitle(
"#pi^{0} p_{#perp} (GeV)");
1710 tgeNumber[3*iSM+iStruct]->GetHistogram()->SetYTitle(
"Number of #pi^{0} (counts)");
1711 tgeNumberRatio[3*iSM+iStruct]->GetHistogram()->SetXTitle(
"#pi^{0} p_{#perp} (GeV)");
1712 tgeNumberRatio[3*iSM+iStruct]->GetHistogram()->SetYTitle(
"Ratios of numbers of #pi^{0}");
1716 for (iSM=0;iSM<(kNbSMtot+1);iSM++)
1717 {
if ((iSM<kNbSMtot) && (tabChoiceCalos[
SMdetType[iSM]] == 0))
1718 {printf(
"Skip SM %d of type %s.\n",iSM,
detTypeString[SMdetType[iSM]]);
1721 for (j=0;j<(int)((
double)nbPtBins/8.)+1;j++)
1726 {
if ((j*8+i) > nbPtBins)
break;
1728 if ((j*8+i) != nbPtBins) printf(
"\nNow fitting pT bin %d",j*8+i);
1729 else printf(
"\nNow fitting all pT");
1730 if (iSM != kNbSMtot) printf(
" in SM %d -- nEntries = %f\n",iSM,hMassDistrPerSMPerPtPerZone[(kNbZones*(nbPtBins+1))*iSM+kNbZones*(j*8+i)+0]->GetEntries());
1731 else printf(
" for all SMs -- nEntries = %f\n",hMassDistrPerSMPerPtPerZone[(kNbZones*(nbPtBins+1))*iSM+kNbZones*(j*8+i)+0]->GetEntries());
1732 hMassDistrPerSMPerPtPerZone[(kNbZones*(nbPtBins+1))*iSM+kNbZones*(j*8+i)+3]->
Draw();
1733 if ((j*8+i) < (nbPtBins-1))
1734 {fitRangeMin=14.28*tabPtBins[j*8+i]+37.15;
1735 if (tabPtBins[j*8+i] > 3.0) fitRangeMin=80.;
1736 fitRangeMax=11.54*tabPtBins[j*8+i]+201.5;
1740 fitRangeMax=11.54*tabPtBins[nbPtBins-2]+201.5;
1742 for (iStruct=0;iStruct<kNbZones;iStruct++)
1743 {fitfun->SetParameter(0,hMassDistrPerSMPerPtPerZone[(kNbZones*(nbPtBins+1))*iSM+kNbZones*(j*8+i)+iStruct]->GetEntries()*(
double)nbSig/(
double)nbTot);
1744 fitfun->SetParameter(1,mPDG);
1745 fitfun->SetParameter(2,typicalWidth);
1746 fitfun->SetParameter(3,fitPar3*(
double)hMassDistrPerSMPerPtPerZone[(kNbZones*(nbPtBins+1))*iSM+kNbZones*(j*8+i)+iStruct]->GetEntries()/(
double)nbTot);
1747 fitfun->SetParameter(4,fitPar4*(
double)hMassDistrPerSMPerPtPerZone[(kNbZones*(nbPtBins+1))*iSM+kNbZones*(j*8+i)+iStruct]->GetEntries()/(
double)nbTot);
1748 fitfun->SetParameter(5,fitPar5*(
double)hMassDistrPerSMPerPtPerZone[(kNbZones*(nbPtBins+1))*iSM+kNbZones*(j*8+i)+iStruct]->GetEntries()/(
double)nbTot);
1750 hMassDistrPerSMPerPtPerZone[(kNbZones*(nbPtBins+1))*iSM+kNbZones*(j*8+i)+iStruct]->Fit(
"fitfun",
"R",
"SAME",fitRangeMin,fitRangeMax);
1751 if ((j*8+i) < nbPtBins)
1752 {tabGraphYmass[kNbZones*(j*8+i)+iStruct]=fitfun->GetParameter(1);
1753 tabGraphYsig[kNbZones*(j*8+i)+iStruct]=fitfun->GetParameter(2);
1754 tabGraphYnumber[kNbZones*(j*8+i)+iStruct]=fitfun->GetParameter(2)*fitfun->GetParameter(0)*TMath::Sqrt(2.*TMath::Pi())/hMassDistrPerSMPerPtPerZone[(kNbZones*(nbPtBins+1))*iSM+kNbZones*(j*8+i)+iStruct]->GetBinWidth(1);
1755 tabErrGraphYmass[kNbZones*(j*8+i)+iStruct]=fitfun->GetParError(1);
1756 tabErrGraphYsig[kNbZones*(j*8+i)+iStruct]=fitfun->GetParError(2);
1757 if (fitfun->Integral(mPDG-3.*fitfun->GetParameter(2),mPDG+3.*fitfun->GetParameter(2)) >= 0) tabErrGraphYnumber[kNbZones*(j*8+i)+iStruct]=TMath::Sqrt(fitfun->Integral(mPDG-3.*fitfun->GetParameter(2),mPDG+3.*fitfun->GetParameter(2)));
1758 else tabErrGraphYnumber[kNbZones*(j*8+i)+iStruct]=0.;
1760 hMassDistrPerSMPerPtPerZone[(kNbZones*(nbPtBins+1))*iSM+kNbZones*(j*8+i)+iStruct]->Write();
1762 if ((j*8+i) < nbPtBins)
1763 {
if ((tabGraphYnumber[kNbZones*(j*8+i)+0] != 0.) && (tabGraphYnumber[kNbZones*(j*8+i)+1] != 0.))
1764 {tabGraphYnumberRatio[((int)(kNbZones/2))*(kNbZones-1)*(j*8+i)+0]=tabGraphYnumber[kNbZones*(j*8+i)+1]/tabGraphYnumber[kNbZones*(j*8+i)+0];
1765 tabErrGraphYnumberRatio[((int)(kNbZones/2))*(kNbZones-1)*(j*8+i)+0]=tabGraphYnumberRatio[((
int)(kNbZones/2))*(kNbZones-1)*(j*8+i)+0]*TMath::Sqrt((tabErrGraphYnumber[kNbZones*(j*8+i)+1]/tabGraphYnumber[kNbZones*(j*8+i)+1])*(tabErrGraphYnumber[kNbZones*(j*8+i)+1]/tabGraphYnumber[kNbZones*(j*8+i)+1])+(tabErrGraphYnumber[kNbZones*(j*8+i)+0]/tabGraphYnumber[kNbZones*(j*8+i)+0])*(tabErrGraphYnumber[kNbZones*(j*8+i)+0]/tabGraphYnumber[kNbZones*(j*8+i)+0]));
1768 {tabGraphYnumberRatio[((int)(kNbZones/2))*(kNbZones-1)*(j*8+i)+0]=0.;
1769 tabErrGraphYnumberRatio[((int)(kNbZones/2))*(kNbZones-1)*(j*8+i)+0]=0.;
1771 if ((tabGraphYnumber[kNbZones*(j*8+i)+2] != 0.) && (tabGraphYnumber[kNbZones*(j*8+i)+3] != 0.))
1772 {tabGraphYnumberRatio[((int)(kNbZones/2))*(kNbZones-1)*(j*8+i)+1]=tabGraphYnumber[kNbZones*(j*8+i)+3]/tabGraphYnumber[kNbZones*(j*8+i)+2];
1773 tabErrGraphYnumberRatio[((int)(kNbZones/2))*(kNbZones-1)*(j*8+i)+1]=tabGraphYnumberRatio[((
int)(kNbZones/2))*(kNbZones-1)*(j*8+i)+2]*TMath::Sqrt((tabErrGraphYnumber[kNbZones*(j*8+i)+3]/tabGraphYnumber[kNbZones*(j*8+i)+3])*(tabErrGraphYnumber[kNbZones*(j*8+i)+3]/tabGraphYnumber[kNbZones*(j*8+i)+3])+(tabErrGraphYnumber[kNbZones*(j*8+i)+2]/tabGraphYnumber[kNbZones*(j*8+i)+2])*(tabErrGraphYnumber[kNbZones*(j*8+i)+2]/tabGraphYnumber[kNbZones*(j*8+i)+2]));
1776 {tabGraphYnumberRatio[((int)(kNbZones/2))*(kNbZones-1)*(j*8+i)+1]=0.;
1777 tabErrGraphYnumberRatio[((int)(kNbZones/2))*(kNbZones-1)*(j*8+i)+1]=0.;
1779 if ((tabGraphYnumber[kNbZones*(j*8+i)+4] != 0.) && (tabGraphYnumber[kNbZones*(j*8+i)+5] != 0.))
1780 {tabGraphYnumberRatio[((int)(kNbZones/2))*(kNbZones-1)*(j*8+i)+2]=tabGraphYnumber[kNbZones*(j*8+i)+5]/tabGraphYnumber[kNbZones*(j*8+i)+4];
1781 tabErrGraphYnumberRatio[((int)(kNbZones/2))*(kNbZones-1)*(j*8+i)+2]=tabGraphYnumberRatio[((
int)(kNbZones/2))*(kNbZones-1)*(j*8+i)+4]*TMath::Sqrt((tabErrGraphYnumber[kNbZones*(j*8+i)+5]/tabGraphYnumber[kNbZones*(j*8+i)+5])*(tabErrGraphYnumber[kNbZones*(j*8+i)+5]/tabGraphYnumber[kNbZones*(j*8+i)+5])+(tabErrGraphYnumber[kNbZones*(j*8+i)+4]/tabGraphYnumber[kNbZones*(j*8+i)+4])*(tabErrGraphYnumber[kNbZones*(j*8+i)+4]/tabGraphYnumber[kNbZones*(j*8+i)+4]));
1784 {tabGraphYnumberRatio[((int)(kNbZones/2))*(kNbZones-1)*(j*8+i)+2]=0.;
1785 tabErrGraphYnumberRatio[((int)(kNbZones/2))*(kNbZones-1)*(j*8+i)+2]=0.;
1787 if ((tabGraphYnumber[kNbZones*(j*8+i)+5] != 0.) && (tabGraphYnumber[kNbZones*(j*8+i)+6] != 0.))
1788 {tabGraphYnumberRatio[((int)(kNbZones/2))*(kNbZones-1)*(j*8+i)+3]=tabGraphYnumber[kNbZones*(j*8+i)+6]/tabGraphYnumber[kNbZones*(j*8+i)+5];
1789 tabErrGraphYnumberRatio[((int)(kNbZones/2))*(kNbZones-1)*(j*8+i)+3]=tabGraphYnumberRatio[((
int)(kNbZones/2))*(kNbZones-1)*(j*8+i)+5]*TMath::Sqrt((tabErrGraphYnumber[kNbZones*(j*8+i)+6]/tabGraphYnumber[kNbZones*(j*8+i)+6])*(tabErrGraphYnumber[kNbZones*(j*8+i)+6]/tabGraphYnumber[kNbZones*(j*8+i)+6])+(tabErrGraphYnumber[kNbZones*(j*8+i)+5]/tabGraphYnumber[kNbZones*(j*8+i)+5])*(tabErrGraphYnumber[kNbZones*(j*8+i)+5]/tabGraphYnumber[kNbZones*(j*8+i)+5]));
1792 {tabGraphYnumberRatio[((int)(kNbZones/2))*(kNbZones-1)*(j*8+i)+3]=0.;
1793 tabErrGraphYnumberRatio[((int)(kNbZones/2))*(kNbZones-1)*(j*8+i)+3]=0.;
1795 if ((tabGraphYnumber[kNbZones*(j*8+i)+4] != 0.) && (tabGraphYnumber[kNbZones*(j*8+i)+6] != 0.))
1796 {tabGraphYnumberRatio[((int)(kNbZones/2))*(kNbZones-1)*(j*8+i)+4]=tabGraphYnumber[kNbZones*(j*8+i)+6]/tabGraphYnumber[kNbZones*(j*8+i)+4];
1797 tabErrGraphYnumberRatio[((int)(kNbZones/2))*(kNbZones-1)*(j*8+i)+4]=tabGraphYnumberRatio[((
int)(kNbZones/2))*(kNbZones-1)*(j*8+i)+4]*TMath::Sqrt((tabErrGraphYnumber[kNbZones*(j*8+i)+6]/tabGraphYnumber[kNbZones*(j*8+i)+6])*(tabErrGraphYnumber[kNbZones*(j*8+i)+6]/tabGraphYnumber[kNbZones*(j*8+i)+6])+(tabErrGraphYnumber[kNbZones*(j*8+i)+4]/tabGraphYnumber[kNbZones*(j*8+i)+4])*(tabErrGraphYnumber[kNbZones*(j*8+i)+4]/tabGraphYnumber[kNbZones*(j*8+i)+4]));
1800 {tabGraphYnumberRatio[((int)(kNbZones/2))*(kNbZones-1)*(j*8+i)+4]=0.;
1801 tabErrGraphYnumberRatio[((int)(kNbZones/2))*(kNbZones-1)*(j*8+i)+4]=0.;
1804 linePDGMass->SetY2(1.05*hMassDistrPerSMPerPtPerZone[(kNbZones*(nbPtBins+1))*iSM+kNbZones*(j*8+i)+0]->GetMaximum());
1805 linePDGMass->Draw(
"SAME");
1807 if (iSM != kNbSMtot) sprintf(txtPS,
"Pi0 inv mass in SM %d,",iSM);
1808 else sprintf(txtPS,
"Pi0 inv mass in all SMs,");
1809 if ((j*8+i) != nbPtBins) sprintf(txtPS,
"%s %4.2f < pT < %4.2f GeV",txtPS,tabGraphX[j*8+i]-tabErrGraphX[j*8+i],tabGraphX[j*8+i]+tabErrGraphX[j*8+i]);
1810 else sprintf(txtPS,
"%s pT-integrated",txtPS);
1811 ps->TextNDC(0.3,0.93,txtPS);
1815 for (iStruct=0;iStruct<kNbZones;iStruct++)
1816 {
for (iPt=0;iPt<nbPtBins;iPt++)
1817 {tabTmpGraphYmass[iPt]=tabGraphYmass[kNbZones*iPt+iStruct];
1818 tabTmpErrGraphYmass[iPt]=tabErrGraphYmass[kNbZones*iPt+iStruct];
1819 tabTmpGraphYsig[iPt]=tabGraphYsig[kNbZones*iPt+iStruct];
1820 tabTmpErrGraphYsig[iPt]=tabErrGraphYsig[kNbZones*iPt+iStruct];
1821 tabTmpGraphYnumber[iPt]=tabGraphYnumber[kNbZones*iPt+iStruct];
1822 tabTmpErrGraphYnumber[iPt]=tabErrGraphYnumber[kNbZones*iPt+iStruct];
1824 tgeMassZones[kNbZones*iSM+iStruct] =
new TGraphErrors(nbPtBins,tabGraphX,tabTmpGraphYmass,tabErrGraphX,tabTmpErrGraphYmass);
1825 tgeSigZones[kNbZones*iSM+iStruct] =
new TGraphErrors(nbPtBins,tabGraphX,tabTmpGraphYsig,tabErrGraphX,tabTmpErrGraphYsig);
1826 tgeNumberZones[kNbZones*iSM+iStruct] =
new TGraphErrors(nbPtBins,tabGraphX,tabTmpGraphYnumber,tabErrGraphX,tabTmpErrGraphYnumber);
1827 tgeMassZones[kNbZones*iSM+iStruct]->SetName(Form(
"tgeMassZones_SM%d_%d",iSM,iStruct));
1828 tgeSigZones[kNbZones*iSM+iStruct]->SetName(Form(
"tgeSigZones_SM%d_%d",iSM,iStruct));
1829 tgeNumberZones[kNbZones*iSM+iStruct]->SetName(Form(
"tgeNumberZones_SM%d_%d",iSM,iStruct));
1830 tgeMassZones[kNbZones*iSM+iStruct]->SetLineColor(colorIndexZones[iStruct]);
1831 tgeSigZones[kNbZones*iSM+iStruct]->SetLineColor(colorIndexZones[iStruct]);
1832 tgeNumberZones[kNbZones*iSM+iStruct]->SetLineColor(colorIndexZones[iStruct]);
1833 tgeMassZones[kNbZones*iSM+iStruct]->GetHistogram()->SetXTitle(
"#pi^{0} p_{#perp} (GeV)");
1834 tgeMassZones[kNbZones*iSM+iStruct]->GetHistogram()->SetYTitle(
"Fitted #pi^{0} inv mass (MeV)");
1835 tgeMassZones[kNbZones*iSM+iStruct]->GetHistogram()->SetMinimum(120.);
1836 tgeMassZones[kNbZones*iSM+iStruct]->GetHistogram()->SetMaximum(150.);
1837 tgeSigZones[kNbZones*iSM+iStruct]->GetHistogram()->SetXTitle(
"#pi^{0} p_{#perp} (GeV)");
1838 tgeSigZones[kNbZones*iSM+iStruct]->GetHistogram()->SetYTitle(
"Fitted #pi^{0} width (MeV)");
1839 tgeSigZones[kNbZones*iSM+iStruct]->GetHistogram()->SetMinimum(7.5);
1840 tgeSigZones[kNbZones*iSM+iStruct]->GetHistogram()->SetMaximum(22.);
1841 tgeNumberZones[kNbZones*iSM+iStruct]->GetHistogram()->SetXTitle(
"#pi^{0} p_{#perp} (GeV)");
1842 tgeNumberZones[kNbZones*iSM+iStruct]->GetHistogram()->SetYTitle(
"Number of #pi^{0} (counts)");
1844 for (iStruct=0;iStruct<((int)(kNbZones/2))*(kNbZones-1);iStruct++)
1845 {
for (iPt=0;iPt<nbPtBins;iPt++)
1846 {tabTmpGraphYnumberRatio[iPt]=tabGraphYnumberRatio[((int)(kNbZones/2))*(kNbZones-1)*iPt+iStruct];
1847 tabTmpErrGraphYnumberRatio[iPt]=tabErrGraphYnumberRatio[((int)(kNbZones/2))*(kNbZones-1)*iPt+iStruct];
1849 tgeNumberRatioZones[((int)(kNbZones/2))*(kNbZones-1)*iSM+iStruct] =
new TGraphErrors(nbPtBins,tabGraphX,tabTmpGraphYnumberRatio,tabErrGraphX,tabTmpErrGraphYnumberRatio);
1850 tgeNumberRatioZones[((int)(kNbZones/2))*(kNbZones-1)*iSM+iStruct]->SetName(Form(
"tgeNumberRatioZones_SM%d_%d",iSM,iStruct));
1851 tgeNumberRatioZones[((int)(kNbZones/2))*(kNbZones-1)*iSM+iStruct]->SetLineColor(colorIndexRatiosZones[iStruct]);
1852 tgeNumberRatioZones[((int)(kNbZones/2))*(kNbZones-1)*iSM+iStruct]->GetHistogram()->SetXTitle(
"#pi^{0} p_{#perp} (GeV)");
1853 tgeNumberRatioZones[((int)(kNbZones/2))*(kNbZones-1)*iSM+iStruct]->GetHistogram()->SetYTitle(
"Ratios of numbers of #pi^{0}");
1863 hAllM_05->SetContour(30);
1864 hAllM_05->Draw(
"COLZ");
1866 sprintf(txtPS,
"Pi0 inv mass vs pT, all SMs");
1867 ps->TextNDC(0.2,0.94,txtPS);
1871 hAllM_05_masked->SetContour(30);
1872 hAllM_05_masked->Draw(
"COLZ");
1874 sprintf(txtPS,
"Pi0 inv mass vs pT, all SMs");
1875 ps->TextNDC(0.2,0.94,txtPS);
1876 hAllM_05_masked->Write();
1880 printf(
"\nPeak characteristics vs pT.\n");
1885 tgeNumber[3*kNbSMtot+0]->SetName(
"tgeNumber_ALLSM");
1886 tgeNumber[3*kNbSMtot+1]->SetName(
"tgeNumber_ALLSM1");
1887 tgeNumber[3*kNbSMtot+2]->SetName(
"tgeNumber_ALLSM2");
1888 tgeNumber[3*kNbSMtot+0]->Draw(
"AL");
1889 tgeNumber[3*kNbSMtot+0]->GetHistogram()->SetMinimum(0.);
1890 tgeNumber[3*kNbSMtot+0]->Draw(
"AL");
1891 tgeNumber[3*kNbSMtot+1]->Draw(
"SAME");
1892 tgeNumber[3*kNbSMtot+2]->Draw(
"SAME");
1894 sprintf(txtPS,
"Integral of gaussian fit wrt pT, all SMs");
1895 ps->TextNDC(0.2,0.94,txtPS);
1896 for (iStruct=0;iStruct<3;iStruct++) tgeNumber[3*kNbSMtot+iStruct]->Write();
1898 tgeNumberRatio[3*kNbSMtot+0]->SetName(
"tgeNumberRatio_ALLSM");
1899 tgeNumberRatio[3*kNbSMtot+1]->SetName(
"tgeNumberRatio_ALLSM1");
1900 tgeNumberRatio[3*kNbSMtot+2]->SetName(
"tgeNumberRatio_ALLSM2");
1901 tgeNumberRatio[3*kNbSMtot+0]->Draw(
"AL");
1902 tgeNumberRatio[3*kNbSMtot+0]->GetHistogram()->SetMinimum(0.0);
1903 tgeNumberRatio[3*kNbSMtot+0]->GetHistogram()->SetMaximum(0.6);
1904 tgeNumberRatio[3*kNbSMtot+0]->Draw(
"AL");
1905 for (iStruct=0;iStruct<3;iStruct++) tgeNumberRatio[3*kNbSMtot+iStruct]->Write();
1907 TLine *lineMassH =
new TLine(tgeMass[3*kNbSMtot+0]->GetXaxis()->GetXmin(),mPDG,tgeMass[3*kNbSMtot+0]->GetXaxis()->GetXmax(),mPDG);
1908 lineMassH->SetLineColor(kMagenta);
1909 tgeMass[3*kNbSMtot+0]->Draw(
"AL");
1910 tgeMass[3*kNbSMtot+1]->Draw(
"L SAME");
1911 tgeMass[3*kNbSMtot+2]->Draw(
"L SAME");
1914 sprintf(txtPS,
"Mean of gaussian fit wrt pT, all SMs");
1915 ps->TextNDC(0.2,0.94,txtPS);
1916 for (iStruct=0;iStruct<3;iStruct++) tgeMass[3*kNbSMtot+iStruct]->Write();
1918 tgeSig[3*kNbSMtot+0]->Draw(
"AL");
1919 tgeSig[3*kNbSMtot+1]->Draw(
"L SAME");
1920 tgeSig[3*kNbSMtot+2]->Draw(
"L SAME");
1922 sprintf(txtPS,
"Width of gaussian fit wrt pT, all SMs");
1923 ps->TextNDC(0.2,0.94,txtPS);
1924 for (iStruct=0;iStruct<3;iStruct++) tgeSig[3*kNbSMtot+iStruct]->Write();
1929 {
if (tabChoiceCalos[
SMdetType[iSM]] == 0)
1937 tgeNumber[3*iSM+0]->Draw(
"AL");
1938 tgeNumber[3*iSM+0]->GetHistogram()->SetMinimum(0.);
1939 tgeNumber[3*iSM+0]->Draw(
"AL");
1940 tgeNumber[3*iSM+1]->Draw(
"L SAME");
1941 tgeNumber[3*iSM+2]->Draw(
"L SAME");
1943 sprintf(txtPS,
"Integral of gaussian fit wrt pT, SM %d",iSM);
1944 ps->TextNDC(0.2,0.94,txtPS);
1945 for (iStruct=0;iStruct<3;iStruct++) tgeNumber[3*iSM+iStruct]->Write();
1947 tgeNumberRatio[3*iSM+0]->Draw(
"AL");
1948 tgeNumberRatio[3*iSM+0]->GetHistogram()->SetMinimum(0.0);
1949 tgeNumberRatio[3*iSM+0]->GetHistogram()->SetMaximum(0.6);
1950 tgeNumberRatio[3*iSM+0]->Draw(
"AL");
1951 for (iStruct=0;iStruct<3;iStruct++) tgeNumberRatio[3*iSM+iStruct]->Write();
1953 lineMassH->SetX1(tgeMass[3*iSM+0]->GetXaxis()->GetXmin());
1954 lineMassH->SetX2(tgeMass[3*iSM+0]->GetXaxis()->GetXmax());
1955 lineMassH->SetLineColor(kMagenta);
1956 tgeMass[3*iSM+0]->Draw(
"AL");
1957 tgeMass[3*iSM+1]->Draw(
"L SAME");
1958 tgeMass[3*iSM+2]->Draw(
"L SAME");
1961 sprintf(txtPS,
"Mean of gaussian fit wrt pT, SM %d",iSM);
1962 ps->TextNDC(0.2,0.94,txtPS);
1963 for (iStruct=0;iStruct<3;iStruct++) tgeMass[3*iSM+iStruct]->Write();
1965 tgeSig[3*iSM+0]->Draw(
"AL");
1966 tgeSig[3*iSM+1]->Draw(
"L SAME");
1967 tgeSig[3*iSM+2]->Draw(
"L SAME");
1969 sprintf(txtPS,
"Width of gaussian fit wrt pT, SM %d",iSM);
1970 ps->TextNDC(0.2,0.94,txtPS);
1971 for (iStruct=0;iStruct<3;iStruct++) tgeSig[3*iSM+iStruct]->Write();
1976 printf(
"\nPeak characteristics vs pT for specific zones.\n");
1981 for (iStruct=0;iStruct<kNbZones;iStruct++) tgeNumberZones[kNbZones*kNbSMtot+iStruct]->SetName(Form(
"tgeNumberZones_ALLSM%d",iStruct));
1982 tgeNumberZones[kNbZones*kNbSMtot+3]->Draw(
"AL");
1983 tgeNumberZones[kNbZones*kNbSMtot+3]->GetHistogram()->SetMinimum(0.);
1984 tgeNumberZones[kNbZones*kNbSMtot+3]->Draw(
"AL");
1985 for (iStruct=0;iStruct<kNbZones;iStruct++) tgeNumberZones[kNbZones*kNbSMtot+iStruct]->
Draw(
"SAME");
1987 sprintf(txtPS,
"Integral of gaussian fit wrt pT, all SMs");
1988 ps->TextNDC(0.2,0.94,txtPS);
1989 for (iStruct=0;iStruct<kNbZones;iStruct++) tgeNumberZones[kNbZones*kNbSMtot+iStruct]->Write();
1991 for (iStruct=0;iStruct<5;iStruct++) tgeNumberRatioZones[((
int)(kNbZones/2))*(kNbZones-1)*kNbSMtot+iStruct]->SetName(Form(
"tgeNumberRatioZones_ALLSM%d",iStruct));
1992 tgeNumberRatioZones[((int)(kNbZones/2))*(kNbZones-1)*kNbSMtot+0]->Draw(
"AL");
1993 tgeNumberRatioZones[((int)(kNbZones/2))*(kNbZones-1)*kNbSMtot+0]->GetHistogram()->SetMinimum(0.0);
1994 tgeNumberRatioZones[((int)(kNbZones/2))*(kNbZones-1)*kNbSMtot+0]->GetHistogram()->SetMaximum(4.5);
1995 tgeNumberRatioZones[((int)(kNbZones/2))*(kNbZones-1)*kNbSMtot+0]->Draw(
"AL");
1996 for (iStruct=1;iStruct<5;iStruct++) tgeNumberRatioZones[((
int)(kNbZones/2))*(kNbZones-1)*kNbSMtot+iStruct]->
Draw(
"L SAME");
1997 for (iStruct=0;iStruct<5;iStruct++) tgeNumberRatioZones[((
int)(kNbZones/2))*(kNbZones-1)*kNbSMtot+iStruct]->Write();
1999 lineMassH->SetLineColor(kMagenta);
2000 tgeMassZones[kNbZones*kNbSMtot+0]->Draw(
"AL");
2001 for (iStruct=1;iStruct<kNbZones;iStruct++) tgeMassZones[kNbZones*kNbSMtot+iStruct]->
Draw(
"L SAME");
2004 sprintf(txtPS,
"Mean of gaussian fit wrt pT, all SMs");
2005 ps->TextNDC(0.2,0.94,txtPS);
2006 for (iStruct=0;iStruct<kNbZones;iStruct++) tgeMassZones[kNbZones*kNbSMtot+iStruct]->Write();
2008 tgeSigZones[kNbZones*kNbSMtot+0]->Draw(
"AL");
2009 for (iStruct=1;iStruct<kNbZones;iStruct++) tgeSigZones[kNbZones*kNbSMtot+iStruct]->
Draw(
"L SAME");
2011 sprintf(txtPS,
"Width of gaussian fit wrt pT, all SMs");
2012 ps->TextNDC(0.2,0.94,txtPS);
2013 for (iStruct=0;iStruct<kNbZones;iStruct++) tgeSigZones[kNbZones*kNbSMtot+iStruct]->Write();
2018 {
if (tabChoiceCalos[
SMdetType[iSM]] == 0)
2026 tgeNumberZones[kNbZones*iSM+3]->Draw(
"AL");
2027 tgeNumberZones[kNbZones*iSM+3]->GetHistogram()->SetMinimum(0.);
2028 tgeNumberZones[kNbZones*iSM+3]->Draw(
"AL");
2029 for (iStruct=0;iStruct<kNbZones;iStruct++) tgeNumberZones[kNbZones*iSM+iStruct]->
Draw(
"L SAME");
2031 sprintf(txtPS,
"Integral of gaussian fit wrt pT, SM %d",iSM);
2032 ps->TextNDC(0.2,0.94,txtPS);
2033 for (iStruct=0;iStruct<kNbZones;iStruct++) tgeNumberZones[kNbZones*iSM+iStruct]->Write();
2035 tgeNumberRatioZones[((int)(kNbZones/2))*(kNbZones-1)*iSM+0]->Draw(
"AL");
2036 tgeNumberRatioZones[((int)(kNbZones/2))*(kNbZones-1)*iSM+0]->GetHistogram()->SetMinimum(0.0);
2037 tgeNumberRatioZones[((int)(kNbZones/2))*(kNbZones-1)*iSM+0]->GetHistogram()->SetMaximum(4.5);
2038 tgeNumberRatioZones[((int)(kNbZones/2))*(kNbZones-1)*iSM+0]->Draw(
"AL");
2039 for (iStruct=1;iStruct<5;iStruct++) tgeNumberRatioZones[((
int)(kNbZones/2))*(kNbZones-1)*iSM+iStruct]->
Draw(
"L SAME");
2040 for (iStruct=0;iStruct<5;iStruct++) tgeNumberRatioZones[((
int)(kNbZones/2))*(kNbZones-1)*iSM+iStruct]->Write();
2042 lineMassH->SetX1(tgeMass[3*iSM+0]->GetXaxis()->GetXmin());
2043 lineMassH->SetX2(tgeMass[3*iSM+0]->GetXaxis()->GetXmax());
2044 lineMassH->SetLineColor(kMagenta);
2045 tgeMassZones[kNbZones*iSM+0]->Draw(
"AL");
2046 for (iStruct=1;iStruct<kNbZones;iStruct++) tgeMassZones[kNbZones*iSM+iStruct]->
Draw(
"L SAME");
2049 sprintf(txtPS,
"Mean of gaussian fit wrt pT, SM %d",iSM);
2050 ps->TextNDC(0.2,0.94,txtPS);
2051 for (iStruct=0;iStruct<kNbZones;iStruct++) tgeMassZones[kNbZones*iSM+iStruct]->Write();
2053 tgeSigZones[kNbZones*iSM+0]->Draw(
"AL");
2054 for (iStruct=1;iStruct<kNbZones;iStruct++) tgeSigZones[kNbZones*iSM+iStruct]->
Draw(
"L SAME");
2056 sprintf(txtPS,
"Width of gaussian fit wrt pT, SM %d",iSM);
2057 ps->TextNDC(0.2,0.94,txtPS);
2058 for (iStruct=0;iStruct<kNbZones;iStruct++) tgeSigZones[kNbZones*iSM+iStruct]->Write();
2078 linePDGMass->SetLineColor(kSpring+4);
2079 lineFittedMass->SetLineColor(kMagenta);
2080 lineFittedWidth1->SetLineColor(kMagenta-10);
2081 lineFittedWidth2->SetLineColor(kMagenta-10);
2082 linePreviousFittedMass->SetLineColor(kMagenta);
2083 linePreviousFittedWidth1->SetLineColor(kMagenta-10);
2084 linePreviousFittedWidth2->SetLineColor(kMagenta-10);
2085 linePreviousDesiredMass->SetLineColor(kOrange+7);
2086 linePreviousUntrustedFit->SetLineColor(kOrange+7);
2087 linePreviousDesiredMass->SetLineWidth(2.);
2088 linePreviousUntrustedFit->SetLineWidth(2.);
2089 gStyle->SetOptStat(11);
2092 cmptEntriesDiscard=0;
2096 printf(
"\n\nNow looping over towers.\nConsider %d towers, total gaussian amplitude %f.\nChanging gaussian amplitude par limit from %f to ",nbTowersConsideredTot,nbSig,maxGaussAmpl);
2097 maxGaussAmpl=50.*nbSig/(double)nbTowersConsideredTot;
2098 maxIntgAmpl=10.*nbTot/(double)nbTowersConsideredTot;
2099 printf(
"%f\n",maxGaussAmpl);
2100 fitfun->SetParLimits(0,8.,maxGaussAmpl);
2102 {
if (tabChoiceCalos[
SMdetType[sm]] == 0)
2106 if (testChoice == 2)
2109 printf(
"\nSM %d : columns ",sm);
2111 for(
Int_t c = kNbColMinEff ;
c < TMath::Min(kNbColMaxEff,kTabNbCol[
SMdetType[sm]]);
c+=1)
2115 {
if (((r%12) == 0) && (testChoice != 3))
2123 cEff=
c+kTabColOffset[sm];
2124 if (testChoice != 3) c1->cd(n);
2126 fscanf(txtFileParamsIn,
" %d %d %d %d ",&sm2,&c2,&r2,&cmpt2);
2130 fscanf(txtFileParamsIn,
"%le\n",param2+(kNbTotParams-1));
2131 fscanf(txtFileCalibIn,
" %d %d %d %d %lf\n",&cmpt3,&sm3,&c3,&r3,&coeff3);
2133 if (sm != sm3) tmpFlag++;
2134 if (
c != c3) tmpFlag++;
2135 if (r != r3) tmpFlag++;
2136 if ((tmpFlag > 0) && (testChoice != 1))
2137 {
if (testChoice == 0)
2138 {printf(
"$$$ Problem sync input files : (%d,%d,%d) vs (%d,%d,%d) vs (%d,%d,%d)\n",sm,
c,r,sm2,c2,r2,sm3,c3,r3);
2144 discardFlag=(int)coeff3;
2148 TH1F *h05 = (TH1F *) l05->FindObject(Form(
"%d_%d_%d",sm,
c,r));
2149 h05->SetLineColor(colorIndex[1]);
2151 h05->SetXTitle(
"M_{#gamma,#gamma} (MeV/c^{2})");
2152 if (h05->GetEntries() != 0) hAllDistribNbEntries->Fill(h05->GetEntries());
2153 fitfun->SetParameter(0,h05->GetEntries()*(double)nbSig/(
double)nbTot);
2154 if (fitfun->GetParameter(0) < 8.)
2155 {fitfun->SetParameter(0,8.);
2158 fitfun->SetParameter(1,mPDG);
2159 fitfun->SetParameter(2,typicalWidth);
2160 fitfun->SetParameter(3,fitPar3*(
double)h05->GetEntries()/(double)nbTot);
2161 fitfun->SetParameter(4,fitPar4*(
double)h05->GetEntries()/(double)nbTot);
2162 fitfun->SetParameter(5,fitPar5*(
double)h05->GetEntries()/(double)nbTot);
2163 intgN=h05->Integral(1,h05->GetNbinsX());
2166 {h05->Fit(
"fitfun",
"Q",
"",50,300);
2167 fitfunBkgPol2->SetParameter(0,fitfun->GetParameter(3));
2168 fitfunBkgPol2->SetParameter(1,fitfun->GetParameter(4));
2169 fitfunBkgPol2->SetParameter(2,fitfun->GetParameter(5));
2170 fitResultMean=fitfun->GetParameter(1);
2171 fitResultSigma=fitfun->GetParameter(2);
2173 fitKhi2SmallRange=0.;
2174 for (iBin=h05->FindBin(fitResultMean-fitResultSigma);iBin<h05->FindBin(fitResultMean+fitResultSigma)+1;iBin++)
2175 {
if (h05->GetBinContent(iBin) == 0.)
continue;
2176 if (h05->GetBinError(iBin) == 0.)
2177 {printf(
"## Weird bin %d (center %f) for tower (%d,%d,%d) : null error but content is %f : skip.\n",iBin,h05->GetBinCenter(iBin),sm,
c,r,h05->GetBinContent(iBin));
2180 fitKhi2SmallRange+=pow(h05->GetBinContent(iBin)-fitfun->Eval(h05->GetBinCenter(iBin)),2)/pow(h05->GetBinError(iBin),2);
2183 if (cmptNDF != 0) fitKhi2SmallRange=fitKhi2SmallRange/cmptNDF;
2184 else fitKhi2SmallRange=0.;
2187 for (iBin=h05->FindBin(fitResultMean-3.*fitResultSigma);iBin<h05->FindBin(fitResultMean)+1;iBin++)
2188 {
if (h05->GetBinContent(iBin) == 0.)
continue;
2189 if (h05->GetBinError(iBin) == 0.)
2190 {printf(
"## Weird bin %d (center %f) for tower (%d,%d,%d) : null error but content is %f : skip.\n",iBin,h05->GetBinCenter(iBin),sm,
c,r,h05->GetBinContent(iBin));
2193 fitKhi2PeakLeft+=pow(h05->GetBinContent(iBin)-fitfun->Eval(h05->GetBinCenter(iBin)),2)/pow(h05->GetBinError(iBin),2);
2196 if (cmptNDF != 0) fitKhi2PeakLeft=fitKhi2PeakLeft/cmptNDF;
2197 else fitKhi2PeakLeft=0.;
2199 fitKhi2PeakRight=0.;
2200 for (iBin=h05->FindBin(fitResultMean);iBin<h05->FindBin(fitResultMean+3.*fitResultSigma)+1;iBin++)
2201 {
if (h05->GetBinContent(iBin) == 0.)
continue;
2202 if (h05->GetBinError(iBin) == 0.)
2203 {printf(
"## Weird bin %d (center %f) for tower (%d,%d,%d) : null error but content is %f : skip.\n",iBin,h05->GetBinCenter(iBin),sm,
c,r,h05->GetBinContent(iBin));
2206 fitKhi2PeakRight+=pow(h05->GetBinContent(iBin)-fitfun->Eval(h05->GetBinCenter(iBin)),2)/pow(h05->GetBinError(iBin),2);
2209 if (cmptNDF != 0) fitKhi2PeakRight=fitKhi2PeakRight/cmptNDF;
2210 else fitKhi2PeakRight=0.;
2213 {fitfun->SetParameter(0,-10.);
2214 fitfun->SetParameter(1,0.);
2215 fitfun->SetParameter(2,0.);
2218 fitfun->SetChisquare(0.);
2220 fitKhi2SmallRange=0.;
2222 fitKhi2PeakRight=0.;
2224 hSpaceEntriesDiscard[1*sm+0]->SetBinContent(
c+1,r+1,4);
2227 if (h05->GetBinWidth(1) != 0.) intgS=fitResultSigma*fitfun->GetParameter(0)*TMath::Sqrt(2.*3.1415926535)/h05->GetBinWidth(1);
2228 else {printf(
"Zero width, put arbitrarily intgS to 0 for tower (%d;%d;%d).\n",sm,
c,r); intgS=0.;}
2229 intgSbincounting=0.;
2230 for (iBin=h05->FindBin(fitResultMean-3.*fitResultSigma);iBin<h05->FindBin(fitResultMean+3.*fitResultSigma)+1;iBin++) intgSbincounting+=h05->GetBinContent(iBin)-fitfunBkgPol2->Eval(h05->GetBinCenter(iBin));
2232 coeff=pow(fitResultMean/mPDG,coeffPower);
2235 if (testChoice != 3)
2238 h05->SetAxisRange(50.,250.,
"X");
2239 h05->SetMinimum(0.);
2243 ptrPaveStat = (TPaveStats*)h05->FindObject(
"stats");
2244 ptrPaveStat->SetTextSize(0.04);
2247 ptrPaveStat->SetX1NDC(0.75);
2248 ptrPaveStat->SetX2NDC(1.0);
2249 ptrPaveStat->SetY2NDC(0.95);
2250 fitfunBkgPol2->Draw(
"SAME");
2251 maxHisto=h05->GetMaximum()*(1+gStyle->GetHistTopMargin());
2257 linePDGMass->SetY2(1.05*maxHisto);
2258 linePDGMass->Draw(
"SAME");
2259 lineFittedMass->SetX1(fitResultMean);
2260 lineFittedMass->SetX2(fitResultMean);
2262 lineFittedMass->SetY2(0.85*maxHisto);
2263 lineFittedMass->Draw(
"SAME");
2264 lineFittedWidth1->SetX1(fitResultMean-2.*fitResultSigma);
2265 lineFittedWidth1->SetX2(fitResultMean-2.*fitResultSigma);
2267 lineFittedWidth1->SetY2(0.75*maxHisto);
2268 lineFittedWidth1->Draw(
"SAME");
2269 lineFittedWidth2->SetX1(fitResultMean+2.*fitResultSigma);
2270 lineFittedWidth2->SetX2(fitResultMean+2.*fitResultSigma);
2272 lineFittedWidth2->SetY2(0.75*maxHisto);
2273 lineFittedWidth2->Draw(
"SAME");
2274 paveUncertStatus->SetX1NDC(0.92);
2275 paveUncertStatus->SetX2NDC(1.0);
2276 paveUncertStatus->SetY1NDC(0.83);
2277 paveUncertStatus->SetY2NDC(0.75);
2278 paveMassStatus->SetX1NDC(0.94);
2279 paveMassStatus->SetX2NDC(0.98);
2280 paveMassStatus->SetY1NDC(0.81);
2281 paveMassStatus->SetY2NDC(0.77);
2282 paveUncertStatus->SetFillColor(kWhite);
2283 paveMassStatus->SetFillColor(kWhite);
2285 {valStatUncert=TMath::Sqrt(pow(paramFitStatUncert_b,2) + pow(paramFitStatUncert_a/TMath::Sqrt(intgS),2));
2287 if (valStatUncert > uncertKSpec*uncertSpec)
2288 {paveUncertStatus->SetFillColor(kRed);
2289 hSpaceCuts[5*sm+2]->Fill(
c,r,4.);
2292 {paveUncertStatus->SetFillColor(kGreen+1);
2293 hSpaceCuts[5*sm+2]->Fill(
c,r,1.9);
2296 if (TMath::Abs(fitResultMean-mPDG)/mPDG > uncertDist*uncertSpec)
2297 {paveMassStatus->SetFillColor(kRed);
2298 hSpaceCuts[5*sm+4]->Fill(
c,r,4.);
2301 {paveMassStatus->SetFillColor(kGreen+1);
2302 hSpaceCuts[5*sm+4]->Fill(
c,r,1.9);
2304 hAllDistribDistance[2]->Fill(TMath::Abs(fitResultMean-mPDG)/(fitResultMean*valStatUncert));
2305 hSpaceCuts[5*sm+1]->Fill(
c,r,100.*valStatUncert);
2306 hAllDistribDistance2[2*0+0]->Fill(100.*valStatUncert);
2307 if ((discardFlag >= 0) || (discardFlag <= -10)) hAllDistribDistance2[2*1+0]->Fill(100.*valStatUncert);
2308 hSpaceCuts[5*sm+3]->Fill(
c,r,TMath::Abs(fitResultMean-mPDG)/mPDG);
2309 hAllDistribDistance2[2*0+1]->Fill(TMath::Abs(fitResultMean-mPDG)/mPDG);
2310 if ((discardFlag >= 0) || (discardFlag <= -10)) hAllDistribDistance2[2*1+1]->Fill(TMath::Abs(fitResultMean-mPDG)/mPDG);
2312 paveUncertStatus->Draw(
"SAME");
2313 paveMassStatus->Draw(
"SAME");
2314 linePreviousFittedMass->SetX1(param2[1]);
2315 linePreviousFittedMass->SetX2(param2[1]);
2316 linePreviousFittedMass->SetY1(0.85*maxHisto);
2317 linePreviousFittedMass->SetY2(1.05*maxHisto);
2318 linePreviousFittedMass->Draw(
"SAME");
2319 linePreviousFittedWidth1->SetX1(param2[1]-2.*param2[2]);
2320 linePreviousFittedWidth1->SetX2(param2[1]-2.*param2[2]);
2321 linePreviousFittedWidth1->SetY1(0.85*maxHisto);
2322 linePreviousFittedWidth1->SetY2(maxHisto);
2323 linePreviousFittedWidth1->Draw(
"SAME");
2324 linePreviousFittedWidth2->SetX1(param2[1]+2.*param2[2]);
2325 linePreviousFittedWidth2->SetX2(param2[1]+2.*param2[2]);
2326 linePreviousFittedWidth2->SetY1(0.85*maxHisto);
2327 linePreviousFittedWidth2->SetY2(maxHisto);
2328 linePreviousFittedWidth2->Draw(
"SAME");
2329 linePreviousDesiredMass->SetX1(mPDG*pow(coeff3,1./coeffPowerPrev));
2330 linePreviousDesiredMass->SetX2(mPDG*pow(coeff3,1./coeffPowerPrev));
2331 linePreviousDesiredMass->SetY1(0.95*maxHisto);
2332 linePreviousDesiredMass->SetY2(1.05*maxHisto);
2333 linePreviousDesiredMass->Draw(
"SAME");
2335 {linePreviousUntrustedFit->SetX1(mPDG-20.);
2336 linePreviousUntrustedFit->SetX2(mPDG+20.);
2337 linePreviousUntrustedFit->SetY1(maxHisto);
2338 linePreviousUntrustedFit->SetY2(maxHisto);
2339 linePreviousUntrustedFit->Draw(
"SAME");
2344 for (j=0;j<
kNbFitParams;j++) hSpace[kNbFitParams*sm+j]->Fill(
c,r,fitfun->GetParameter(j));
2345 hSpaceIntg[kNbExtraParams*sm+0]->Fill(
c,r,intgN);
2346 if (fitfun->GetNDF() > 0)
2347 {intgKhi2=fitfun->GetChisquare()/(double)fitfun->GetNDF();
2348 hSpaceIntg[kNbExtraParams*sm+1]->Fill(
c,r,intgKhi2);
2351 {
if (intgN > 6) printf(
"\n#### Weird NDF in tower (%d,%d,%d) : khi2 %f NDF %f\n",sm,
c,r,fitfun->GetChisquare(),(double)fitfun->GetNDF());
2354 hSpaceIntg[kNbExtraParams*sm+2]->Fill(
c,r,intgS);
2355 hSpaceIntg[kNbExtraParams*sm+3]->Fill(
c,r,intgN-intgS);
2356 hSpaceIntg[kNbExtraParams*sm+4]->Fill(
c,r,fitKhi2SmallRange);
2357 hSpaceIntg[kNbExtraParams*sm+5]->Fill(
c,r,fitKhi2PeakLeft);
2358 hSpaceIntg[kNbExtraParams*sm+6]->Fill(
c,r,fitKhi2PeakRight);
2359 hSpaceFitErr[1*sm+0]->Fill(
c,r,fitfun->GetParError(1));
2364 {
if (fitfun->GetParameter(k) < cutMin[k]) flag[k]++;
2365 if (fitfun->GetParameter(k) > cutMax[k]) flag[k]++;
2367 if (intgN < cutMin[6]) flag[6]++;
2368 if (intgN > cutMax[6]) flag[6]++;
2369 if (intgKhi2 < cutMin[7]) flag[7]++;
2370 if (intgKhi2 > cutMax[7]) flag[7]++;
2371 if (intgS < cutMin[8]) flag[8]++;
2372 if (intgS > cutMax[8]) flag[8]++;
2373 if (fitKhi2SmallRange < cutMin[10]) flag[10]++;
2374 if (fitKhi2SmallRange > cutMax[10]) flag[10]++;
2376 {
if (flag[k] != 0) cmpt++;
2379 if (testChoice != 3)
2381 {paveCutsStatus[k]->SetX1NDC(0.92+0.04*(
int)(k/3));
2382 paveCutsStatus[k]->SetX2NDC(0.96+0.04*(
int)(k/3));
2383 paveCutsStatus[k]->SetY1NDC(0.63-0.04*(k%3));
2384 paveCutsStatus[k]->SetY2NDC(0.67-0.04*(k%3));
2385 paveCutsStatus[k]->SetFillColor(19);
2386 if (flag[k] != 0) paveCutsStatus[k]->SetFillColor(kRed);
2391 paveCutsStatus[k]->Draw(
"SAME");
2398 if (
c == 0) flagBorderTower=flagBorderTower*kCalibrateLastBorderCol;
2399 if (
c == kTabNbCol[SMdetType[sm]]-1)
2400 {
if (SMdetType[sm] ==
kDCAL) flagBorderTower=flagBorderTower*kCalibrateLastBorderCol;
2401 else flagBorderTower=flagBorderTower*kCalibrateMidRapBorderCol;
2404 {
if ((sm < 2) || ((sm >=
kNbSMEMCAL+kNbSMEMCALthird) && (sm <
kNbSMEMCAL+kNbSMEMCALthird+2))) flagBorderTower=flagBorderTower*kCalibrateLastBorderRow;
2405 else flagBorderTower=flagBorderTower*kCalibrateTouchingBorderRow;
2407 if (r == kTabNbRow[SMdetType[sm]]-1)
2408 {
if (((sm >=
kNbSMEMCAL+kNbSMEMCALthird-2) && (sm <
kNbSMEMCAL+kNbSMEMCALthird)) || (sm >= kNbSMtot-2)) flagBorderTower=flagBorderTower*kCalibrateLastBorderRow;
2409 else flagBorderTower=flagBorderTower*kCalibrateTouchingBorderRow;
2411 if (flagBorderTower == 0)
2414 txtFileCalibOut <<
"4 " << sm <<
" " <<
c <<
" " << r <<
" -9" << endl;
2416 else if (discardFlag < 0)
2418 txtFileCalibOut << cmpt3 <<
" " << sm <<
" " <<
c <<
" " << r <<
" " << discardFlag << endl;
2423 txtFileCalibOut <<
"0 " << sm <<
" " <<
c <<
" " << r <<
" " << coeff << endl;
2424 hSpaceCoeff[1*sm+0]->Fill(
c,r,coeff);
2425 hCoeff->Fill(coeff);
2427 else if (intgN == 0)
2430 txtFileCalibOut <<
"0 " << sm <<
" " <<
c <<
" " << r <<
" 1" << endl;
2432 else if (h05->GetEntries() > cutEntriesDiscard)
2434 txtFileCalibOut <<
"1 " << sm <<
" " <<
c <<
" " << r <<
" " << coeff <<
" //Signif=";
2437 if (fitfun->Integral(mPDG-2.*10.,mPDG+2.*10.) > 0)
2438 txtFileCalibOut << intgS/TMath::Sqrt(fitfun->Integral(mPDG-2.*10.,mPDG+2.*10.)) <<
" //Dist=";
2439 else txtFileCalibOut << 0.00 <<
" //Dist=";
2440 if (fitfun->GetParError(1) != 0.)
2441 txtFileCalibOut << TMath::Abs(fitfun->GetParameter(1)-mPDG)/fitfun->GetParError(1) <<
" //Amp=";
2442 else txtFileCalibOut << 9999999999. <<
" //Amp=";
2443 if (flag[0] != 0) txtFileCalibOut <<
"**";
2444 txtFileCalibOut << fitfun->GetParameter(0) <<
" //Mu=";
2445 if (flag[1] != 0) txtFileCalibOut <<
"**";
2446 txtFileCalibOut << fitfun->GetParameter(1) <<
" //Sig=";
2447 if (flag[2] != 0) txtFileCalibOut <<
"**";
2448 txtFileCalibOut << fitfun->GetParameter(2) <<
" //c=";
2449 if (flag[3] != 0) txtFileCalibOut <<
"**";
2450 txtFileCalibOut << fitfun->GetParameter(3) <<
" //b=";
2451 if (flag[4] != 0) txtFileCalibOut <<
"**";
2452 txtFileCalibOut << fitfun->GetParameter(4) <<
" //a=";
2453 if (flag[5] != 0) txtFileCalibOut <<
"**";
2454 txtFileCalibOut << fitfun->GetParameter(5) <<
" //I=";
2455 if (flag[6] != 0) txtFileCalibOut <<
"**";
2456 txtFileCalibOut << intgN <<
" //KhiSqNdf=";
2457 if (flag[7] != 0) txtFileCalibOut <<
"**";
2458 txtFileCalibOut << intgKhi2 <<
" //S=";
2459 if (flag[8] != 0) txtFileCalibOut <<
"**";
2460 txtFileCalibOut << intgS <<
" //Khi2Peak=";
2461 if (flag[10] != 0) txtFileCalibOut <<
"**";
2462 txtFileCalibOut << fitKhi2SmallRange;
2463 txtFileCalibOut << endl;
2467 txtFileCalibOut <<
"2 " << sm <<
" " <<
c <<
" " << r <<
" " <<
"1.00" << endl;
2468 cmptEntriesDiscard++;
2469 hSpaceEntriesDiscard[1*sm+0]->SetBinContent(
c+1,r+1,0.8);
2474 fprintf(txtFileParamsOut,
"%d %d %d %d ",sm,
c,r,cmpt);
2475 for (k=0;k<kNbFitParams+
kNbExtraParams;k++) fprintf(txtFileParamsOut,
"%d ",flag[k]);
2476 for (k=0;k<
kNbFitParams;k++) fprintf(txtFileParamsOut,
"%e ",fitfun->GetParameter(k));
2477 fprintf(txtFileParamsOut,
"%e %e %e %e %e %e %e %e\n",intgN,intgKhi2,intgS,intgN-intgS,fitKhi2SmallRange,fitKhi2PeakLeft,fitKhi2PeakRight,coeff);
2480 hAllOldDistribMass->Fill(param2[1]);
2481 hAllOldDistribMassPerSM[sm]->Fill(param2[1]);
2482 hCoeffOld->Fill(param2[kNbTotParams-1]);
2483 hCoeffOldLarge->Fill(param2[kNbTotParams-1]);
2484 hCoeffOldCorr->Fill(coeff3);
2485 hCoeffOldCorrLarge->Fill(coeff3);
2486 if ((isFirstIteration == 0) && (coeff3 == 1.00) && (hSpaceEntriesDiscard[1*sm+0]->GetBinContent(
c+1,r+1) == 0.)) hSpaceEntriesDiscard[1*sm+0]->SetBinContent(
c+1,r+1,1.9);
2488 hSpaceCuts[5*sm+0]->Fill(
c,r,cmpt);
2489 hCorrelMuVsA->Fill(fitfun->GetParameter(0),fitfun->GetParameter(1));
2490 hCorrelSigVsA->Fill(fitfun->GetParameter(0),fitfun->GetParameter(2));
2491 hCorrelSigVsMu->Fill(fitfun->GetParameter(1),fitfun->GetParameter(2));
2492 hCorrelBVsA->Fill(fitfun->GetParameter(3),fitfun->GetParameter(4));
2493 hCorrelCVsA->Fill(fitfun->GetParameter(3),fitfun->GetParameter(5));
2494 hCorrelCVsB->Fill(fitfun->GetParameter(4),fitfun->GetParameter(5));
2495 hCorrelISVsI->Fill(intgN,intgN-intgS);
2496 hCorrelSVsI->Fill(intgN,intgS);
2497 hCorrelSVsIS->Fill(intgN-intgS,intgS);
2498 hCorrelSbincountingVsS->Fill(intgS,intgSbincounting);
2499 hCorrelMuVsI->Fill(intgN,fitfun->GetParameter(1));
2500 hCorrelMuVsS->Fill(intgS,fitfun->GetParameter(1));
2501 hCorrelSigVsI->Fill(intgN,fitfun->GetParameter(2));
2502 hCorrelSigVsS->Fill(intgS,fitfun->GetParameter(2));
2503 if (h05->GetEntries() != 0) hAllDistribNbEntriesCorrel->Fill(intgN,h05->GetEntries());
2505 {
if (param2[k] != 0.) hAllDiffAllTw[k]->Fill(fitfun->GetParameter(k)/param2[k]);
2507 for (k=3;k<6;k++) hAllDiffAllTw[k]->Fill(fitfun->GetParameter(k)-param2[k]);
2508 if (param2[6] != 0.) hAllDiffAllTw[6]->Fill(intgN/param2[6]);
2509 if (param2[7] != 0.) hAllDiffAllTw[7]->Fill(intgKhi2/param2[7]);
2510 if (param2[8] != 0.) hAllDiffAllTw[8]->Fill(intgS/param2[8]);
2511 if (param2[9] != 0.) hAllDiffAllTw[9]->Fill((intgN-intgS)/param2[9]);
2513 {hCtrlEvolCoeff->Fill((coeff-1.)/(coeff3-1.));
2514 h2CtrlEvolCoeff1->Fill(coeff3,(coeff-1.)/(coeff3-1.));
2516 h2CtrlEvolCoeff2->Fill(coeff3-1.,coeff3-coeff);
2517 if ((cmpt == -1) && (cmpt2 == -1))
2518 {
if (param2[1] != mPDG)
2519 {hCtrlEvolMu->Fill((fitfun->GetParameter(1)-mPDG)/(param2[1]-mPDG));
2520 h2CtrlEvolMu1->Fill(param2[1],(fitfun->GetParameter(1)-mPDG)/(param2[1]-mPDG));
2522 h2CtrlEvolMu2->Fill((param2[1]-mPDG)/mPDG,(param2[1]-fitfun->GetParameter(1))/mPDG);
2524 {
if (param2[k] != 0.)
2525 {hSpaceDiff[kNbTotParams*sm+k]->Fill(
c,r,fitfun->GetParameter(k)/param2[k]);
2526 hAllDiff[k]->Fill(fitfun->GetParameter(k)/param2[k]);
2530 {hSpaceDiff[kNbTotParams*sm+k]->Fill(
c,r,fitfun->GetParameter(k)-param2[k]);
2531 hAllDiff[k]->Fill(fitfun->GetParameter(k)-param2[k]);
2533 if (param2[6] != 0.)
2534 {hSpaceDiff[kNbTotParams*sm+6]->Fill(
c,r,intgN/param2[6]);
2535 hAllDiff[6]->Fill(intgN/param2[6]);
2537 if (param2[7] != 0.)
2538 {hSpaceDiff[kNbTotParams*sm+7]->Fill(
c,r,intgKhi2/param2[7]);
2539 hAllDiff[7]->Fill(intgKhi2/param2[7]);
2541 if (param2[8] != 0.)
2542 {hSpaceDiff[kNbTotParams*sm+8]->Fill(
c,r,intgS/param2[8]);
2543 hAllDiff[8]->Fill(intgS/param2[8]);
2545 if (param2[9] != 0.)
2546 {hSpaceDiff[kNbTotParams*sm+9]->Fill(
c,r,(intgN-intgS)/param2[9]);
2547 hAllDiff[9]->Fill((intgN-intgS)/param2[9]);
2558 gStyle->SetOptStat(1111);
2576 printf(
"\n\nThere are %d masked/empty/dead towers.\n\nList of the %d towers of which calib coeff has automatically been put to 1.00 because nbEntries < %d :\n",cmptMasked,cmptEntriesDiscard,(
int)cutEntriesDiscard);
2578 gSystem->Exec(Form(
"less %s | grep -E '^2 ' | sed 's/^2 //g' | sed 's/ 1.0$//g'",txtFileCalibOutName.Data()));
2580 printf(
"\n\nList of the %d towers of which calib coeff has automatically been put to 1.0 because %f <Amp < %f :\n",cmptAmpDiscard,8.,cutAmpDiscard);
2582 gSystem->Exec(Form(
"less %s | grep -E '^3 ' | sed 's/^3 //g' | sed 's/ 1.0$//g'",txtFileCalibOutName.Data()));
2584 printf(
"\n\nList of the %d towers of which calib coeff has automatically been put to 1.0 because it's on a SM edge :\n",cmptEdge);
2586 gSystem->Exec(Form(
"less %s | grep -E '^4 ' | sed 's/^4 //g' | sed 's/ -9$//g'",txtFileCalibOutName.Data()));
2588 printf(
"\n\nStart drawing final plots...\n\n");
2593 {
if ((i<kNbSMtot) && (tabChoiceCalos[
SMdetType[i]] == 0))
2599 c1->Divide(2,(
int)((kNbFitParams+1)/2));
2600 hSpace[kNbFitParams*i+0]->SetMinimum(0.);
2601 if (hSpace[kNbFitParams*i+0]->GetMaximum() > 3.0*tabMax[0]) hSpace[kNbFitParams*i+0]->SetMaximum(3.0*tabMax[0]);
2602 nbTot=hSpace[kNbFitParams*i+1]->GetMaximum();
2603 for (k=0;k<hSpace[kNbFitParams*i+1]->GetNbinsX();k++)
2604 {
for (j=0;j<hSpace[kNbFitParams*i+1]->GetNbinsY();j++)
2605 {
if ((hSpace[kNbFitParams*i+1]->GetBinContent(k+1,j+1) < nbTot) && (hSpace[kNbFitParams*i+1]->GetBinContent(k+1,j+1) > 0)) nbTot=hSpace[kNbFitParams*i+1]->GetBinContent(k+1,j+1);
2608 hSpace[kNbFitParams*i+1]->SetMinimum(0.98*nbTot);
2609 if (hSpace[kNbFitParams*i+1]->GetMaximum() > 190.) hSpace[kNbFitParams*i+1]->SetMaximum(190.);
2610 hSpace[kNbFitParams*i+2]->SetMinimum(tabMin[2]);
2611 if (hSpace[kNbFitParams*i+3]->GetMaximum() > 3.0*tabMax[0]) hSpace[kNbFitParams*i+3]->SetMaximum(3.0*tabMax[0]);
2612 if (hSpace[kNbFitParams*i+4]->GetMaximum() > 3.0*tabMax[0]) hSpace[kNbFitParams*i+4]->SetMaximum(3.0*tabMax[0]);
2613 if (hSpace[kNbFitParams*i+5]->GetMaximum() > 3.0*tabMax[0]) hSpace[kNbFitParams*i+5]->SetMaximum(3.0*tabMax[0]);
2616 k=(j%2)*(
int)((j+5)/2)+(1-(j%2))*(int)(j/2);
2617 hSpace[kNbFitParams*i+k]->Draw(
"COLZ");
2618 hSpaceEntriesDiscard[1*i+0]->SetMarkerColor(kWhite);
2621 hSpaceEntriesDiscard[1*i+0]->Draw(
"TEXT SAME");
2624 hSpaceEntriesDiscardHack[1*i+0]->Draw(
"TEXT SAME");
2628 sprintf(txtPS,
"%s for SM %d",varNameLong[k],i);
2631 ps->SetTextColor(1);
2632 ps->TextNDC(0.2,0.94,txtPS);
2633 hSpace[kNbFitParams*i+k]->Write();
2638 {hSpaceIntg[kNbExtraParams*i+j]->Write();
2644 hSpaceIntg[kNbExtraParams*i+0]->SetMinimum(0.);
2645 hSpaceIntg[kNbExtraParams*i+1]->SetMinimum(0.);
2646 hSpaceIntg[kNbExtraParams*i+2]->SetMinimum(0.);
2647 hSpaceIntg[kNbExtraParams*i+3]->SetMinimum(0.);
2648 if (hSpaceIntg[kNbExtraParams*i+2]->GetMaximum() > 3.0*tabMax[8]) hSpaceIntg[kNbExtraParams*i+2]->SetMaximum(3.0*tabMax[8]);
2653 hSpaceIntg[kNbExtraParams*i+0]->Draw(
"COLZ");
2654 hSpaceEntriesDiscard[1*i+0]->Draw(
"TEXT SAME");
2656 hSpaceEntriesDiscardHack[1*i+0]->Draw(
"TEXT SAME");
2658 sprintf(txtPS,
"%s for SM %d",varNameLong[0+kNbFitParams],i);
2659 ps->SetTextColor(1);
2660 ps->TextNDC(0.2,0.94,txtPS);
2663 hSpaceIntg[kNbExtraParams*i+2]->Draw(
"COLZ");
2664 hSpaceEntriesDiscard[1*i+0]->Draw(
"TEXT SAME");
2666 hSpaceEntriesDiscardHack[1*i+0]->Draw(
"TEXT SAME");
2668 sprintf(txtPS,
"%s for SM %d",varNameLong[2+kNbFitParams],i);
2669 ps->SetTextColor(1);
2670 ps->TextNDC(0.2,0.94,txtPS);
2673 hSpaceIntg[kNbExtraParams*i+3]->Draw(
"COLZ");
2674 hSpaceEntriesDiscard[1*i+0]->Draw(
"TEXT SAME");
2676 hSpaceEntriesDiscardHack[1*i+0]->Draw(
"TEXT SAME");
2678 sprintf(txtPS,
"%s for SM %d",varNameLong[3+kNbFitParams],i);
2679 ps->SetTextColor(1);
2680 ps->TextNDC(0.2,0.94,txtPS);
2682 hSpaceIntg[kNbExtraParams*i+0]->SetMaximum(1.5*tabMax[kNbFitParams+0]);
2684 hSpaceIntg[kNbExtraParams*i+0]->Draw(
"COLZ");
2685 hSpaceEntriesDiscard[1*i+0]->Draw(
"TEXT SAME");
2687 sprintf(txtPS,
"%s for SM %d (zoomed)",varNameLong[0+kNbFitParams],i);
2688 ps->TextNDC(0.2,0.94,txtPS);
2695 hSpaceIntg[kNbExtraParams*i+1]->Draw(
"COLZ");
2696 hSpaceEntriesDiscard[1*i+0]->Draw(
"TEXT SAME");
2698 hSpaceEntriesDiscardHack[1*i+0]->Draw(
"TEXT SAME");
2700 sprintf(txtPS,
"%s for SM %d",varNameLong[1+kNbFitParams],i);
2701 ps->SetTextColor(1);
2702 ps->TextNDC(0.2,0.94,txtPS);
2705 hSpaceIntg[kNbExtraParams*i+4]->Draw(
"COLZ");
2706 hSpaceEntriesDiscard[1*i+0]->Draw(
"TEXT SAME");
2708 hSpaceEntriesDiscardHack[1*i+0]->Draw(
"TEXT SAME");
2710 sprintf(txtPS,
"%s for SM %d",varNameLong[4+kNbFitParams],i);
2711 ps->SetTextColor(1);
2712 ps->TextNDC(0.2,0.94,txtPS);
2714 hSpaceIntg[kNbExtraParams*i+1]->SetMaximum(5.0);
2715 hSpaceIntg[kNbExtraParams*i+4]->SetMaximum(5.0);
2716 hSpaceIntg[kNbExtraParams*i+5]->SetMaximum(5.0);
2717 hSpaceIntg[kNbExtraParams*i+6]->SetMaximum(5.0);
2719 hSpaceIntg[kNbExtraParams*i+1]->Draw(
"COLZ");
2720 hSpaceEntriesDiscard[1*i+0]->Draw(
"TEXT SAME");
2722 sprintf(txtPS,
"%s for SM %d (zoomed)",varNameLong[1+kNbFitParams],i);
2723 ps->TextNDC(0.2,0.94,txtPS);
2725 hSpaceIntg[kNbExtraParams*i+4]->Draw(
"COLZ");
2726 hSpaceEntriesDiscard[1*i+0]->Draw(
"TEXT SAME");
2728 sprintf(txtPS,
"%s for SM %d (zoomed)",varNameLong[4+kNbFitParams],i);
2729 ps->TextNDC(0.2,0.94,txtPS);
2731 hSpaceIntg[kNbExtraParams*i+5]->Draw(
"COLZ");
2732 hSpaceEntriesDiscard[1*i+0]->Draw(
"TEXT SAME");
2734 hSpaceEntriesDiscardHack[1*i+0]->Draw(
"TEXT SAME");
2736 sprintf(txtPS,
"%s for SM %d",varNameLong[5+kNbFitParams],i);
2737 ps->SetTextColor(1);
2738 ps->TextNDC(0.2,0.94,txtPS);
2740 hSpaceIntg[kNbExtraParams*i+6]->Draw(
"COLZ");
2741 hSpaceEntriesDiscard[1*i+0]->Draw(
"TEXT SAME");
2743 hSpaceEntriesDiscardHack[1*i+0]->Draw(
"TEXT SAME");
2745 sprintf(txtPS,
"%s for SM %d",varNameLong[6+kNbFitParams],i);
2746 ps->SetTextColor(1);
2747 ps->TextNDC(0.2,0.94,txtPS);
2754 hSpaceCuts[5*i+1]->SetMinimum(0.);
2755 hSpaceCuts[5*i+1]->SetMaximum(2.);
2756 hSpaceCuts[5*i+1]->Draw(
"COLZ");
2758 sprintf(txtPS,
"Stat uncert on mean for SM %d",i);
2759 ps->TextNDC(0.2,0.94,txtPS);
2760 hSpaceCuts[5*i+1]->Write();
2763 hSpaceCuts[5*i+2]->SetMinimum(0.);
2764 hSpaceCuts[5*i+2]->SetMaximum(5.05);
2765 hSpaceCuts[5*i+2]->Draw(
"COLZ");
2767 sprintf(txtPS,
"Stat uncert on mean for SM %d",i);
2768 ps->TextNDC(0.2,0.94,txtPS);
2769 hSpaceCuts[5*i+2]->Write();
2772 hSpaceCuts[5*i+3]->SetMinimum(0.);
2773 hSpaceCuts[5*i+3]->SetMaximum(0.08);
2774 hSpaceCuts[5*i+3]->Draw(
"COLZ");
2776 sprintf(txtPS,
"Relative distance to mPDG for SM %d",i);
2777 ps->TextNDC(0.2,0.94,txtPS);
2778 hSpaceCuts[5*i+3]->Write();
2781 hSpaceCuts[5*i+4]->SetMinimum(0.);
2782 hSpaceCuts[5*i+4]->SetMaximum(5.05);
2783 hSpaceCuts[5*i+4]->Draw(
"COLZ");
2785 sprintf(txtPS,
"Relative distance to mPDG for SM %d",i);
2786 ps->TextNDC(0.2,0.94,txtPS);
2787 hSpaceCuts[5*i+4]->Write();
2790 hSpaceCuts[5*i+0]->SetMinimum(0.);
2791 hSpaceCuts[5*i+0]->SetMaximum(kNbFitParams+4);
2792 hSpaceCuts[5*i+0]->Draw(
"COLZ");
2793 hSpaceEntriesDiscard[1*i+0]->Draw(
"TEXT SAME");
2795 sprintf(txtPS,
"Untrusted fits for SM %d",i);
2796 ps->TextNDC(0.2,0.94,txtPS);
2797 hSpaceCuts[5*i+0]->Write();
2806 {
if ((i%2) == 0) shiftCol=0;
2809 for (iCol=0;iCol<kTabNbCol[
SMdetType[i]];iCol++)
2810 {
for (iRow=0;iRow<kTabNbRow[SMdetType[i]];iRow++)
2811 {hAllSpaceEMCAL[j]->SetBinContent(iCol+1+shiftCol,iRow+1+shiftRow,hSpace[kNbFitParams*i+j]->GetBinContent(iCol+1,iRow+1));
2813 if ((hSpace[kNbFitParams*i+1]->GetBinContent(iCol+1,iRow+1) != 0.) && (hSpace[kNbFitParams*i+2]->GetBinContent(iCol+1,iRow+1) != 0.)) hAllDistrib[j]->Fill(hSpace[kNbFitParams*i+j]->GetBinContent(iCol+1,iRow+1));
2815 {hAllDistribMass->Fill(hSpace[kNbFitParams*i+j]->GetBinContent(iCol+1,iRow+1));
2816 hAllDistribMassPerSM[i]->Fill(hSpace[kNbFitParams*i+j]->GetBinContent(iCol+1,iRow+1));
2824 {
if ((i%2) == 0) shiftCol=0;
2825 else shiftCol=kNbColMax+kTabColOffset[i];
2826 shiftRow=(int)((i-(
kNbSMEMCAL+kNbSMEMCALthird))/2)*kNbRowMax;
2827 for (iCol=0;iCol<kTabNbCol[
SMdetType[i]];iCol++)
2828 {
for (iRow=0;iRow<kTabNbRow[SMdetType[i]];iRow++)
2829 {hAllSpaceDCAL[j]->SetBinContent(iCol+1+shiftCol,iRow+1+shiftRow,hSpace[kNbFitParams*i+j]->GetBinContent(iCol+1,iRow+1));
2831 if ((hSpace[kNbFitParams*i+1]->GetBinContent(iCol+1,iRow+1) != 0.) && (hSpace[kNbFitParams*i+2]->GetBinContent(iCol+1,iRow+1) != 0.)) hAllDistrib[j]->Fill(hSpace[kNbFitParams*i+j]->GetBinContent(iCol+1,iRow+1));
2833 {hAllDistribMass->Fill(hSpace[kNbFitParams*i+j]->GetBinContent(iCol+1,iRow+1));
2834 hAllDistribMassPerSM[i]->Fill(hSpace[kNbFitParams*i+j]->GetBinContent(iCol+1,iRow+1));
2842 {
if ((i%2) == 0) shiftCol=0;
2845 for (iCol=0;iCol<kTabNbCol[
SMdetType[i]];iCol++)
2846 {
for (iRow=0;iRow<kTabNbRow[SMdetType[i]];iRow++)
2847 {hAllSpaceEMCALIntg[j]->SetBinContent(iCol+1+shiftCol,iRow+1+shiftRow,hSpaceIntg[kNbExtraParams*i+j]->GetBinContent(iCol+1,iRow+1));
2849 if ((hSpace[kNbFitParams*i+1]->GetBinContent(iCol+1,iRow+1) != 0.) && (hSpace[kNbFitParams*i+2]->GetBinContent(iCol+1,iRow+1) != 0.)) hAllDistribIntg[j]->Fill(hSpaceIntg[kNbExtraParams*i+j]->GetBinContent(iCol+1,iRow+1));
2856 {
if ((i%2) == 0) shiftCol=0;
2857 else shiftCol=kNbColMax+kTabColOffset[i];
2858 shiftRow=(int)((i-(
kNbSMEMCAL+kNbSMEMCALthird))/2)*kNbRowMax;
2859 for (iCol=0;iCol<kTabNbCol[
SMdetType[i]];iCol++)
2860 {
for (iRow=0;iRow<kTabNbRow[SMdetType[i]];iRow++)
2861 {hAllSpaceDCALIntg[j]->SetBinContent(iCol+1+shiftCol,iRow+1+shiftRow,hSpaceIntg[kNbExtraParams*i+j]->GetBinContent(iCol+1,iRow+1));
2863 if ((hSpace[kNbFitParams*i+1]->GetBinContent(iCol+1,iRow+1) != 0.) && (hSpace[kNbFitParams*i+2]->GetBinContent(iCol+1,iRow+1) != 0.)) hAllDistribIntg[j]->Fill(hSpaceIntg[kNbExtraParams*i+j]->GetBinContent(iCol+1,iRow+1));
2870 {
if ((i%2) == 0) shiftCol=0;
2873 for (iCol=0;iCol<kTabNbCol[
SMdetType[i]];iCol++)
2874 {
for (iRow=0;iRow<kTabNbRow[SMdetType[i]];iRow++)
2875 {hAllSpaceEMCALCoeff[j]->SetBinContent(iCol+1+shiftCol,iRow+1+shiftRow,hSpaceCoeff[1*i+j]->GetBinContent(iCol+1,iRow+1));
2882 {
if ((i%2) == 0) shiftCol=0;
2883 else shiftCol=kNbColMax+kTabColOffset[i];
2884 shiftRow=(int)((i-(
kNbSMEMCAL+kNbSMEMCALthird))/2)*kNbRowMax;
2885 for (iCol=0;iCol<kTabNbCol[
SMdetType[i]];iCol++)
2886 {
for (iRow=0;iRow<kTabNbRow[SMdetType[i]];iRow++)
2887 {hAllSpaceDCALCoeff[j]->SetBinContent(iCol+1+shiftCol,iRow+1+shiftRow,hSpaceCoeff[1*i+j]->GetBinContent(iCol+1,iRow+1));
2893 {
if ((i%2) == 0) shiftCol=0;
2896 for (iCol=0;iCol<kTabNbCol[
SMdetType[i]];iCol++)
2897 {
for (iRow=0;iRow<kTabNbRow[SMdetType[i]];iRow++)
2901 if ((hAllSpaceEMCAL[2]->GetBinContent(iCol+1+shiftCol,iRow+1+shiftRow) == 0.) && (hAllSpaceEMCAL[1]->GetBinContent(iCol+1+shiftCol,iRow+1+shiftRow) == 0.))
continue;
2902 hAllSpaceEMCALDistance[1]->SetBinContent(iCol+1+shiftCol,iRow+1+shiftRow,TMath::Abs(hAllSpaceEMCAL[1]->GetBinContent(iCol+1+shiftCol,iRow+1+shiftRow)-mPDG)/hSpaceFitErr[1*i+0]->GetBinContent(iCol+1,iRow+1));
2903 if (hAllSpaceEMCALIntg[2]->GetBinContent(iCol+1+shiftCol,iRow+1+shiftRow) != 0.) hAllSpaceEMCALDistance[0]->SetBinContent(iCol+1+shiftCol,iRow+1+shiftRow,TMath::Abs(hAllSpaceEMCAL[1]->GetBinContent(iCol+1+shiftCol,iRow+1+shiftRow)-mPDG)/(hAllSpaceEMCAL[2]->GetBinContent(iCol+1+shiftCol,iRow+1+shiftRow)/TMath::Sqrt(hAllSpaceEMCALIntg[2]->GetBinContent(iCol+1+shiftCol,iRow+1+shiftRow))));
2904 else hAllSpaceEMCALDistance[0]->SetBinContent(iCol+1+shiftCol,iRow+1+shiftRow,49.);
2905 if (hAllSpaceEMCALDistance[1]->GetBinContent(iCol+1+shiftCol,iRow+1+shiftRow) != 0.) hAllSpaceEMCALDistance[2]->SetBinContent(iCol+1+shiftCol,iRow+1+shiftRow,(hAllSpaceEMCALDistance[0]->GetBinContent(iCol+1+shiftCol,iRow+1+shiftRow)-hAllSpaceEMCALDistance[1]->GetBinContent(iCol+1+shiftCol,iRow+1+shiftRow))/hAllSpaceEMCALDistance[1]->GetBinContent(iCol+1+shiftCol,iRow+1+shiftRow));
2906 hAllDistribDistance[0]->Fill(hAllSpaceEMCALDistance[0]->GetBinContent(iCol+1+shiftCol,iRow+1+shiftRow));
2907 hAllDistribDistance[1]->Fill(hAllSpaceEMCALDistance[1]->GetBinContent(iCol+1+shiftCol,iRow+1+shiftRow));
2908 hCorrelDvsSig->Fill(hAllSpaceEMCAL[2]->GetBinContent(iCol+1+shiftCol,iRow+1+shiftRow),hAllSpaceEMCALDistance[1]->GetBinContent(iCol+1+shiftCol,iRow+1+shiftRow));
2909 hCorrelCmpD->Fill(hAllSpaceEMCALDistance[1]->GetBinContent(iCol+1+shiftCol,iRow+1+shiftRow),hAllSpaceEMCALDistance[2]->GetBinContent(iCol+1+shiftCol,iRow+1+shiftRow));
2914 {
if ((i%2) == 0) shiftCol=0;
2915 else shiftCol=kNbColMax+kTabColOffset[i];
2916 shiftRow=(int)((i-(
kNbSMEMCAL+kNbSMEMCALthird))/2)*kNbRowMax;
2917 for (iCol=0;iCol<kTabNbCol[
SMdetType[i]];iCol++)
2918 {
for (iRow=0;iRow<kTabNbRow[SMdetType[i]];iRow++)
2922 if ((hAllSpaceDCAL[2]->GetBinContent(iCol+1+shiftCol,iRow+1+shiftRow) == 0.) && (hAllSpaceDCAL[1]->GetBinContent(iCol+1+shiftCol,iRow+1+shiftRow) == 0.))
continue;
2923 hAllSpaceDCALDistance[1]->SetBinContent(iCol+1+shiftCol,iRow+1+shiftRow,TMath::Abs(hAllSpaceDCAL[1]->GetBinContent(iCol+1+shiftCol,iRow+1+shiftRow)-mPDG)/hSpaceFitErr[1*i+0]->GetBinContent(iCol+1,iRow+1));
2924 if (hAllSpaceDCALIntg[2]->GetBinContent(iCol+1+shiftCol,iRow+1+shiftRow) != 0.) hAllSpaceDCALDistance[0]->SetBinContent(iCol+1+shiftCol,iRow+1+shiftRow,TMath::Abs(hAllSpaceDCAL[1]->GetBinContent(iCol+1+shiftCol,iRow+1+shiftRow)-mPDG)/(hAllSpaceDCAL[2]->GetBinContent(iCol+1+shiftCol,iRow+1+shiftRow)/TMath::Sqrt(hAllSpaceDCALIntg[2]->GetBinContent(iCol+1+shiftCol,iRow+1+shiftRow))));
2925 else hAllSpaceDCALDistance[0]->SetBinContent(iCol+1+shiftCol,iRow+1+shiftRow,49.);
2926 if (hAllSpaceDCALDistance[1]->GetBinContent(iCol+1+shiftCol,iRow+1+shiftRow) != 0.) hAllSpaceDCALDistance[2]->SetBinContent(iCol+1+shiftCol,iRow+1+shiftRow,(hAllSpaceDCALDistance[0]->GetBinContent(iCol+1+shiftCol,iRow+1+shiftRow)-hAllSpaceDCALDistance[1]->GetBinContent(iCol+1+shiftCol,iRow+1+shiftRow))/hAllSpaceDCALDistance[1]->GetBinContent(iCol+1+shiftCol,iRow+1+shiftRow));
2927 hAllDistribDistance[0]->Fill(hAllSpaceDCALDistance[0]->GetBinContent(iCol+1+shiftCol,iRow+1+shiftRow));
2928 hAllDistribDistance[1]->Fill(hAllSpaceDCALDistance[1]->GetBinContent(iCol+1+shiftCol,iRow+1+shiftRow));
2929 hCorrelDvsSig->Fill(hAllSpaceDCAL[2]->GetBinContent(iCol+1+shiftCol,iRow+1+shiftRow),hAllSpaceDCALDistance[1]->GetBinContent(iCol+1+shiftCol,iRow+1+shiftRow));
2930 hCorrelCmpD->Fill(hAllSpaceDCALDistance[1]->GetBinContent(iCol+1+shiftCol,iRow+1+shiftRow),hAllSpaceDCALDistance[2]->GetBinContent(iCol+1+shiftCol,iRow+1+shiftRow));
2936 {
if ((i%2) == 0) shiftCol=0;
2939 for (iCol=0;iCol<kTabNbCol[
SMdetType[i]];iCol++)
2940 {
for (iRow=0;iRow<kTabNbRow[SMdetType[i]];iRow++)
2941 {hAllSpaceEMCALDiff[j]->SetBinContent(iCol+1+shiftCol,iRow+1+shiftRow,hSpaceDiff[kNbTotParams*i+j]->GetBinContent(iCol+1,iRow+1));
2948 {
if ((i%2) == 0) shiftCol=0;
2949 else shiftCol=kNbColMax+kTabColOffset[i];
2950 shiftRow=(int)((i-(
kNbSMEMCAL+kNbSMEMCALthird))/2)*kNbRowMax;
2951 for (iCol=0;iCol<kTabNbCol[
SMdetType[i]];iCol++)
2952 {
for (iRow=0;iRow<kTabNbRow[SMdetType[i]];iRow++)
2953 {hAllSpaceDCALDiff[j]->SetBinContent(iCol+1+shiftCol,iRow+1+shiftRow,hSpaceDiff[kNbTotParams*i+j]->GetBinContent(iCol+1,iRow+1));
2959 if (choiceNoEMCAL != 0)
2962 c1->Divide(2,(
int)((kNbFitParams+1)/2));
2963 hAllSpaceEMCAL[0]->SetMinimum(0.);
2964 hAllSpaceEMCAL[0]->SetMaximum(1.2*tabMax[0]);
2965 hAllSpaceEMCAL[1]->SetMinimum(tabMin[1]+30.);
2966 hAllSpaceEMCAL[1]->SetMaximum(tabMax[1]-10.);
2967 hAllSpaceEMCAL[2]->SetMinimum(tabMin[2]+5.);
2968 hAllSpaceEMCAL[2]->SetMaximum(tabMax[2]-5.);
2971 k=(j%2)*(
int)((j+5)/2)+(1-(j%2))*(int)(j/2);
2972 hAllSpaceEMCAL[k]->Draw(
"COLZ");
2973 lineSMborderVEMCAL->Draw(
"SAME");
2974 for (
int jm=0;jm<(int)((
kNbSMEMCAL+1)/2);jm++) lineSMborderHEMCAL[jm]->
Draw(
"SAME");
2976 sprintf(txtPS,
"%s for all SMs",varNameLong[k]);
2977 ps->TextNDC(0.2,0.94,txtPS);
2978 hAllSpaceEMCAL[k]->Write();
2984 {hAllSpaceEMCALIntg[j]->Write();
2990 hAllSpaceEMCALIntg[0]->SetMinimum(0.);
2991 hAllSpaceEMCALIntg[1]->SetMinimum(0.);
2992 hAllSpaceEMCALIntg[2]->SetMaximum(1.2*tabMax[8]);
2993 hAllSpaceEMCALIntg[3]->SetMinimum(0.);
2998 hAllSpaceEMCALIntg[0]->Draw(
"COLZ");
2999 lineSMborderVEMCAL->Draw(
"SAME");
3000 for (
int jm=0;jm<(int)((
kNbSMEMCAL+1)/2);jm++) lineSMborderHEMCAL[jm]->
Draw(
"SAME");
3002 sprintf(txtPS,
"%s for all SMs",varNameLong[0+kNbFitParams]);
3003 ps->TextNDC(0.2,0.94,txtPS);
3005 hAllSpaceEMCALIntg[2]->Draw(
"COLZ");
3006 lineSMborderVEMCAL->Draw(
"SAME");
3007 for (
int jm=0;jm<(int)((
kNbSMEMCAL+1)/2);jm++) lineSMborderHEMCAL[jm]->
Draw(
"SAME");
3009 sprintf(txtPS,
"%s for all SMs",varNameLong[2+kNbFitParams]);
3010 ps->TextNDC(0.2,0.94,txtPS);
3012 hAllSpaceEMCALIntg[3]->Draw(
"COLZ");
3013 lineSMborderVEMCAL->Draw(
"SAME");
3014 for (
int jm=0;jm<(int)((
kNbSMEMCAL+1)/2);jm++) lineSMborderHEMCAL[jm]->
Draw(
"SAME");
3016 sprintf(txtPS,
"%s for all SMs",varNameLong[3+kNbFitParams]);
3017 ps->TextNDC(0.2,0.94,txtPS);
3019 hAllSpaceEMCALIntg[0]->SetMaximum(1.2*tabMax[kNbFitParams+0]);
3021 hAllSpaceEMCALIntg[0]->Draw(
"COLZ");
3022 lineSMborderVEMCAL->Draw(
"SAME");
3023 for (
int jm=0;jm<(int)((
kNbSMEMCAL+1)/2);jm++) lineSMborderHEMCAL[jm]->
Draw(
"SAME");
3025 sprintf(txtPS,
"%s for all SMs (zoomed)",varNameLong[2+kNbFitParams]);
3026 ps->TextNDC(0.2,0.94,txtPS);
3033 hAllSpaceEMCALIntg[1]->Draw(
"COLZ");
3034 lineSMborderVEMCAL->Draw(
"SAME");
3035 for (
int jm=0;jm<(int)((
kNbSMEMCAL+1)/2);jm++) lineSMborderHEMCAL[jm]->
Draw(
"SAME");
3037 sprintf(txtPS,
"%s for all SMs",varNameLong[1+kNbFitParams]);
3038 ps->TextNDC(0.2,0.94,txtPS);
3040 hAllSpaceEMCALIntg[4]->Draw(
"COLZ");
3041 lineSMborderVEMCAL->Draw(
"SAME");
3042 for (
int jm=0;jm<(int)((
kNbSMEMCAL+1)/2);jm++) lineSMborderHEMCAL[jm]->
Draw(
"SAME");
3044 sprintf(txtPS,
"%s for all SMs",varNameLong[4+kNbFitParams]);
3045 ps->TextNDC(0.2,0.94,txtPS);
3047 hAllSpaceEMCALIntg[1]->SetMaximum(4.0);
3048 hAllSpaceEMCALIntg[4]->SetMaximum(4.0);
3050 hAllSpaceEMCALIntg[1]->Draw(
"COLZ");
3051 lineSMborderVEMCAL->Draw(
"SAME");
3052 for (
int jm=0;jm<(int)((
kNbSMEMCAL+1)/2);jm++) lineSMborderHEMCAL[jm]->
Draw(
"SAME");
3054 sprintf(txtPS,
"%s for all SMs (zoomed)",varNameLong[1+kNbFitParams]);
3055 ps->TextNDC(0.2,0.94,txtPS);
3057 hAllSpaceEMCALIntg[4]->Draw(
"COLZ");
3058 lineSMborderVEMCAL->Draw(
"SAME");
3059 for (
int jm=0;jm<(int)((
kNbSMEMCAL+1)/2);jm++) lineSMborderHEMCAL[jm]->
Draw(
"SAME");
3061 sprintf(txtPS,
"%s for all SMs (zoomed)",varNameLong[4+kNbFitParams]);
3062 ps->TextNDC(0.2,0.94,txtPS);
3064 hAllSpaceEMCALSoverN->Divide(hAllSpaceEMCALIntg[2],hAllSpaceEMCALIntg[3]);
3065 nbTot=hAllSpaceEMCALSoverN->GetMaximum();
3066 for (i=0;i<hAllSpaceEMCALSoverN->GetNbinsX();i++)
3067 {
for (j=0;j<hAllSpaceEMCALSoverN->GetNbinsY();j++)
3068 {
if ((hAllSpaceEMCALSoverN->GetBinContent(i+1,j+1) < nbTot) && (hAllSpaceEMCALSoverN->GetBinContent(i+1,j+1) > 0)) nbTot=hAllSpaceEMCALSoverN->GetBinContent(i+1,j+1);
3071 hAllSpaceEMCALSoverN->SetMinimum(0.98*nbTot);
3072 hAllSpaceEMCALSoverN->Draw(
"COLZ");
3073 lineSMborderVEMCAL->Draw(
"SAME");
3074 for (
int jm=0;jm<(int)((
kNbSMEMCAL+1)/2);jm++) lineSMborderHEMCAL[jm]->
Draw(
"SAME");
3076 sprintf(txtPS,
"Signal to noise ratio for all SMs");
3077 ps->TextNDC(0.2,0.94,txtPS);
3078 hAllSpaceEMCALSoverN->Write();
3081 hAllSpaceEMCALSoverN->SetMaximum(2.);
3082 hAllSpaceEMCALSoverN->Draw(
"COLZ");
3083 lineSMborderVEMCAL->Draw(
"SAME");
3084 for (
int jm=0;jm<(int)((
kNbSMEMCAL+1)/2);jm++) lineSMborderHEMCAL[jm]->
Draw(
"SAME");
3086 sprintf(txtPS,
"Signal to noise ratio for all SMs (zoomed)");
3087 ps->TextNDC(0.2,0.94,txtPS);
3091 if (choiceNoDCAL != 0)
3094 c1->Divide(2,(
int)((kNbFitParams+1)/2));
3095 hAllSpaceDCAL[0]->SetMinimum(0.);
3096 hAllSpaceDCAL[0]->SetMaximum(1.2*tabMax[0]);
3097 hAllSpaceDCAL[1]->SetMinimum(tabMin[1]+30.);
3098 hAllSpaceDCAL[1]->SetMaximum(tabMax[1]-10.);
3099 hAllSpaceDCAL[2]->SetMinimum(tabMin[2]+5.);
3100 hAllSpaceDCAL[2]->SetMaximum(tabMax[2]-5.);
3103 k=(j%2)*(
int)((j+5)/2)+(1-(j%2))*(int)(j/2);
3104 hAllSpaceDCAL[k]->Draw(
"COLZ");
3105 lineSMborderVDCALthird->Draw(
"SAME");
3106 lineSMborderVDCAL1->Draw(
"SAME");
3107 lineSMborderVDCAL2->Draw(
"SAME");
3108 for (
int jm=0;jm<(int)((kNbSMDCAL+1)/2);jm++) lineSMborderHDCAL[jm]->
Draw(
"SAME");
3110 sprintf(txtPS,
"%s for all SMs",varNameLong[k]);
3111 ps->TextNDC(0.2,0.94,txtPS);
3112 hAllSpaceDCAL[k]->Write();
3118 {hAllSpaceDCALIntg[j]->Write();
3124 hAllSpaceDCALIntg[0]->SetMinimum(0.);
3125 hAllSpaceDCALIntg[1]->SetMinimum(0.);
3126 hAllSpaceDCALIntg[2]->SetMaximum(1.2*tabMax[8]);
3127 hAllSpaceDCALIntg[3]->SetMinimum(0.);
3132 hAllSpaceDCALIntg[0]->Draw(
"COLZ");
3133 lineSMborderVDCALthird->Draw(
"SAME");
3134 lineSMborderVDCAL1->Draw(
"SAME");
3135 lineSMborderVDCAL2->Draw(
"SAME");
3136 for (
int jm=0;jm<(int)((kNbSMDCAL+1)/2);jm++) lineSMborderHDCAL[jm]->
Draw(
"SAME");
3138 sprintf(txtPS,
"%s for all SMs",varNameLong[0+kNbFitParams]);
3139 ps->TextNDC(0.2,0.94,txtPS);
3142 hAllSpaceDCALIntg[2]->Draw(
"COLZ");
3143 lineSMborderVDCALthird->Draw(
"SAME");
3144 lineSMborderVDCAL1->Draw(
"SAME");
3145 lineSMborderVDCAL2->Draw(
"SAME");
3146 for (
int jm=0;jm<(int)((kNbSMDCAL+1)/2);jm++) lineSMborderHDCAL[jm]->
Draw(
"SAME");
3148 sprintf(txtPS,
"%s for all SMs",varNameLong[2+kNbFitParams]);
3149 ps->TextNDC(0.2,0.94,txtPS);
3152 hAllSpaceDCALIntg[3]->Draw(
"COLZ");
3153 lineSMborderVDCALthird->Draw(
"SAME");
3154 lineSMborderVDCAL1->Draw(
"SAME");
3155 lineSMborderVDCAL2->Draw(
"SAME");
3156 for (
int jm=0;jm<(int)((kNbSMDCAL+1)/2);jm++) lineSMborderHDCAL[jm]->
Draw(
"SAME");
3158 sprintf(txtPS,
"%s for all SMs",varNameLong[3+kNbFitParams]);
3159 ps->TextNDC(0.2,0.94,txtPS);
3161 hAllSpaceDCALIntg[0]->SetMaximum(1.2*tabMax[kNbFitParams+0]);
3163 hAllSpaceDCALIntg[0]->Draw(
"COLZ");
3164 lineSMborderVDCALthird->Draw(
"SAME");
3165 lineSMborderVDCAL1->Draw(
"SAME");
3166 lineSMborderVDCAL2->Draw(
"SAME");
3167 for (
int jm=0;jm<(int)((kNbSMDCAL+1)/2);jm++) lineSMborderHDCAL[jm]->
Draw(
"SAME");
3169 sprintf(txtPS,
"%s for all SMs (zoomed)",varNameLong[0+kNbFitParams]);
3170 ps->TextNDC(0.2,0.94,txtPS);
3177 hAllSpaceDCALIntg[1]->Draw(
"COLZ");
3178 lineSMborderVDCALthird->Draw(
"SAME");
3179 lineSMborderVDCAL1->Draw(
"SAME");
3180 lineSMborderVDCAL2->Draw(
"SAME");
3181 for (
int jm=0;jm<(int)((kNbSMDCAL+1)/2);jm++) lineSMborderHDCAL[jm]->
Draw(
"SAME");
3183 sprintf(txtPS,
"%s for all SMs",varNameLong[1+kNbFitParams]);
3184 ps->TextNDC(0.2,0.94,txtPS);
3186 hAllSpaceDCALIntg[4]->Draw(
"COLZ");
3187 lineSMborderVDCALthird->Draw(
"SAME");
3188 lineSMborderVDCAL1->Draw(
"SAME");
3189 lineSMborderVDCAL2->Draw(
"SAME");
3190 for (
int jm=0;jm<(int)((kNbSMDCAL+1)/2);jm++) lineSMborderHDCAL[jm]->
Draw(
"SAME");
3192 sprintf(txtPS,
"%s for all SMs",varNameLong[4+kNbFitParams]);
3193 ps->TextNDC(0.2,0.94,txtPS);
3195 hAllSpaceDCALIntg[1]->SetMaximum(4.0);
3196 hAllSpaceDCALIntg[4]->SetMaximum(4.0);
3198 hAllSpaceDCALIntg[1]->Draw(
"COLZ");
3199 lineSMborderVDCALthird->Draw(
"SAME");
3200 lineSMborderVDCAL1->Draw(
"SAME");
3201 lineSMborderVDCAL2->Draw(
"SAME");
3202 for (
int jm=0;jm<(int)((kNbSMDCAL+1)/2);jm++) lineSMborderHDCAL[jm]->
Draw(
"SAME");
3204 sprintf(txtPS,
"%s for all SMs (zoomed)",varNameLong[1+kNbFitParams]);
3205 ps->TextNDC(0.2,0.94,txtPS);
3207 hAllSpaceDCALIntg[4]->Draw(
"COLZ");
3208 lineSMborderVDCALthird->Draw(
"SAME");
3209 lineSMborderVDCAL1->Draw(
"SAME");
3210 lineSMborderVDCAL2->Draw(
"SAME");
3211 for (
int jm=0;jm<(int)((kNbSMDCAL+1)/2);jm++) lineSMborderHDCAL[jm]->
Draw(
"SAME");
3213 sprintf(txtPS,
"%s for all SMs (zoomed)",varNameLong[4+kNbFitParams]);
3214 ps->TextNDC(0.2,0.94,txtPS);
3216 hAllSpaceDCALSoverN->Divide(hAllSpaceDCALIntg[2],hAllSpaceDCALIntg[3]);
3217 nbTot=hAllSpaceDCALSoverN->GetMaximum();
3218 for (i=0;i<hAllSpaceDCALSoverN->GetNbinsX();i++)
3219 {
for (j=0;j<hAllSpaceDCALSoverN->GetNbinsY();j++)
3220 {
if ((hAllSpaceDCALSoverN->GetBinContent(i+1,j+1) < nbTot) && (hAllSpaceDCALSoverN->GetBinContent(i+1,j+1) > 0)) nbTot=hAllSpaceDCALSoverN->GetBinContent(i+1,j+1);
3223 hAllSpaceDCALSoverN->SetMinimum(0.98*nbTot);
3232 hAllSpaceDCALSoverN->Draw(
"COLZ");
3233 lineSMborderVDCALthird->Draw(
"SAME");
3234 lineSMborderVDCAL1->Draw(
"SAME");
3235 lineSMborderVDCAL2->Draw(
"SAME");
3236 for (
int jm=0;jm<(int)((kNbSMDCAL+1)/2);jm++) lineSMborderHDCAL[jm]->
Draw(
"SAME");
3238 sprintf(txtPS,
"Signal to noise ratio for all SMs");
3239 ps->TextNDC(0.2,0.94,txtPS);
3240 hAllSpaceDCALSoverN->Write();
3243 hAllSpaceDCALSoverN->SetMaximum(2.);
3244 hAllSpaceDCALSoverN->Draw(
"COLZ");
3245 lineSMborderVDCALthird->Draw(
"SAME");
3246 lineSMborderVDCAL1->Draw(
"SAME");
3247 lineSMborderVDCAL2->Draw(
"SAME");
3248 for (
int jm=0;jm<(int)((kNbSMDCAL+1)/2);jm++) lineSMborderHDCAL[jm]->
Draw(
"SAME");
3250 sprintf(txtPS,
"Signal to noise ratio for all SMs (zoomed)");
3251 ps->TextNDC(0.2,0.94,txtPS);
3252 hAllSpaceDCALSoverN->Write();
3258 TF1 *gaussMass1 =
new TF1(
"gaussMass1",
"gaus(0)",130.,140.);
3259 TF1 *gaussMass2 =
new TF1(
"gaussMass2",
"gaus(0)",130.,140.);
3260 gaussMass1->SetParLimits(0,1.,10000.);
3261 gaussMass1->SetParLimits(1,125.,145.);
3262 gaussMass1->SetParLimits(2,0.01,20.);
3263 gaussMass2->SetParLimits(0,1.,10000.);
3264 gaussMass2->SetParLimits(1,125.,145.);
3265 gaussMass2->SetParLimits(2,0.01,20.);
3266 gaussMass1->SetParameter(0,300.);
3267 gaussMass1->SetParameter(1,135.);
3268 gaussMass1->SetParameter(2,1.5);
3269 gaussMass2->SetParameter(0,300.);
3270 gaussMass2->SetParameter(1,135.);
3271 gaussMass2->SetParameter(2,1.5);
3272 gaussMass1->SetLineColor(kViolet+8);
3273 gaussMass2->SetLineColor(kPink+8);
3274 gaussMass1->SetLineWidth(1);
3275 gaussMass2->SetLineWidth(1);
3276 linePDGMass->SetLineColor(kTeal-5);
3280 if (choiceNoEMCAL != 0)
3287 hAllDistribMassPerSM[i]->Fit(gaussMass1,
"BRM 0");
3288 tabPeakMeanPerSM[i]=gaussMass1->GetParameter(1);
3289 tabPeakSigmaPerSM[i]=gaussMass1->GetParameter(2);
3290 if (gaussMass1->GetNDF() != 0.) tabPeakKhi2PerSM[i]=gaussMass1->GetChisquare()/gaussMass1->GetNDF();
3291 else tabPeakKhi2PerSM[i]=0.;
3292 hAllDistribMassPerSM[i]->SetLineColor(4);
3293 hAllDistribMassPerSM[i]->Draw();
3294 hAllDistribMassPerSM[i]->Write();
3295 gaussMass1->Draw(
"SAME");
3296 linePDGMass->SetY2(1.05*hAllDistribMassPerSM[i]->GetMaximum());
3297 linePDGMass->Draw(
"SAME");
3298 hAllOldDistribMassPerSM[i]->Fit(gaussMass2,
"BRM 0");
3299 tabPeakOldMeanPerSM[i]=gaussMass2->GetParameter(1);
3300 tabPeakOldSigmaPerSM[i]=gaussMass2->GetParameter(2);
3301 if (gaussMass2->GetNDF() != 0.) tabPeakOldKhi2PerSM[i]=gaussMass2->GetChisquare()/gaussMass2->GetNDF();
3302 else tabPeakOldKhi2PerSM[i]=0.;
3303 hAllOldDistribMassPerSM[i]->SetLineColor(2);
3304 hAllOldDistribMassPerSM[i]->Draw(
"SAME");
3305 hAllOldDistribMassPerSM[i]->Write();
3306 gaussMass2->Draw(
"SAME");
3307 linePDGMass->SetY2(1.05*hAllOldDistribMassPerSM[i]->GetMaximum());
3308 linePDGMass->Draw(
"SAME");
3315 if (choiceNoDCAL != 0)
3322 hAllDistribMassPerSM[i]->Fit(gaussMass1,
"BRM 0");
3323 tabPeakMeanPerSM[i]=gaussMass1->GetParameter(1);
3324 tabPeakSigmaPerSM[i]=gaussMass1->GetParameter(2);
3325 if (gaussMass1->GetNDF() != 0.) tabPeakKhi2PerSM[i]=gaussMass1->GetChisquare()/gaussMass1->GetNDF();
3326 else tabPeakKhi2PerSM[i]=0.;
3327 hAllDistribMassPerSM[i]->SetLineColor(4);
3328 hAllDistribMassPerSM[i]->Draw();
3329 hAllDistribMassPerSM[i]->Write();
3330 gaussMass1->Draw(
"SAME");
3331 linePDGMass->SetY2(1.05*hAllDistribMassPerSM[i]->GetMaximum());
3332 linePDGMass->Draw(
"SAME");
3333 hAllOldDistribMassPerSM[i]->Fit(gaussMass2,
"BRM 0");
3334 tabPeakOldMeanPerSM[i]=gaussMass2->GetParameter(1);
3335 tabPeakOldSigmaPerSM[i]=gaussMass2->GetParameter(2);
3336 if (gaussMass2->GetNDF() != 0.) tabPeakOldKhi2PerSM[i]=gaussMass2->GetChisquare()/gaussMass2->GetNDF();
3337 else tabPeakOldKhi2PerSM[i]=0.;
3338 hAllOldDistribMassPerSM[i]->SetLineColor(2);
3339 hAllOldDistribMassPerSM[i]->Draw(
"SAME");
3340 hAllOldDistribMassPerSM[i]->Write();
3341 gaussMass2->Draw(
"SAME");
3342 linePDGMass->SetY2(1.05*hAllOldDistribMassPerSM[i]->GetMaximum());
3343 linePDGMass->Draw(
"SAME");
3352 {printf(
"Mass distr in SM %d : new : %6.2f sig %4.2f MeV, khi2 = %4.2f vs old : %6.2f sig %4.2f MeV, khi2 = %4.2f\n",i,tabPeakMeanPerSM[i],tabPeakSigmaPerSM[i],tabPeakKhi2PerSM[i],tabPeakOldMeanPerSM[i],tabPeakOldSigmaPerSM[i],tabPeakOldKhi2PerSM[i]);
3353 hMassPerSM->SetBinContent(i+1,tabPeakMeanPerSM[i]);
3354 hMassPerSM->SetBinError(i+1,tabPeakOldSigmaPerSM[i]);
3355 hMassOldPerSM->SetBinContent(i+1,tabPeakOldMeanPerSM[i]);
3356 hMassOldPerSM->SetBinError(i+1,tabPeakOldSigmaPerSM[i]);
3358 printf(
"-----------------------------------------------------\n");
3365 hCoeff->SetLineColor(4);
3366 hCoeffOldCorr->SetLineColor(2);
3367 hCoeffOld->SetLineColor(kOrange+7);
3370 if (isFirstIteration == 0)
3371 {hCoeffOld->Draw(
"SAME");
3372 hCoeffOldCorr->Draw(
"SAME");
3376 hCoeffOldCorr->Write();
3377 if (isFirstIteration == 0)
3379 hCoeffOldCorrLarge->SetLineColor(2);
3380 hCoeffOldLarge->SetLineColor(kOrange+7);
3382 hCoeffOldLarge->Draw();
3383 hCoeffOldCorrLarge->Draw(
"SAME");
3384 hCoeffOldLarge->Write();
3385 hCoeffOldCorrLarge->Write();
3388 gaussMass1->SetParameter(0,300.);
3389 gaussMass1->SetParameter(1,135.);
3390 gaussMass1->SetParameter(2,1.5);
3391 gaussMass2->SetParameter(0,300.);
3392 gaussMass2->SetParameter(1,135.);
3393 gaussMass2->SetParameter(2,1.5);
3394 hAllDistribMass->Fit(gaussMass1,
"BRM 0");
3395 if (isFirstIteration == 0) hAllOldDistribMass->Fit(gaussMass2,
"BRM 0");
3397 printf(
"\nTower mass distribution : new : %f sig %f MeV, khi2 = %f\n",gaussMass1->GetParameter(1),gaussMass1->GetParameter(2),gaussMass1->GetChisquare()/gaussMass1->GetNDF());
3398 if (isFirstIteration == 0) printf(
" old : %f sig %f MeV, khi2 = %f\n\n",gaussMass2->GetParameter(1),gaussMass2->GetParameter(2),gaussMass2->GetChisquare()/gaussMass2->GetNDF());
3399 hAllDistribMass->SetLineColor(4);
3400 hAllDistribMass->Draw();
3401 hAllDistribMass->Write();
3402 gaussMass1->Draw(
"SAME");
3403 linePDGMass->SetLineColor(kTeal-5);
3404 linePDGMass->SetY2(1.05*hAllDistribMass->GetMaximum());
3405 linePDGMass->Draw(
"SAME");
3407 if (isFirstIteration == 0)
3409 hAllOldDistribMass->SetLineColor(2);
3410 hAllOldDistribMass->Draw();
3411 hAllOldDistribMass->Write();
3412 gaussMass2->Draw(
"SAME");
3413 linePDGMass->SetY2(1.05*hAllOldDistribMass->GetMaximum());
3414 linePDGMass->Draw(
"SAME");
3418 hMassPerSM->SetLineColor(4);
3419 hMassOldPerSM->SetLineColor(2);
3420 hMassPerSM->SetMaximum(mPDG+2.5);
3421 hMassPerSM->SetMinimum(mPDG-2.5);
3423 hMassPerSM->Write();
3424 if (isFirstIteration == 0) hMassOldPerSM->Draw(
"SAME");
3425 hMassOldPerSM->Write();
3426 lineMassH->SetX1(hMassPerSM->GetXaxis()->GetXmin());
3427 lineMassH->SetX2(hMassPerSM->GetXaxis()->GetXmax());
3428 lineMassH->SetLineColor(kTeal-5);
3429 lineMassH->Draw(
"SAME");
3431 if (choiceNoEMCAL != 0)
3433 nbTot=hAllSpaceEMCALCoeff[0]->GetMaximum();
3434 for (i=0;i<hAllSpaceEMCALCoeff[0]->GetNbinsX();i++)
3435 {
for (j=0;j<hAllSpaceEMCALCoeff[0]->GetNbinsY();j++)
3436 {
if ((hAllSpaceEMCALCoeff[0]->GetBinContent(i+1,j+1) < nbTot) && (hAllSpaceEMCALCoeff[0]->GetBinContent(i+1,j+1) != 0)) nbTot=hAllSpaceEMCALCoeff[0]->GetBinContent(i+1,j+1);
3439 hAllSpaceEMCALCoeff[0]->SetMinimum(0.98*nbTot);
3440 hAllSpaceEMCALCoeff[0]->Draw(
"COLZ");
3441 lineSMborderVEMCAL->Draw(
"SAME");
3442 for (
int jm=0;jm<(int)((
kNbSMEMCAL+1)/2);jm++) lineSMborderHEMCAL[jm]->
Draw(
"SAME");
3444 hAllSpaceEMCALCoeff[0]->Write();
3445 if (choiceNoDCAL != 0)
3447 nbTot=hAllSpaceDCALCoeff[0]->GetMaximum();
3448 for (i=0;i<hAllSpaceDCALCoeff[0]->GetNbinsX();i++)
3449 {
for (j=0;j<hAllSpaceDCALCoeff[0]->GetNbinsY();j++)
3450 {
if ((hAllSpaceDCALCoeff[0]->GetBinContent(i+1,j+1) < nbTot) && (hAllSpaceDCALCoeff[0]->GetBinContent(i+1,j+1) != 0)) nbTot=hAllSpaceDCALCoeff[0]->GetBinContent(i+1,j+1);
3453 hAllSpaceDCALCoeff[0]->SetMinimum(0.98*nbTot);
3454 hAllSpaceDCALCoeff[0]->Draw(
"COLZ");
3455 lineSMborderVDCALthird->Draw(
"SAME");
3456 lineSMborderVDCAL1->Draw(
"SAME");
3457 lineSMborderVDCAL2->Draw(
"SAME");
3458 for (
int jm=0;jm<(int)((kNbSMDCAL+1)/2);jm++) lineSMborderHDCAL[jm]->
Draw(
"SAME");
3460 hAllSpaceDCALCoeff[0]->Write();
3462 printf(
"-----------------------------------------------------\n");
3470 hAllSpaceEMCALDistance[0]->SetMinimum(0.);
3471 hAllSpaceEMCALDistance[0]->SetMaximum(10.);
3472 hAllSpaceEMCALDistance[0]->Draw(
"COLZ");
3473 lineSMborderVEMCAL->Draw(
"SAME");
3474 for (
int jm=0;jm<(int)((
kNbSMEMCAL+1)/2);jm++) lineSMborderHEMCAL[jm]->
Draw(
"SAME");
3475 hAllSpaceEMCALDistance[0]->Write();
3477 hAllSpaceEMCALDistance[1]->SetMinimum(0.);
3478 hAllSpaceEMCALDistance[1]->SetMaximum(10.);
3479 hAllSpaceEMCALDistance[1]->Draw(
"COLZ");
3480 lineSMborderVEMCAL->Draw(
"SAME");
3481 for (
int jm=0;jm<(int)((
kNbSMEMCAL+1)/2);jm++) lineSMborderHEMCAL[jm]->
Draw(
"SAME");
3482 hAllSpaceEMCALDistance[1]->Write();
3484 hAllSpaceEMCALDistance[2]->SetMinimum(-1.);
3485 hAllSpaceEMCALDistance[2]->SetMaximum(4.);
3486 hAllSpaceEMCALDistance[2]->Draw(
"COLZ");
3487 lineSMborderVEMCAL->Draw(
"SAME");
3488 for (
int jm=0;jm<(int)((
kNbSMEMCAL+1)/2);jm++) lineSMborderHEMCAL[jm]->
Draw(
"SAME");
3489 hAllSpaceEMCALDistance[2]->Write();
3491 hAllSpaceDCALDistance[0]->SetMinimum(0.);
3492 hAllSpaceDCALDistance[0]->SetMaximum(10.);
3493 hAllSpaceDCALDistance[0]->Draw(
"COLZ");
3494 lineSMborderVDCALthird->Draw(
"SAME");
3495 lineSMborderVDCAL1->Draw(
"SAME");
3496 lineSMborderVDCAL2->Draw(
"SAME");
3497 for (
int jm=0;jm<(int)((kNbSMDCAL+1)/2);jm++) lineSMborderHDCAL[jm]->
Draw(
"SAME");
3498 hAllSpaceDCALDistance[0]->Write();
3500 hAllSpaceDCALDistance[1]->SetMinimum(0.);
3501 hAllSpaceDCALDistance[1]->SetMaximum(10.);
3502 hAllSpaceDCALDistance[1]->Draw(
"COLZ");
3503 lineSMborderVDCALthird->Draw(
"SAME");
3504 lineSMborderVDCAL1->Draw(
"SAME");
3505 lineSMborderVDCAL2->Draw(
"SAME");
3506 for (
int jm=0;jm<(int)((kNbSMDCAL+1)/2);jm++) lineSMborderHDCAL[jm]->
Draw(
"SAME");
3507 hAllSpaceDCALDistance[1]->Write();
3509 hAllSpaceDCALDistance[2]->SetMinimum(-1.);
3510 hAllSpaceDCALDistance[2]->SetMaximum(4.);
3511 hAllSpaceDCALDistance[2]->Draw(
"COLZ");
3512 lineSMborderVDCALthird->Draw(
"SAME");
3513 lineSMborderVDCAL1->Draw(
"SAME");
3514 lineSMborderVDCAL2->Draw(
"SAME");
3515 for (
int jm=0;jm<(int)((kNbSMDCAL+1)/2);jm++) lineSMborderHDCAL[jm]->
Draw(
"SAME");
3516 hAllSpaceDCALDistance[2]->Write();
3523 TF1 *fGauss =
new TF1(
"fGauss",
"gaus(0)",0.,4.);
3524 TF1 *fGauss2 =
new TF1(
"fGauss2",
"gaus(0)",0.,4.);
3525 fGauss->SetParameter(0,100.);
3526 fGauss->SetParameter(1,0.);
3527 fGauss->SetParameter(2,1.);
3528 fGauss->SetLineWidth(1);
3529 fGauss->SetLineColor(kOrange-6);
3530 fGauss2->SetParameter(0,100.);
3531 fGauss2->FixParameter(1,0.);
3532 fGauss2->SetParameter(2,1.);
3533 fGauss2->SetLineWidth(1);
3534 fGauss2->SetLineColor(kTeal-7);
3535 hAllDistribDistance[0]->SetLineColor(kRed);
3536 hAllDistribDistance[1]->SetLineColor(kGreen+2);
3537 hAllDistribDistance[2]->SetLineColor(kBlue);
3538 hAllDistribDistance[1]->Fit(fGauss,
"BR");
3539 hAllDistribDistance[1]->Fit(fGauss2,
"BR");
3540 printf(
"\nDistrib tower normalized distances : mu = %5.3f, sig = %5.3f, khi2/ndf = %f\n",fGauss->GetParameter(1),fGauss->GetParameter(2),fGauss->GetChisquare()/(double)TMath::Max((
double)fGauss->GetNDF(),0.0000000001));
3541 printf(
" with 0 mean : mu = %5.3f, sig = %5.3f, khi2/ndf = %f\n\n",fGauss2->GetParameter(1),fGauss2->GetParameter(2),fGauss2->GetChisquare()/(double)TMath::Max((
double)fGauss2->GetNDF(),0.0000000001));
3542 hAllDistribDistance[2]->Draw();
3543 hAllDistribDistance[1]->Draw(
"SAME");
3544 fGauss->Draw(
"SAME");
3545 fGauss2->Draw(
"SAME");
3546 hAllDistribDistance[0]->Draw(
"SAME");
3547 hAllDistribDistance[0]->Write();
3548 hAllDistribDistance[1]->Write();
3549 hAllDistribDistance[2]->Write();
3551 hCorrelDvsSig->Draw(
"COLZ");
3552 hCorrelDvsSig->Write();
3554 hCorrelCmpD->Draw(
"COLZ");
3555 hCorrelCmpD->Write();
3558 hAllDistribDistance2[2*0+0]->Draw();
3559 hAllDistribDistance2[2*1+0]->SetLineColor(kGreen+2);
3560 hAllDistribDistance2[2*1+0]->Draw(
"SAME");
3561 lineMax->SetX1(100.*uncertKSpec*uncertSpec);
3562 lineMax->SetX2(100.*uncertKSpec*uncertSpec);
3564 lineMax->SetY2(hAllDistribDistance2[2*0+0]->GetMaximum());
3565 lineMax->Draw(
"SAME");
3566 hAllDistribDistance2[2*0+0]->Write();
3567 hAllDistribDistance2[2*1+0]->Write();
3571 TF1 *fExpectedUncertDistrib =
new TF1(
"fExpectedUncertDistrib",
"gaus",0.,hAllDistribDistance2[2*0+1]->GetXaxis()->GetXmax());
3572 fExpectedUncertDistrib->SetParameter(0,(2.*nbTowersConsideredTot*hAllDistribDistance2[2*0+1]->GetBinWidth(1))/(uncertSpec*TMath::Sqrt(2.*TMath::Pi())));
3573 fExpectedUncertDistrib->SetParameter(1,0.);
3574 fExpectedUncertDistrib->SetParameter(2,uncertSpec);
3575 hAllDistribDistance2[2*0+1]->Draw();
3576 hAllDistribDistance2[2*1+1]->SetLineColor(kGreen+2);
3577 hAllDistribDistance2[2*1+1]->Draw(
"SAME");
3578 fExpectedUncertDistrib->Draw(
"SAME");
3579 lineMax->SetX1(uncertDist*uncertSpec);
3580 lineMax->SetX2(uncertDist*uncertSpec);
3582 lineMax->SetY2(hAllDistribDistance2[2*0+1]->GetMaximum());
3583 lineMax->Draw(
"SAME");
3584 hAllDistribDistance2[2*0+1]->Write();
3585 hAllDistribDistance2[2*1+1]->Write();
3586 fExpectedUncertDistrib->Write();
3591 if (isFirstIteration == 0)
3596 hCtrlEvolMu->Draw();
3597 hCtrlEvolMu->Write();
3599 h2CtrlEvolMu1->Draw(
"COLZ");
3600 h2CtrlEvolMu1->Write();
3602 TLine *bissec =
new TLine(h2CtrlEvolMu2->GetYaxis()->GetXmin(),h2CtrlEvolMu2->GetYaxis()->GetXmin(),h2CtrlEvolMu2->GetYaxis()->GetXmax(),h2CtrlEvolMu2->GetYaxis()->GetXmax());
3603 TLine *bi2ssec =
new TLine(h2CtrlEvolMu2->GetYaxis()->GetXmin()/2.,h2CtrlEvolMu2->GetYaxis()->GetXmin(),h2CtrlEvolMu2->GetYaxis()->GetXmax()/2.,h2CtrlEvolMu2->GetYaxis()->GetXmax());
3604 TLine *axeX =
new TLine(h2CtrlEvolMu2->GetXaxis()->GetXmin(),0.,h2CtrlEvolMu2->GetXaxis()->GetXmax(),0.);
3605 TLine *axeY =
new TLine(0.,h2CtrlEvolMu2->GetYaxis()->GetXmin(),0.,h2CtrlEvolMu2->GetYaxis()->GetXmax());
3606 h2CtrlEvolMu2->Draw(
"COLZ");
3607 bissec->Draw(
"SAME");
3608 bi2ssec->Draw(
"SAME");
3611 h2CtrlEvolMu2->Write();
3613 hCtrlEvolCoeff->Draw();
3614 hCtrlEvolCoeff->Write();
3616 h2CtrlEvolCoeff1->Draw(
"COLZ");
3617 h2CtrlEvolCoeff1->Write();
3619 TLine *bissec2 =
new TLine(h2CtrlEvolCoeff2->GetYaxis()->GetXmin(),h2CtrlEvolCoeff2->GetYaxis()->GetXmin(),h2CtrlEvolCoeff2->GetYaxis()->GetXmax(),h2CtrlEvolCoeff2->GetYaxis()->GetXmax());
3620 TLine *bi2ssec2 =
new TLine(h2CtrlEvolCoeff2->GetYaxis()->GetXmin()/2.,h2CtrlEvolCoeff2->GetYaxis()->GetXmin(),h2CtrlEvolCoeff2->GetYaxis()->GetXmax()/2.,h2CtrlEvolCoeff2->GetYaxis()->GetXmax());
3621 TLine *axeX2 =
new TLine(h2CtrlEvolCoeff2->GetXaxis()->GetXmin(),0.,h2CtrlEvolCoeff2->GetXaxis()->GetXmax(),0.);
3622 TLine *axeY2 =
new TLine(0.,h2CtrlEvolCoeff2->GetYaxis()->GetXmin(),0.,h2CtrlEvolCoeff2->GetYaxis()->GetXmax());
3623 h2CtrlEvolCoeff2->Draw(
"COLZ");
3624 bissec2->Draw(
"SAME");
3625 bi2ssec2->Draw(
"SAME");
3626 axeX2->Draw(
"SAME");
3627 axeY2->Draw(
"SAME");
3628 h2CtrlEvolCoeff2->Write();
3636 c1->Divide(2,(
int)((kNbFitParams+1)/2));
3639 k=(j%2)*(
int)((j+5)/2)+(1-(j%2))*(int)(j/2);
3641 hAllDistrib[k]->SetLineColor(4);
3642 hAllOldDistrib[k]->SetLineColor(2);
3643 hAllDistrib[k]->Draw();
3644 hAllOldDistrib[k]->Draw(
"SAME");
3645 lineMin->SetX1(cutMin[k]);
3646 lineMin->SetX2(cutMin[k]);
3648 lineMin->SetY2(hAllDistrib[k]->GetMaximum());
3649 lineMax->SetX1(cutMax[k]);
3650 lineMax->SetX2(cutMax[k]);
3652 lineMax->SetY2(hAllDistrib[k]->GetMaximum());
3653 lineMin->Draw(
"SAME");
3654 lineMax->Draw(
"SAME");
3656 {linePDGMass->SetY2(1.5*hAllDistrib[k]->GetMaximum());
3657 linePDGMass->Draw(
"SAME");
3661 hAllDistrib[k]->Write();
3662 hAllOldDistrib[k]->Write();
3670 {hAllDistribIntg[j]->SetLineColor(4);
3671 hAllDistribIntg[j]->Write();
3672 if (j < kNbExtraParamsToBeRead)
3679 hAllDistribIntg[0]->Draw();
3681 lineMin->SetX1(cutMin[0+kNbFitParams]);
3682 lineMin->SetX2(cutMin[0+kNbFitParams]);
3684 lineMin->SetY2(hAllDistribIntg[0]->GetMaximum());
3685 lineMax->SetX1(cutMax[0+kNbFitParams]);
3686 lineMax->SetX2(cutMax[0+kNbFitParams]);
3688 lineMax->SetY2(hAllDistribIntg[0]->GetMaximum());
3689 lineMin->Draw(
"SAME");
3690 lineMax->Draw(
"SAME");
3695 hAllDistribNbEntries->SetLineColor(4);
3696 hAllDistribNbEntries->Draw();
3697 lineMin->SetX1(cutEntriesDiscard);
3698 lineMin->SetX2(cutEntriesDiscard);
3700 lineMin->SetY2(hAllDistribNbEntries->GetMaximum());
3701 lineMin->Draw(
"SAME");
3702 hAllDistribNbEntries->Write();
3703 hAllDistribNbEntriesCorrel->Write();
3708 hAllDistribIntg[2]->Draw();
3710 lineMin->SetX1(cutMin[2+kNbFitParams]);
3711 lineMin->SetX2(cutMin[2+kNbFitParams]);
3713 lineMin->SetY2(hAllDistribIntg[2]->GetMaximum());
3714 lineMax->SetX1(cutMax[2+kNbFitParams]);
3715 lineMax->SetX2(cutMax[2+kNbFitParams]);
3717 lineMax->SetY2(hAllDistribIntg[2]->GetMaximum());
3718 lineMin->Draw(
"SAME");
3719 lineMax->Draw(
"SAME");
3724 hAllDistribIntg[3]->Draw();
3726 lineMin->SetX1(cutMin[3+kNbFitParams]);
3727 lineMin->SetX2(cutMin[3+kNbFitParams]);
3729 lineMin->SetY2(hAllDistribIntg[3]->GetMaximum());
3730 lineMax->SetX1(cutMax[3+kNbFitParams]);
3731 lineMax->SetX2(cutMax[3+kNbFitParams]);
3733 lineMax->SetY2(hAllDistribIntg[3]->GetMaximum());
3734 lineMin->Draw(
"SAME");
3735 lineMax->Draw(
"SAME");
3744 hAllDistribIntg[1]->Draw();
3746 lineMin->SetX1(cutMin[1+kNbFitParams]);
3747 lineMin->SetX2(cutMin[1+kNbFitParams]);
3749 lineMin->SetY2(hAllDistribIntg[1]->GetMaximum());
3750 lineMax->SetX1(cutMax[1+kNbFitParams]);
3751 lineMax->SetX2(cutMax[1+kNbFitParams]);
3753 lineMax->SetY2(hAllDistribIntg[1]->GetMaximum());
3754 lineMin->Draw(
"SAME");
3755 lineMax->Draw(
"SAME");
3760 hAllDistribIntg[4]->Draw();
3762 lineMin->SetX1(cutMin[4+kNbFitParams]);
3763 lineMin->SetX2(cutMin[4+kNbFitParams]);
3765 lineMin->SetY2(hAllDistribIntg[4]->GetMaximum());
3766 lineMax->SetX1(cutMax[4+kNbFitParams]);
3767 lineMax->SetX2(cutMax[4+kNbFitParams]);
3769 lineMax->SetY2(hAllDistribIntg[4]->GetMaximum());
3770 lineMin->Draw(
"SAME");
3771 lineMax->Draw(
"SAME");
3776 hAllDistribIntg[5]->Draw();
3778 lineMin->SetX1(cutMin[5+kNbFitParams]);
3779 lineMin->SetX2(cutMin[5+kNbFitParams]);
3781 lineMin->SetY2(hAllDistribIntg[5]->GetMaximum());
3782 lineMax->SetX1(cutMax[5+kNbFitParams]);
3783 lineMax->SetX2(cutMax[5+kNbFitParams]);
3785 lineMax->SetY2(hAllDistribIntg[5]->GetMaximum());
3786 lineMin->Draw(
"SAME");
3787 lineMax->Draw(
"SAME");
3792 hAllDistribIntg[6]->Draw();
3794 lineMin->SetX1(cutMin[6+kNbFitParams]);
3795 lineMin->SetX2(cutMin[6+kNbFitParams]);
3797 lineMin->SetY2(hAllDistribIntg[6]->GetMaximum());
3798 lineMax->SetX1(cutMax[6+kNbFitParams]);
3799 lineMax->SetX2(cutMax[6+kNbFitParams]);
3801 lineMax->SetY2(hAllDistribIntg[6]->GetMaximum());
3802 lineMin->Draw(
"SAME");
3803 lineMax->Draw(
"SAME");
3808 hAllDistribIntg[5]->SetLineColor(kViolet-5);
3809 hAllDistribIntg[6]->SetLineColor(kAzure+9);
3810 hAllDistribIntg[5]->Rebin(2);
3811 hAllDistribIntg[6]->Rebin(2);
3812 hAllDistribIntg[4]->Scale(0.5);
3813 hAllDistribIntg[6]->Draw();
3814 hAllDistribIntg[5]->Draw(
"SAME");
3815 hAllDistribIntg[4]->Draw(
"SAME");
3816 lineMin->SetX1(1.0);
3817 lineMin->SetX2(1.0);
3819 lineMin->SetY2(hAllDistribIntg[6]->GetMaximum());
3820 lineMin->Draw(
"SAME");
3825 if (choiceNoEMCAL != 0)
3832 hSpaceEntriesDiscard[1*i+0]->SetMinimum(0.);
3833 hSpaceEntriesDiscard[1*i+0]->SetMaximum(5.05);
3834 hSpaceEntriesDiscard[1*i+0]->Draw(
"COLZ");
3835 hSpaceEntriesDiscard[1*i+0]->Write();
3841 if (choiceNoDCAL != 0)
3848 hSpaceEntriesDiscard[1*i+0]->SetMinimum(0.);
3849 hSpaceEntriesDiscard[1*i+0]->SetMaximum(5.05);
3850 hSpaceEntriesDiscard[1*i+0]->Draw(
"COLZ");
3851 hSpaceEntriesDiscard[1*i+0]->Write();
3863 hCorrelMuVsA->Draw(
"COLZ");
3865 hCorrelSigVsA->Draw(
"COLZ");
3867 hCorrelSigVsMu->Draw(
"COLZ");
3869 hCorrelBVsA->Draw(
"COLZ");
3871 hCorrelCVsA->Draw(
"COLZ");
3873 hCorrelCVsB->Draw(
"COLZ");
3874 hCorrelMuVsA->Write();
3875 hCorrelSigVsA->Write();
3876 hCorrelSigVsMu->Write();
3877 hCorrelBVsA->Write();
3878 hCorrelCVsA->Write();
3879 hCorrelCVsB->Write();
3886 hCorrelISVsI->Draw(
"COLZ");
3888 hCorrelSVsI->Draw(
"COLZ");
3890 hCorrelSVsIS->Draw(
"COLZ");
3892 hCorrelSbincountingVsS->Draw(
"COLZ");
3893 TLine *bissecCorrel =
new TLine(hCorrelSbincountingVsS->GetYaxis()->GetXmin(),hCorrelSbincountingVsS->GetYaxis()->GetXmin(),hCorrelSbincountingVsS->GetYaxis()->GetXmax(),hCorrelSbincountingVsS->GetYaxis()->GetXmax());
3894 bissecCorrel->Draw(
"SAME");
3896 hCorrelMuVsI->Draw(
"COLZ");
3898 hCorrelMuVsS->Draw(
"COLZ");
3900 hCorrelSigVsI->Draw(
"COLZ");
3902 hCorrelSigVsS->Draw(
"COLZ");
3903 hCorrelISVsI->Write();
3904 hCorrelSVsI->Write();
3905 hCorrelSVsIS->Write();
3906 hCorrelSbincountingVsS->Write();
3907 hCorrelMuVsI->Write();
3908 hCorrelMuVsS->Write();
3909 hCorrelSigVsI->Write();
3910 hCorrelSigVsS->Write();
3915 if (isFirstIteration == 0)
3916 {
if (choiceNoEMCAL != 0)
3922 k=(j%2)*(
int)((j+5)/2)+(1-(j%2))*(int)(j/2);
3923 nbTot=hAllSpaceEMCALDiff[k]->GetMaximum();
3924 for (i=0;i<hAllSpaceEMCALDiff[k]->GetNbinsX();i++)
3925 {
for (
int jm=0;jm<hAllSpaceEMCALDiff[k]->GetNbinsY();jm++)
3926 {
if ((hAllSpaceEMCALDiff[k]->GetBinContent(i+1,jm+1) < nbTot) && (hAllSpaceEMCALDiff[k]->GetBinContent(i+1,jm+1) != 0)) nbTot=hAllSpaceEMCALDiff[k]->GetBinContent(i+1,jm+1);
3929 if ((j%2) == 0) hAllSpaceEMCALDiff[k]->SetMinimum(0.98*nbTot);
3930 hAllSpaceEMCALDiff[k]->Draw(
"COLZ");
3931 lineSMborderVEMCAL->Draw(
"SAME");
3932 for (
int jm=0;jm<(int)((
kNbSMEMCAL+1)/2);jm++) lineSMborderHEMCAL[jm]->
Draw(
"SAME");
3933 hAllSpaceEMCALDiff[k]->Write();
3942 if (j == 3) c1->cd(j+2);
3943 nbTot=hAllSpaceEMCALDiff[j+6]->GetMaximum();
3944 for (i=0;i<hAllSpaceEMCALDiff[j+6]->GetNbinsX();i++)
3945 {
for (
int jm=0;jm<hAllSpaceEMCALDiff[j+6]->GetNbinsY();jm++)
3946 {
if ((hAllSpaceEMCALDiff[j+6]->GetBinContent(i+1,jm+1) < nbTot) && (hAllSpaceEMCALDiff[j+6]->GetBinContent(i+1,jm+1) != 0)) nbTot=hAllSpaceEMCALDiff[j+6]->GetBinContent(i+1,jm+1);
3949 hAllSpaceEMCALDiff[j+6]->SetMinimum(0.98*nbTot);
3950 hAllSpaceEMCALDiff[j+6]->Draw(
"COLZ");
3951 lineSMborderVEMCAL->Draw(
"SAME");
3952 for (
int jm=0;jm<(int)((
kNbSMEMCAL+1)/2);jm++) lineSMborderHEMCAL[jm]->
Draw(
"SAME");
3953 hAllSpaceEMCALDiff[j+6]->Write();
3958 if (choiceNoDCAL != 0)
3964 k=(j%2)*(
int)((j+5)/2)+(1-(j%2))*(int)(j/2);
3965 nbTot=hAllSpaceDCALDiff[k]->GetMaximum();
3966 for (i=0;i<hAllSpaceDCALDiff[k]->GetNbinsX();i++)
3967 {
for (
int jm=0;jm<hAllSpaceDCALDiff[k]->GetNbinsY();jm++)
3968 {
if ((hAllSpaceDCALDiff[k]->GetBinContent(i+1,jm+1) < nbTot) && (hAllSpaceDCALDiff[k]->GetBinContent(i+1,jm+1) != 0)) nbTot=hAllSpaceDCALDiff[k]->GetBinContent(i+1,jm+1);
3971 if ((j%2) == 0) hAllSpaceDCALDiff[k]->SetMinimum(0.98*nbTot);
3972 hAllSpaceDCALDiff[k]->Draw(
"COLZ");
3973 lineSMborderVDCALthird->Draw(
"SAME");
3974 lineSMborderVDCAL1->Draw(
"SAME");
3975 lineSMborderVDCAL2->Draw(
"SAME");
3976 for (
int jm=0;jm<(int)((kNbSMDCAL+1)/2);jm++) lineSMborderHDCAL[jm]->
Draw(
"SAME");
3977 hAllSpaceDCALDiff[k]->Write();
3986 if (j == 3) c1->cd(j+2);
3987 nbTot=hAllSpaceDCALDiff[j+6]->GetMaximum();
3988 for (i=0;i<hAllSpaceDCALDiff[j+6]->GetNbinsX();i++)
3989 {
for (
int jm=0;jm<hAllSpaceDCALDiff[j+6]->GetNbinsY();jm++)
3990 {
if ((hAllSpaceDCALDiff[j+6]->GetBinContent(i+1,jm+1) < nbTot) && (hAllSpaceDCALDiff[j+6]->GetBinContent(i+1,jm+1) != 0)) nbTot=hAllSpaceDCALDiff[j+6]->GetBinContent(i+1,jm+1);
3993 hAllSpaceDCALDiff[j+6]->SetMinimum(0.98*nbTot);
3994 hAllSpaceDCALDiff[j+6]->Draw(
"COLZ");
3995 lineSMborderVDCALthird->Draw(
"SAME");
3996 lineSMborderVDCAL1->Draw(
"SAME");
3997 lineSMborderVDCAL2->Draw(
"SAME");
3998 for (
int jm=0;jm<(int)((kNbSMDCAL+1)/2);jm++) lineSMborderHDCAL[jm]->
Draw(
"SAME");
3999 hAllSpaceDCALDiff[j+6]->Write();
4010 k=(j%2)*(
int)((j+5)/2)+(1-(j%2))*(int)(j/2);
4012 hAllDiff[k]->SetLineColor(kAzure-8);
4013 hAllDiff[k]->SetFillColor(kAzure-9);
4014 hAllDiffAllTw[k]->SetLineColor(kBlue+1);
4015 hAllDiffAllTw[k]->Draw();
4016 hAllDiff[k]->Draw(
"SAME");
4017 hAllDiffAllTw[k]->Draw(
"SAME");
4018 hAllDiff[k]->Write();
4019 hAllDiffAllTw[k]->Write();
4029 if (j == 3) c1->cd(j+2);
4031 hAllDiff[j+6]->SetLineColor(kAzure-8);
4032 hAllDiff[j+6]->SetFillColor(kAzure-9);
4033 hAllDiffAllTw[j+6]->SetLineColor(kBlue+1);
4034 hAllDiffAllTw[j+6]->Draw();
4035 hAllDiff[j+6]->Draw(
"SAME");
4036 hAllDiffAllTw[j+6]->Draw(
"SAME");
4037 hAllDiff[j+6]->Write();
4038 hAllDiffAllTw[j+6]->Write();
4047 txtFileCalibOut.close();
4048 fclose(txtFileParamsOut);
4049 fclose(txtFileParamsIn);
4050 fclose(txtFileCalibIn);
4051 rootFileOut->Close();
4053 printf(
"Fini...\n");
4069 if (par[2] == 0.) printf(
"Unvalid (=zero) gaussian width.\n");
4071 if (par[2] != 0.) gaus = par[0] * TMath::Exp( -(x[0]-par[1])*(x[0]-par[1]) /
4072 (2*par[2]*par[2]) );
4073 else gaus = 99999999.;
4074 Double_t back = par[3] + par[4]*x[0] + par[5]*x[0]*x[0] + par[6]*x[0]*x[0]*x[0];
4090 if (par[2] == 0.) printf(
"Unvalid (=zero) gaussian width.\n");
4092 if (par[2] != 0.) gaus = par[0] * TMath::Exp( -(x[0]-par[1])*(x[0]-par[1]) /
4093 (2*par[2]*par[2]) );
4094 else gaus = 99999999.;
4095 Double_t back = par[3] + par[4]*x[0] + par[5]*x[0]*x[0];
4111 Double_t gaus = par[0] * TMath::Exp( -(x[0]-par[1])*(x[0]-par[1]) /
4112 (2*par[2]*par[2]) );
4113 Double_t back = par[3] + par[4]*x[0];
const int kNbColOffsetDCAL
void Draw(const char *filename, const char *title="", const char *others="ALL", const char *options="DEFAULT", const char *outFlg="ALL", UShort_t rebin=5, Float_t eff=0, const char *base="")
Double_t pi0massP3(Double_t *x, Double_t *par)
const int kNbSMEMCALthird
Double_t pi0massP1(Double_t *x, Double_t *par)
const int kNbColEMCALthird
const int kNbRowEMCALthird
Double_t pi0massP2(Double_t *x, Double_t *par)
const int kNbExtraParamsToBeRead
const int kNbColDCALthird
void Pi0CalibInvMassAnalysis3(int choice=0b0110)
const int kNbRowDCALthird
char detTypeString[][100]