00001 #include "TFiberHodEvent.h"
00002 #include "TBeamMonitorEvent.h"
00003 #include "TCernOct12DetectorEvent.h"
00004 #include "spadic_noise_Analysis.cxx"
00005
00006 const Int_t speed_up = 1;
00007
00008 Double_t CalcPull(Double_t xTrack, Double_t xHit, Double_t sigmaTrack, Double_t sigmaHit){
00009 Double_t pull = -4.9;
00010 if ((sigmaHit * sigmaHit) + (sigmaTrack * sigmaTrack) > 0.0)
00011 pull = (xHit - xTrack) / TMath::Sqrt((sigmaHit * sigmaHit) + (sigmaTrack * sigmaTrack));
00012
00013 return pull;
00014 }
00015
00016
00017 void FillProfile(TH2* h, TProfile* p){
00018 Double_t maxContent = (Double_t)h->GetBinContent(h->GetMaximumBin());
00019 Int_t nx(h->GetNbinsX()), ny(h->GetNbinsY());
00020 Double_t content(0), xPos(0), yPos(0);
00021 for (Int_t x = 1; x <= nx; x++) {
00022 xPos = h->GetBinCenter(x);
00023 for (Int_t y = 1; y <= ny; y++) {
00024 yPos = h->GetYaxis()->GetBinCenter(y);
00025 content = (Double_t)h->GetBinContent(x, y);
00026 if (content > 0.10 * maxContent)
00027 for (Int_t i = 0; i < content; i++)
00028 p->Fill(xPos, yPos);
00029 }
00030 }
00031 }
00032
00033 void GetHodoAlignment(TString filename, TProfile *AlignmentHodoX_1D, TH2I* AlignmentHodoX){
00034 cout << endl << " -=[GetHodoAlignment]=- " << endl;
00035 filename.ReplaceAll(".root","_step1.root");
00036 TFile inputFile_step1(filename,"READ");
00037 if (!inputFile_step1.IsOpen())
00038 cout << "file not found: " << filename << endl;
00039 else {
00040
00041
00042 TTree* theTree_step1 = NULL;
00043 TKey* kee_step1 = NULL;
00044 TIter iter_step1(inputFile_step1.GetListOfKeys());
00045 while ( ( kee_step1 = dynamic_cast<TKey*>(iter_step1()) ) !=0 ) {
00046 theTree_step1 = dynamic_cast<TTree*>(kee_step1->ReadObj());
00047 if (theTree_step1)
00048 break;
00049 }
00050 if(theTree_step1 == NULL) {
00051 cout <<"Error: no Tree in file "<< filename.Data() << endl;
00052 return;
00053 }
00054 TCernOct12DetectorEvent* evnt_step1 = new TCernOct12DetectorEvent;
00055 TGo4EventElement* theBase_step1=evnt_step1;
00056 evnt_step1->synchronizeWithTree(theTree_step1, &theBase_step1);
00057 Int_t entries = (Int_t)theTree_step1->GetEntries() / speed_up;
00058
00059 TFiberHodEvent* theHodo1 = NULL;
00060 TFiberHodEvent* theHodo2 = NULL;
00061 Double_t xHod1(0.0), xHod2(0.0);
00062 for(Int_t i = 0; i < entries; ++i) {
00063 Statusbar(i,entries);
00064 theTree_step1->GetEntry(i);
00065 theHodo1 = dynamic_cast<TFiberHodEvent*>(evnt_step1->GetSubEvent("Hodo1"));
00066 theHodo2 = dynamic_cast<TFiberHodEvent*>(evnt_step1->GetSubEvent("Hodo2"));
00067 Int_t nhits1 = (Int_t)theHodo1->NumHits();
00068 Int_t nhits2 = (Int_t)theHodo2->NumHits();
00069 if (nhits1 < 1 || nhits2 < 1) continue;
00070 for (Int_t ihit = 0; ihit < nhits1; ihit++) {
00071 xHod1 = theHodo1->fHits[ihit].X + 32.;
00072 if (ihit > 0)
00073 printf("%i %i Hodo1(%.2f)\n\n",i,ihit,xHod1);
00074 }
00075 for (Int_t ihit = 0; ihit < nhits2; ihit++) {
00076 xHod2 = theHodo2->fHits[ihit].X + 32.;
00077 if (ihit > 0)
00078 printf("%i %i Hodo2(%.2f)\n\n",i,ihit,xHod2);
00079 }
00080 AlignmentHodoX->Fill(xHod1, xHod1-xHod2);
00081 }
00082 FillProfile(AlignmentHodoX, AlignmentHodoX_1D);
00083 inputFile_step1.Close();
00084 }
00085 }
00086
00087 Double_t CalcAngleHodo(Double_t x1, Double_t x2){
00088 Double_t HodoDistanceZ = 7505.0;
00089 return TMath::ATan((x1 - x2) / HodoDistanceZ) / TMath::Pi() * 180.;
00090 }
00091 Double_t CalcAngleMsTrd(Double_t x1, Double_t x2){
00092 Double_t TrdDistanceZ = 570.0;
00093 return TMath::ATan((x1 - x2) / TrdDistanceZ) / TMath::Pi() * 180.;
00094 }
00095 Double_t CalcTrackingCompensation(Double_t x1, Double_t x2, const TF1 *track, const Double_t zTRD1, const Double_t zTRD2){
00096
00097
00098 return x2 - (track->GetParameter(0) * (zTRD2 - zTRD1));
00099
00100 }
00101
00102 TGraphErrors *fTracking = new TGraphErrors();
00103
00104 void spadic_pr_Analysis(TString filename="data2012/TTrees/Be_run2310004.root", Bool_t debug=false, Bool_t plotFromFile = true){
00105
00106 Bool_t fast = false;
00107 Bool_t useOverFlows(true), useUnderFlows(true), usePID(false), useFitAlignment(true), useSinFit(false), useCombinedFit(true), useHod2(true);
00108 Bool_t first(false), second(false), third(false), fourth(false), fifth(false), sixth(false);
00109 Bool_t SpadicOverFlow[2] = {false};
00110 Bool_t SpadicUnderFlow[2] = {false};
00111 printf("\n fast: %i\n useOverFlows: %i\n useUnderFlows: %i\n usePID: %i\n useFitAlignment: %i\n useSinFit: %i\n useCombinedFit: %i\n useHod2: %i\n\n",
00112 (Int_t)fast,(Int_t)useOverFlows,(Int_t)useUnderFlows,(Int_t)usePID,(Int_t)useFitAlignment,(Int_t)useSinFit,(Int_t)useCombinedFit,(Int_t)useHod2);
00113 TString name, title;
00114 gROOT->Reset();
00115 gROOT->SetStyle("Plain");
00116 gStyle->SetPalette(1,0);
00117 gStyle->SetOptTitle(kFALSE);
00118 gStyle->SetPadTickX(1);
00119 gStyle->SetPadTickY(1);
00120 gStyle->SetFillStyle(4000);
00121 gStyle->SetFrameFillStyle(0);
00122 if (!fast){
00123 gStyle->SetOptStat(kFALSE);
00124 gStyle->SetStatStyle(0);
00125 }
00126 gStyle->SetTitleStyle(0);
00127 gStyle->SetCanvasBorderSize(0);
00128 gStyle->SetFrameBorderSize(0);
00129 gStyle->SetLegendBorderSize(0);
00130 gStyle->SetStatBorderSize(0);
00131 gStyle->SetTitleBorderSize(0);
00132 const TString methode[4] = {"weighted","gaussian","PRF","SECHS"};
00133
00134 const Double_t bins_mm = 5.;
00135 const Int_t usedSusibos = 5;
00136
00137
00138 const Double_t zHod1 = 0.1;
00139 const Double_t zHod2 = 7505.0;
00140 const Double_t zTRD1 = 3385.0;
00141 Double_t zTRD2 = 3955.0;
00142 Double_t eTRD = 7.125/sqrt(12);
00143 Double_t eHod1 = 1./sqrt(12);
00144 Double_t eHod2 = 1./sqrt(12);
00145
00146 const Int_t nit = 6;
00147 Int_t maxIt = 0;
00148 const TString itname[nit] = {"_first","_second","_third","_fourth","_fifth","_sixth"};
00149
00150
00151 Int_t usedSuId[usedSusibos] = { 11, 10, 18, 5, 19};
00152
00153 Double_t padWidth[usedSusibos] = { 7.125, 7.125, 7.125, 7.125, 7.125};
00154 Double_t h[usedSusibos] = { 3.5, 3.5, 3.5, 5, 4};
00155 const Double_t r_a = 0.002;
00156 const Double_t s = 2.5;
00157 Int_t color[NUM_SPADIC_CHA] = {1,2,3,4,800,6,7,8};
00158 Double_t K3 = calcK3(h[0]);
00159 Double_t par = 1.0;
00160 TString formula(""), K3formula("-0.245*([0]/[2])+(-20.19*([1]/[2])+0.85)");
00161 formula.Form(" -1. / (2. * atan(sqrt(%s))) * (atan(sqrt(%s) *tanh(3.14159265 * (-2. + sqrt(%s) ) * (%f + 2.* x * %f) / (8.* [0]) )) + atan(sqrt(%s) * tanh(3.14159265 * (-2. + sqrt(%s) ) * (%f - 2.* x * %f) / (8.* [0]) )) )", K3formula.Data(),K3formula.Data(),K3formula.Data(),padWidth[0],par,K3formula.Data(),K3formula.Data(),padWidth[0],par);
00162
00163
00164 TF1 *mathiesonFit = new TF1("mathiesonFit", formula, -1.5 * padWidth[0], 1.5 * padWidth[0]);
00165 mathiesonFit->SetLineColor(1);
00166 mathiesonFit->SetLineStyle(2);
00167 mathiesonFit->SetLineWidth(1);
00168
00169
00170
00171
00172
00173
00174 mathiesonFit->SetParName(0,"h");
00175 mathiesonFit->SetParameter(0,h[0]);
00176 mathiesonFit->SetParLimits(0,1.25,4.0);
00177 mathiesonFit->SetParName(1,"r_a");
00178 mathiesonFit->SetParameter(1,r_a);
00179 mathiesonFit->SetParLimits(1,0.0018,0.0022);
00180 mathiesonFit->SetParName(2,"s");
00181 mathiesonFit->SetParameter(2,s);
00182 mathiesonFit->SetParLimits(2,2.4,2.6);
00183
00184 formula.Form(" -1. / (2. * atan(sqrt(%f))) * (atan(sqrt(%f) *tanh(3.14159265 * (-2. + sqrt(%f) ) * (%f + 2.* x * %f) / (8.* %f) )) + atan(sqrt(%f) * tanh(3.14159265 * (-2. + sqrt(%f) ) * (%f - 2.* x * %f) / (8.* %f) )) )",K3,K3,K3,padWidth[0],par,h[0],K3,K3,padWidth[0],par,h[0]);
00185 TF1 *mathieson = new TF1("mathieson", formula, -1.5 * padWidth[0], 1.5 * padWidth[0]);
00186 formula.Form(" -1. / (2. * atan(sqrt([0]))) * (atan(sqrt([0]) *tanh(3.14159265 * (-2. + sqrt([0]) ) * (%f + 2.* x * %f) / (8.* %f) )) + atan(sqrt([0]) * tanh(3.14159265 * (-2. + sqrt([0]) ) * (%f - 2.* x * %f) / (8.* %f) )) )",padWidth[0],par,h[0],padWidth[0],par,h[0]);
00187 mathieson->SetLineColor(1);
00188 mathieson->SetLineStyle(1);
00189 mathieson->SetLineWidth(1);
00190
00191 const Double_t maxD = 6.5;
00192 TString outpic;
00193 TString outfilename;
00194 TLine* l0 = new TLine(padWidth[0]*0.5,-maxD,padWidth[0]*0.5,maxD);
00195 TLine* l1 = new TLine(padWidth[0]*1.5,-maxD,padWidth[0]*1.5,maxD);
00196 TLine* l2 = new TLine(padWidth[0]*2.5,-maxD,padWidth[0]*2.5,maxD);
00197 TLine* l3 = new TLine(padWidth[0]*3.5,-maxD,padWidth[0]*3.5,maxD);
00198 TLine* l4 = new TLine(padWidth[0]*4.5,-maxD,padWidth[0]*4.5,maxD);
00199 TLine* l5 = new TLine(padWidth[0]*5.5,-maxD,padWidth[0]*5.5,maxD);
00200 TLine* l6 = new TLine(padWidth[0]*6.5,-maxD,padWidth[0]*6.5,maxD);
00201
00202 outpic = filename;
00203 outpic.ReplaceAll("data2012/TTrees/merged/","");
00204 outpic.ReplaceAll(".root","");
00205 outfilename.Form("data2012/root/PR/Spectra_%s.root",outpic.Data());
00206 outpic = outfilename;
00207 outpic.ReplaceAll("root/","pics/");
00208 outpic.ReplaceAll(".root","");
00209
00210
00211 TH1D *rawPulse[2][NUM_SPADIC_CHA] = {{NULL}};
00212 TH1D *baselinePulse[2][NUM_SPADIC_CHA] = {{NULL}};
00213 TH1D *baselineNoisePulse[2][NUM_SPADIC_CHA] = {{NULL}};
00214 TH2D* prf[2] = {NULL};
00215 TH2I *PadMax = NULL;
00216 TProfile* prfProfile[2] = {NULL};
00217
00218 TH1I *OptDeltaZ_Trd = NULL;
00219 TH1I *OptDeltaZ_Hod = NULL;
00220
00221 TH2I *AlignmentHodo1Trd[2] = {NULL};
00222 TH2I *AlignmentHodo2Trd[2] = {NULL};
00223 TProfile *AlignmentHodo1Trd_1D[2] = {NULL};
00224 TProfile *AlignmentHodo2Trd_1D[2] = {NULL};
00225
00226 TH2I *CorrelationHodo1Trd[2] = {NULL};
00227 TH2I *CorrelationHodo2Trd[2] = {NULL};
00228
00229 TH2I *Alignment_2D[2] = {NULL};
00230 TProfile *Alignment[2] = {NULL};
00231 TH1D *Residuals[2] = {NULL};
00232 TH2I *AlignmentSimple_2D[2] = {NULL};
00233 TProfile *AlignmentSimple[2] = {NULL};
00234 TH1D *ResidualsSimple[2] = {NULL};
00235 TH1D *ResidualsTracking[2] = {NULL};
00236 TH1D *ResidualsTrackingH[2] = {NULL};
00237 TH1D *ResidualsEl[4] = {NULL};
00238 TH1D *ResidualsPi[4] = {NULL};
00239 TH1D *ResidualsMy[4] = {NULL};
00240
00241 TH2I *Displacement_2D[2] = {NULL};
00242 TH1I *Displacement_1D[2] = {NULL};
00243 TH1I *DisplacementSimple_1D[2] = {NULL};
00244 TH1I *DisplacementPRF_1D[2] = {NULL};
00245 TH1I *DisplacementHSS_1D[2] = {NULL};
00246 TProfile *Displacement[2] = {NULL};
00247 TH2I *DisplacementSimple_2D[2] = {NULL};
00248 TProfile *DisplacementSimple[2] = {NULL};
00249 TH2I *Displacement_Charge[2] = {NULL};
00250 TH2I *DisplacementSimple_Charge[2] = {NULL};
00251
00252 TProfile *AlignmentComp[2] = {NULL};
00253 TProfile *sAlignmentComp[2] = {NULL};
00254
00255 TH1I *clusterSize[2] = {NULL};
00256 TH1I *maxAmplitudeValue[2] = {NULL};
00257 TH2I *maxAmplitudeHitTime[2] = {NULL};
00258 TH1I *covaMatixValue[2] = {NULL};
00259 TH2I *covaMatixValueClusterSize[2] = {NULL};
00260 TH2I *covaMatixValueMaxAmplitude[2] = {NULL};
00261 TH2I *covaMatixValueHitTime[2] = {NULL};
00262 TH1I *signalChDistance[2] = {NULL};
00263 TH2I *averageSignal_2D[2] = {NULL};
00264 TH2I *averageNoise_2D[2] = {NULL};
00265 TH1I *noiseDistribution[2] = {NULL};
00266 TH2I *baselineDistribution[2] = {NULL};
00267 TH2I *correlation_2D[2][2] = {{NULL}};
00268 TH2I *clusterSizeRatio[2] = {NULL};
00269
00270
00271 TH2I* Ch1_Pb_El = NULL;
00272 TH2I* Ch1_Pb_Pi = NULL;
00273 TH2I* Ch1_Pb_My = NULL;
00274 TH2I* allCh1_Pb = NULL;
00275 TH2I* noCh1_Pb = NULL;
00276 TH2I* Ch2_Pb_El = NULL;
00277 TH2I* Ch2_Pb_Pi = NULL;
00278 TH2I* Ch2_Pb_My = NULL;
00279 TH2I* allCh2_Pb = NULL;
00280 TH2I* noCh2_Pb = NULL;
00281 TH2I* Ch1_Ch2_El = NULL;
00282 TH2I* Ch1_Ch2_Pi = NULL;
00283 TH2I* Ch1_Ch2_My = NULL;
00284 TH2I* allCh1_Ch2 = NULL;
00285 TH2I* noCh1_Ch2 = NULL;
00286
00287 Double_t sigma[2] = {0.0};
00288 Double_t h0 (0.0), h1(0.0);
00289 Double_t m[2] = {0.0};
00290 Double_t b[2] = {0.0};
00291 Double_t ms[2] = {0.0};
00292 Double_t bs[2] = {0.0};
00293 Double_t ad[2] = {0.0};
00294 Double_t fd[2] = {0.0};
00295 Double_t pd[2] = {0.0};
00296 Double_t ads[2] = {0.0};
00297 Double_t fds[2] = {0.0};
00298 Double_t pds[2] = {0.0};
00299 Double_t f0[2] = {0.0};
00300 Double_t f1[2] = {0.0};
00301 Double_t f2[2] = {0.0};
00302 Double_t f3[2] = {0.0};
00303 Double_t f4[2] = {0.0};
00304 Double_t fchiSqrNDF[2] = {0.0};
00305 Double_t s0[2] = {0.0};
00306 Double_t s1[2] = {0.0};
00307 Double_t s2[2] = {0.0};
00308 Double_t s3[2] = {0.0};
00309 Double_t s4[2] = {0.0};
00310 Double_t schiSqrNDF[2] = {0.0};
00311 Double_t t0[2][nit] = {{0.0}};
00312 Double_t t1[2][nit] = {{0.0}};
00313 Double_t t2[2][nit] = {{0.0}};
00314 Double_t t3[2][nit] = {{0.0}};
00315 Double_t t4[2][nit] = {{0.0}};
00316 Double_t th0[2][nit] = {{0.0}};
00317 Double_t th1[2][nit] = {{0.0}};
00318 Double_t chiSqrNDF[2][nit] = {{0.0}};
00319 Double_t pr[2][nit] = {{0.0}};
00320 Double_t prH[2][nit] = {{0.0}};
00321
00322 TLegend *leg = new TLegend(0.55,0.85-0.04*2,0.75,0.85);
00323
00324 leg->SetLineColor(0);
00325 leg->SetLineStyle(0);
00326 leg->SetLineWidth(0);
00327 leg->SetFillColor(0);
00328 leg->SetFillStyle(0);
00329 leg->SetTextSize(0.03);
00330
00331 TF1 *sinfit = new TF1("sinfit","[0]*sin([1]*x+[2])",-0.5*padWidth[0],0.5*padWidth[0]);
00332
00333 sinfit->SetParameter(0,4.55142e-01);
00334 sinfit->SetParameter(1,9.69770e-01);
00335 sinfit->SetParameter(2,3.50118e-01);
00336 sinfit->SetLineWidth(1.0);
00337 sinfit->SetLineColor(2);
00338
00339 TF1 *sinfit2 = new TF1("sinfit2","[0]*sin([1]*x+[2])+([3]*x+[4])",1.5*padWidth[0],NUM_SPADIC_CHA*padWidth[0]-2.5*padWidth[0]);
00340 sinfit2->SetParameter(0,0.09);
00341 sinfit2->SetParLimits(0,0,1);
00342 sinfit2->SetParameter(1,0.877);
00343 sinfit2->SetParLimits(1,0.5,1);
00344 sinfit2->SetParameter(2,5.26);
00345 sinfit2->SetParLimits(2,4.,10.);
00346 sinfit2->SetParameter(3,-0.021);
00347
00348 sinfit2->SetParameter(4,0.311);
00349
00350 sinfit2->SetLineWidth(1.0);
00351 sinfit2->SetLineColor(2);
00352
00353 TF1 *gPRFfit = new TF1("gausPRF","gaus",-1.5*padWidth[0],1.5*padWidth[0]);
00354 gPRFfit->SetLineColor(2);
00355 TF1 *gfit = new TF1("gauss","gaus",-0.25*padWidth[0],0.25*padWidth[0]);
00356 gfit->SetLineColor(2);
00357
00358 TF1 *linfit = new TF1("linfit","[0]*x+[1]",1.5*padWidth[0],NUM_SPADIC_CHA*padWidth[0]-2.5*padWidth[0]);
00359 linfit->SetLineColor(2);
00360 linfit->SetLineWidth(1.0);
00361 TF1 *linfitD = new TF1("linfitD","[0]*x+[1]",-0.5*padWidth[0],0.5*padWidth[0]);
00362 linfitD->SetLineColor(2);
00363 linfitD->SetLineWidth(1.0);
00364 TF1 *linfitH = new TF1("linfitH","[0]*x+[1]",20,40);
00365 TF1 *trackfit = new TF1("trackfit","[0]*x+[1]",-100,7600);
00366
00367
00368
00369
00370
00371
00372
00373 TProfile* temp = NULL;
00374 TFile *paraFile = new TFile(outfilename,"READ");
00375 for (Int_t sid = 0; sid < 2; sid++){
00376 for (Int_t ch = 0; ch < NUM_SPADIC_CHA; ch++) {
00377 name.Form("Ch%02i_Suid%02i",ch,usedSuId[sid]);
00378 rawPulse[sid][ch] = new TH1D("rawPulse"+name,"rawPulse"+name,SPADIC_TRACE_SIZE,0,SPADIC_TRACE_SIZE);
00379 rawPulse[sid][ch]->SetLineColor(color[ch]);
00380 rawPulse[sid][ch]->SetXTitle("time bin []");
00381 rawPulse[sid][ch]->SetYTitle("signal [ADC]");
00382 baselinePulse[sid][ch] = new TH1D("baselinePulse"+name,"baselinePulse"+name,SPADIC_TRACE_SIZE,0,SPADIC_TRACE_SIZE);
00383 baselinePulse[sid][ch]->SetLineColor(color[ch]);
00384 baselinePulse[sid][ch]->SetXTitle("time bin []");
00385 baselinePulse[sid][ch]->SetYTitle("signal [ADC]");
00386 baselineNoisePulse[sid][ch] = new TH1D("baselineNoisePulse"+name,"baselineNoisePulse"+name,SPADIC_TRACE_SIZE,0,SPADIC_TRACE_SIZE);
00387 baselineNoisePulse[sid][ch]->SetLineColor(color[ch]);
00388 baselineNoisePulse[sid][ch]->SetXTitle("time bin []");
00389 baselineNoisePulse[sid][ch]->SetYTitle("signal [ADC]");
00390 }
00391 }
00392
00393
00394
00395
00396
00397 if (NULL == (temp = (TProfile*)paraFile->Get("PRF_11_first"))){
00398 first = true;
00399 maxIt = 0;
00400
00401 printf("----------First iteration!\n");
00402
00403 sigma[0] = 3.8;
00404 sigma[1] = 3.8;
00405
00406
00407
00408 } else {
00409 first = false;
00410
00411 if (NULL == (temp = (TProfile*)paraFile->Get("PRF_11_second"))){
00412 second = true;
00413 maxIt = 1;
00414
00415 printf("----------Second iteration!\n");
00416 }
00417 else if (NULL == (temp = (TProfile*)paraFile->Get("PRF_11_third"))){
00418 third = true;
00419 maxIt = 2;
00420
00421 printf("----------Third iteration!\n");
00422 }
00423 else if (NULL == (temp = (TProfile*)paraFile->Get("PRF_11_fourth"))){
00424 fourth = true;
00425 maxIt = 3;
00426
00427 printf("----------Fourth iteration!\n");
00428 }
00429 else if (NULL == (temp = (TProfile*)paraFile->Get("PRF_11_fifth"))){
00430 fifth = true;
00431 maxIt = 4;
00432
00433 printf("----------Fifth iteration!\n");
00434 }
00435 else if (NULL == (temp = (TProfile*)paraFile->Get("PRF_11_sixth"))){
00436 sixth = true;
00437 maxIt = 5;
00438
00439 printf("----------Sixth iteration!\n");
00440 }
00441 else {
00442 printf("----------Last iteration!\n");
00443 maxIt = 6;
00444
00445 }
00446
00447 if (first){
00448 eTRD = 1.0/sqrt(12);
00449 eHod1 = 1.0/sqrt(12);
00450 eHod2 = 1.0/sqrt(12);
00451 printf("dx:%8.3f mm %8.3f mm %8.3f mm %8.3f mm\n",eHod1,eTRD,eTRD,eHod2);
00452
00453
00454
00455
00456
00457
00458
00459
00460
00461
00462
00463
00464
00465
00466
00467
00468
00469
00470
00471
00472
00473
00474
00475
00476
00477
00478
00479
00480 } else {
00481 eTRD = 0.1/sqrt(12);
00482 eHod1 = 1.0/sqrt(12);
00483 eHod2 = 1.0/sqrt(12);
00484
00485
00486
00487
00488
00489 }
00490
00491
00492
00493
00494
00495
00496 printf("#Delta z_{TRD}^{real}: %8.2f mm z-pos TRD 2: %8.2f mm \n",zTRD2-zTRD1,zTRD2);
00497 for (Int_t it = 0; it < nit; it++) {
00498 for (Int_t sid = 0; sid < 2; sid++){
00499 title.Form("trackingDisplTRD%i_1D%s",sid+1,itname[it].Data());
00500 TProfile *tempTrackDispl = (TProfile*)paraFile->Get(title);
00501 if (NULL != tempTrackDispl) {
00502
00503 title.Form("tempTrackDisplTRD_%02i%s",usedSuId[sid],itname[it].Data());
00504 tempTrackDispl->SetNameTitle(title,title);
00505 if (it == 0){
00506 tempTrackDispl->Fit("linfit","R0Q");
00507 t3[sid][it] = linfit->GetParameter(0);
00508 t4[sid][it] = linfit->GetParameter(1);
00509 chiSqrNDF[sid][it] = linfit->GetChisquare()/linfit->GetNDF();
00510
00511
00512
00513
00514 } else if (it == 1) {
00515 tempTrackDispl->Fit("linfit","R0Q");
00516 t3[sid][it] = linfit->GetParameter(0);
00517 t4[sid][it] = linfit->GetParameter(1);
00518 chiSqrNDF[sid][it] = linfit->GetChisquare()/linfit->GetNDF();
00519
00520
00521
00522
00523
00524
00525
00526
00527
00528
00529 } else if (it == 2) {
00530 tempTrackDispl->Fit("linfit","R0Q");
00531 t3[sid][it] = linfit->GetParameter(0);
00532 t4[sid][it] = linfit->GetParameter(1);
00533 chiSqrNDF[sid][it] = linfit->GetChisquare()/linfit->GetNDF();
00534
00535
00536
00537
00538
00539
00540
00541
00542
00543
00544
00545
00546
00547 } else {
00548 tempTrackDispl->Fit("linfit","R0Q");
00549 t3[sid][it] = linfit->GetParameter(0);
00550 t4[sid][it] = linfit->GetParameter(1);
00551 chiSqrNDF[sid][it] = linfit->GetChisquare()/linfit->GetNDF();
00552 }
00553 delete tempTrackDispl;
00554
00555 }
00556 title.Form("trackingDisplHodo%i_1D%s",sid+1,itname[it].Data());
00557 TProfile *tempTrackDisplH = (TProfile*)paraFile->Get(title);
00558 if (NULL != tempTrackDisplH){
00559 title.Form("tempTrackDisplH_%02i%s",usedSuId[sid],itname[it].Data());
00560 tempTrackDisplH->SetNameTitle(title,title);
00561 tempTrackDisplH->Fit("linfitH","R0Q");
00562 th0[sid][it] = linfitH->GetParameter(0);
00563 th1[sid][it] = linfitH->GetParameter(1);
00564 delete tempTrackDisplH;
00565 }
00566 title.Form("ResidualsTracking_%02i%s",usedSuId[sid],itname[it].Data());
00567 TH1I *tempResidualsTracking = (TH1I*)paraFile->Get(title);
00568 if (NULL != tempResidualsTracking){
00569 title.Form("tempTrackRes_%02i%s",usedSuId[sid],itname[it].Data());
00570 tempResidualsTracking->SetNameTitle(title,title);
00571 tempResidualsTracking->Fit(gfit,"0Q","",tempResidualsTracking->GetMean()-tempResidualsTracking->GetRMS(),tempResidualsTracking->GetMean()+tempResidualsTracking->GetRMS());
00572 pr[sid][it] = gfit->GetParameter(2);
00573
00574 delete tempResidualsTracking;
00575 }
00576
00577 title.Form("ResidualsTrackingH_%i%s",sid+1,itname[it].Data());
00578 TH1I *tempResidualsTrackingH = (TH1I*)paraFile->Get(title);
00579 if (NULL != tempResidualsTrackingH){
00580 title.Form("tempTrackResH_%02i%s",usedSuId[sid],itname[it].Data());
00581 tempResidualsTrackingH->SetNameTitle(title,title);
00582 tempResidualsTrackingH->Fit(gfit,"0Q","",tempResidualsTrackingH->GetMean()-tempResidualsTrackingH->GetRMS(),tempResidualsTrackingH->GetMean()+tempResidualsTrackingH->GetRMS());
00583 prH[sid][it] = gfit->GetParameter(2);
00584
00585 delete tempResidualsTrackingH;
00586 }
00587 if (sid == 0){
00588 title.Form("OptDeltaZ_Trd%s",itname[it].Data());
00589 TH1I *tempOptDeltaZ = (TH1I*)paraFile->Get(title);
00590 if (NULL != tempOptDeltaZ){
00591 title.Form("tempOptDeltaZ%s",itname[it].Data());
00592 tempOptDeltaZ->SetNameTitle(title,title);
00593 TF1 *gzfit = new TF1("gzfit","gaus",tempOptDeltaZ->GetMean()-500,tempOptDeltaZ->GetMean()+500);
00594 tempOptDeltaZ->Fit(gzfit,"0Q","",tempOptDeltaZ->GetMean()-500,tempOptDeltaZ->GetMean()+500);
00595
00596 if (it == 1){
00597
00598
00599 }
00600
00601
00602 printf("#Delta z_{TRD}^{opt.}: %8.2f mm sigma: %8.2f chi^2/NDF: %8.2f\n",gzfit->GetParameter(1),gzfit->GetParameter(2),gzfit->GetChisquare()/gzfit->GetNDF());
00603 delete tempOptDeltaZ;
00604 delete gzfit;
00605 }
00606 }
00607 }
00608 }
00609
00610 printf(" Hodo1 TRD1 TRD2 Hodo2\n");
00611 for (Int_t it = 0; it < maxIt; it++){
00612 printf(" %8.3f mm %8.3f mm %8.3f mm %8.3f mm\n", prH[0][it], pr[0][it], pr[1][it], prH[1][it]);
00613
00614
00615
00616 }
00617 printf("dx:%8.3f mm %8.3f mm %8.3f mm %8.3f mm\n",eHod1,eTRD,eTRD,eHod2);
00618 for (Int_t sid = 0; sid < 2; sid++){
00619 title.Form("Alignment_%02i_first",usedSuId[sid]);
00620 AlignmentComp[sid] = (TProfile*)paraFile->Get(title);
00621 title.Form("AlignmentComp_%02i_first",usedSuId[sid]);
00622 AlignmentComp[sid]->SetNameTitle(title,title);
00623 title.Form("AlignmentSimple_%02i_first",usedSuId[sid]);
00624 sAlignmentComp[sid] = (TProfile*)paraFile->Get(title);
00625 title.Form("sAlignmentComp_%02i_first",usedSuId[sid]);
00626 sAlignmentComp[sid]->SetNameTitle(title,title);
00627
00628 title.Form("Alignment_%02i_first",usedSuId[sid]);
00629
00630 TProfile *tempAlignment = (TProfile*)paraFile->Get(title);
00631 if (useCombinedFit){
00632 tempAlignment->Fit("sinfit2","R0Q");
00633 f0[sid] = sinfit2->GetParameter(0);
00634 f1[sid] = sinfit2->GetParameter(1);
00635 f2[sid] = sinfit2->GetParameter(2);
00636 f3[sid] = sinfit2->GetParameter(3);
00637 f4[sid] = sinfit2->GetParameter(4);
00638 fchiSqrNDF[sid] = sinfit2->GetChisquare()/sinfit2->GetNDF();
00639 } else {
00640 tempAlignment->Fit("linfit","R0Q");
00641 m[sid] = linfit->GetParameter(0);
00642 b[sid] = linfit->GetParameter(1);
00643 }
00644
00645 title.Form("AlignmentSimple_%02i_first",usedSuId[sid]);
00646
00647 TProfile *tempAlignmentSimple = (TProfile*)paraFile->Get(title);
00648 if (useCombinedFit){
00649 tempAlignmentSimple->Fit("sinfit2","R0Q");
00650 s0[sid] = sinfit2->GetParameter(0);
00651 s1[sid] = sinfit2->GetParameter(1);
00652 s2[sid] = sinfit2->GetParameter(2);
00653 s3[sid] = sinfit2->GetParameter(3);
00654 s4[sid] = sinfit2->GetParameter(4);
00655 schiSqrNDF[sid] = sinfit2->GetChisquare()/sinfit2->GetNDF();
00656 } else {
00657 tempAlignmentSimple->Fit("linfit","R0Q");
00658 ms[sid] = linfit->GetParameter(0);
00659 bs[sid] = linfit->GetParameter(1);
00660 }
00661
00662 title.Form("PRF_%02i_first",usedSuId[sid]);
00663
00664 TProfile *tempprfProfile = (TProfile*)paraFile->Get(title);
00665
00666
00667
00668
00669 tempprfProfile->Fit("gausPRF","R0Q");
00670 sigma[sid] = gPRFfit->GetParameter(2);
00671
00672
00673
00674
00675 if (third) {
00676 if (!useCombinedFit && useSinFit){
00677 title.Form("Displacement_%02i_second",usedSuId[sid]);
00678
00679
00680 TProfile *tempDisplacement = (TProfile*)paraFile->Get(title);
00681 tempDisplacement->Fit("sinfit","R0Q");
00682 ad[sid] = sinfit->GetParameter(0);
00683 fd[sid] = sinfit->GetParameter(1);
00684 pd[sid] = sinfit->GetParameter(2);
00685 delete tempDisplacement;
00686 title.Form("DisplacementSimple_%02i_second",usedSuId[sid]);
00687
00688
00689 TProfile *tempDisplacementS = (TProfile*)paraFile->Get(title);
00690 tempDisplacementS->Fit("sinfit","R0Q");
00691 ads[sid] = sinfit->GetParameter(0);
00692 fds[sid] = sinfit->GetParameter(1);
00693 pds[sid] = sinfit->GetParameter(2);
00694 delete tempDisplacementS;
00695 }
00696 }
00697
00698
00699
00700 if (useCombinedFit) {
00701 printf("\nSid%i\n sigma %+9.5f\n",usedSuId[sid],sigma[sid]);
00702 printf(" f(x) = %+9.5f * TMath::Sin(%+9.5f * x + %+9.5f) + %+9.5f * x + %+9.5f chiSqrNDF: %+6.2f\n",f0[sid],f1[sid],f2[sid],f3[sid],f4[sid],fchiSqrNDF[sid]);
00703 printf(" s(x) = %+9.5f * TMath::Sin(%+9.5f * x + %+9.5f) + %+9.5f * x + %+9.5f chiSqrNDF: %+6.2f\n\n",s0[sid],s1[sid],s2[sid],s3[sid],s4[sid],schiSqrNDF[sid]);
00704 } else {
00705 printf("\nSid%i\n sigma %+9.5f\n f(x) = %+9.5f * x + %+9.5f\n s(x) = %+9.5f * x + %+9.5f\n f(x) = %+9.5f * TMath::Sin(%+9.5f * x + %+9.5f)\n",usedSuId[sid],sigma[sid],m[sid],b[sid],ms[sid],bs[sid],ad[sid],fd[sid],pd[sid]);
00706 }
00707 for (Int_t it = 0; it < maxIt; it++)
00708 printf(" t(x) = %+9.5f * TMath::Sin(%+9.5f * x + %+9.5f) + %+9.5f * x + %+9.5f chiSqrNDF: %+6.2f\n",t0[sid][it],t1[sid][it],t2[sid][it],t3[sid][it],t4[sid][it],chiSqrNDF[sid][it]);
00709 for (Int_t it = 0; it < maxIt; it++)
00710 printf(" h(x) = %+9.5f * x + %+9.5f\n",th0[sid][it],th1[sid][it]);
00711 delete tempAlignment;
00712 delete tempAlignmentSimple;
00713 delete tempprfProfile;
00714
00715
00716
00717
00718 }
00719 }
00720
00721 TFile *output = new TFile(outfilename,"UPDATE");
00722 for (Int_t sid = 0; sid < 2; sid++){
00723 if (plotFromFile) {
00724
00725
00726
00727
00728
00729
00730
00731
00732
00733
00734
00735
00736
00737
00738
00739
00740
00741
00742
00743
00744
00745
00746
00747
00748
00749
00750
00751
00752
00753
00754
00755
00756
00757
00758
00759
00760
00761
00762
00763
00764
00765
00766
00767
00768
00769
00770
00771
00772
00773
00774
00775
00776
00777
00778
00779
00780 } else {
00781 if (sid == 0){
00782
00783 OptDeltaZ_Trd = new TH1I("OptDeltaZ_Trd","OptDeltaZ_Trd",8000,-100000,100000);
00784 OptDeltaZ_Trd->SetXTitle("#Deltaz_{TRD}^{opt.} [mm]");
00785 OptDeltaZ_Hod = new TH1I("OptDeltaZ_Hod","OptDeltaZ_Hod",2000,-100000,100000);
00786 OptDeltaZ_Hod->SetXTitle("#Deltaz_{Hod}^{opt.} [mm]");
00787
00788 PadMax = new TH2I("PadMax","PadMax",
00789 NUM_SPADIC_CHA,-0.5,NUM_SPADIC_CHA-0.5,
00790 NUM_SPADIC_CHA,-0.5,NUM_SPADIC_CHA-0.5
00791 );
00792 if (first) {
00793 Ch1_Pb_El = new TH2I("Ch1_Pb_El","good PID Ch1_Pb_El",400,0,4000,400,0,4000);
00794 Ch1_Pb_El->SetXTitle("Cherenkov 1 [a.u.]");
00795 Ch1_Pb_El->SetYTitle("Pb-glass calorimeter [a.u.]");
00796 Ch1_Pb_El->GetYaxis()->SetTitleOffset(1.35);
00797 Ch1_Pb_El->SetContour(99);
00798
00799 Ch1_Pb_Pi = new TH2I("Ch1_Pb_Pi","good PID Ch1_Pb_Pi",400,0,4000,400,0,4000);
00800 Ch1_Pb_Pi->SetXTitle("Cherenkov 1 [a.u.]");
00801 Ch1_Pb_Pi->SetYTitle("Pb-glass calorimeter [a.u.]");
00802 Ch1_Pb_Pi->GetYaxis()->SetTitleOffset(1.35);
00803 Ch1_Pb_Pi->SetContour(99);
00804
00805 Ch1_Pb_My = new TH2I("Ch1_Pb_My","good PID Ch1_Pb_My",400,0,4000,400,0,4000);
00806 Ch1_Pb_My->SetXTitle("Cherenkov 1 [a.u.]");
00807 Ch1_Pb_My->SetYTitle("Pb-glass calorimeter [a.u.]");
00808 Ch1_Pb_My->GetYaxis()->SetTitleOffset(1.35);
00809 Ch1_Pb_My->SetContour(99);
00810
00811 allCh1_Pb = new TH2I("allCh1_Pb","all PID Ch1_Pb",400,0,4000,400,0,4000);
00812 allCh1_Pb->SetXTitle("Cherenkov 1 [a.u.]");
00813 allCh1_Pb->SetYTitle("Pb-glass calorimeter [a.u.]");
00814 allCh1_Pb->GetYaxis()->SetTitleOffset(1.35);
00815 allCh1_Pb->SetContour(99);
00816
00817 noCh1_Pb = new TH2I("noCh1_Pb","no good PID Ch1_Pb",400,0,4000,400,0,4000);
00818 noCh1_Pb->SetXTitle("Cherenkov 1 [a.u.]");
00819 noCh1_Pb->SetYTitle("Pb-glass calorimeter [a.u.]");
00820 noCh1_Pb->GetYaxis()->SetTitleOffset(1.35);
00821 noCh1_Pb->SetContour(99);
00822
00823 Ch2_Pb_El = new TH2I("Ch2_Pb_El","good PID Ch2_Pb_El",400,0,4000,400,0,4000);
00824 Ch2_Pb_El->SetXTitle("Cherenkov 2 [a.u.]");
00825 Ch2_Pb_El->SetYTitle("Pb-glass calorimeter [a.u.]");
00826 Ch2_Pb_El->GetYaxis()->SetTitleOffset(1.35);
00827 Ch2_Pb_El->SetContour(99);
00828
00829 Ch2_Pb_Pi = new TH2I("Ch2_Pb_Pi","good PID Ch2_Pb_Pi",400,0,4000,400,0,4000);
00830 Ch2_Pb_Pi->SetXTitle("Cherenkov 2 [a.u.]");
00831 Ch2_Pb_Pi->SetYTitle("Pb-glass calorimeter [a.u.]");
00832 Ch2_Pb_Pi->GetYaxis()->SetTitleOffset(1.35);
00833 Ch2_Pb_Pi->SetContour(99);
00834
00835 Ch2_Pb_My = new TH2I("Ch2_Pb_My","good PID Ch2_Pb_My",400,0,4000,400,0,4000);
00836 Ch2_Pb_My->SetXTitle("Cherenkov 2 [a.u.]");
00837 Ch2_Pb_My->SetYTitle("Pb-glass calorimeter [a.u.]");
00838 Ch2_Pb_My->GetYaxis()->SetTitleOffset(1.35);
00839 Ch2_Pb_My->SetContour(99);
00840
00841 allCh2_Pb = new TH2I("allCh2_Pb","all PID Ch2_Pb",400,0,4000,400,0,4000);
00842 allCh2_Pb->SetXTitle("Cherenkov 2 [a.u.]");
00843 allCh2_Pb->SetYTitle("Pb-glass calorimeter [a.u.]");
00844 allCh2_Pb->GetYaxis()->SetTitleOffset(1.35);
00845 allCh2_Pb->SetContour(99);
00846
00847 noCh2_Pb = new TH2I("noCh2_Pb","no good PID Ch2_Pb",400,0,4000,400,0,4000);
00848 noCh2_Pb->SetXTitle("Cherenkov 2 [a.u.]");
00849 noCh2_Pb->SetYTitle("Pb-glass calorimeter [a.u.]");
00850 noCh2_Pb->GetYaxis()->SetTitleOffset(1.35);
00851 noCh2_Pb->SetContour(99);
00852
00853 Ch1_Ch2_El = new TH2I("Ch1_Ch2_El","good PID Ch1_Ch2_El",400,0,4000,400,0,4000);
00854 Ch1_Ch2_El->SetXTitle("Cherenkov 1 [a.u.]");
00855 Ch1_Ch2_El->SetYTitle("Cherenkov 2 [a.u.]");
00856 Ch1_Ch2_El->GetYaxis()->SetTitleOffset(1.35);
00857 Ch1_Ch2_El->SetContour(99);
00858
00859 Ch1_Ch2_Pi = new TH2I("Ch1_Ch2_Pi","good PID Ch1_Ch2_Pi",400,0,4000,400,0,4000);
00860 Ch1_Ch2_Pi->SetXTitle("Cherenkov 1 [a.u.]");
00861 Ch1_Ch2_Pi->SetYTitle("Cherenkov 2 [a.u.]");
00862 Ch1_Ch2_Pi->GetYaxis()->SetTitleOffset(1.35);
00863 Ch1_Ch2_Pi->SetContour(99);
00864
00865 Ch1_Ch2_My = new TH2I("Ch1_Ch2_My","good PID Ch1_Ch2_My",400,0,4000,400,0,4000);
00866 Ch1_Ch2_My->SetXTitle("Cherenkov 1 [a.u.]");
00867 Ch1_Ch2_My->SetYTitle("Cherenkov 2 [a.u.]");
00868 Ch1_Ch2_My->GetYaxis()->SetTitleOffset(1.35);
00869 Ch1_Ch2_My->SetContour(99);
00870
00871 allCh1_Ch2 = new TH2I("allCh1_Ch2","all PID Ch1_Ch2",400,0,4000,400,0,4000);
00872 allCh1_Ch2->SetXTitle("Cherenkov 1 [a.u.]");
00873 allCh1_Ch2->SetYTitle("Cherenkov 2 [a.u.]");
00874 allCh1_Ch2->GetYaxis()->SetTitleOffset(1.35);
00875 allCh1_Ch2->SetContour(99);
00876
00877 noCh1_Ch2 = new TH2I("noCh1_Ch2","no good PID Ch1_Ch2",400,0,4000,400,0,4000);
00878 noCh1_Ch2->SetXTitle("Cherenkov 1 [a.u.]");
00879 noCh1_Ch2->SetYTitle("Cherenkov 2 [a.u.]");
00880 noCh1_Ch2->GetYaxis()->SetTitleOffset(1.35);
00881 noCh1_Ch2->SetContour(99);
00882 }
00883 }
00884 title.Form("AlignmentHodo1Trd%i_1D",sid+1);
00885 AlignmentHodo1Trd_1D[sid] = new TProfile(title,title,
00886 64,0,64);
00887 AlignmentHodo1Trd_1D[sid]->SetXTitle("x_{Hod1} [mm]");
00888 title.Form("x_{Hod1}-x_{TRD%i} [mm]",sid+1);
00889 AlignmentHodo1Trd_1D[sid]->SetYTitle(title);
00890 title.Form("AlignmentHodo2Trd%i_1D",sid+1);
00891 AlignmentHodo2Trd_1D[sid] = new TProfile(title,title,
00892 64,0,64);
00893 AlignmentHodo2Trd_1D[sid]->SetXTitle("x_{Hod2} [mm]");
00894 title.Form("x_{Hod2}-x_{TRD%i} [mm]",sid+1);
00895 AlignmentHodo2Trd_1D[sid]->SetYTitle(title);
00896
00897 title.Form("AlignmentHodo1Trd%i",sid+1);
00898 AlignmentHodo1Trd[sid] = new TH2I(title,title,
00899 64,0,64,
00900 4*bins_mm*(NUM_SPADIC_CHA)*padWidth[sid],-2*(NUM_SPADIC_CHA-0.5)*padWidth[sid],2*(NUM_SPADIC_CHA-0.5)*padWidth[sid]);
00901 AlignmentHodo1Trd[sid]->SetXTitle("x_{Hod1} [mm]");
00902 title.Form("x_{Hod1}-x_{TRD%i} [mm]",sid+1);
00903 AlignmentHodo1Trd[sid]->SetYTitle(title);
00904 AlignmentHodo1Trd[sid]->SetContour(99);
00905 title.Form("AlignmentHodo2Trd%i",sid+1);
00906 AlignmentHodo2Trd[sid] = new TH2I(title,title,
00907 64,0,64,
00908 4*bins_mm*(NUM_SPADIC_CHA)*padWidth[sid],-2*(NUM_SPADIC_CHA-0.5)*padWidth[sid],2*(NUM_SPADIC_CHA-0.5)*padWidth[sid]);
00909 AlignmentHodo2Trd[sid]->SetXTitle("x_{Hod2} [mm]");
00910 title.Form("x_{Hod2}-x_{TRD%i} [mm]",sid+1);
00911 AlignmentHodo2Trd[sid]->SetYTitle(title);
00912 AlignmentHodo2Trd[sid]->SetContour(99);
00913
00914 title.Form("CorrelationHodo1Trd%i",sid+1);
00915 CorrelationHodo1Trd[sid] = new TH2I(title,title,64,0,64,
00916
00917 bins_mm*(NUM_SPADIC_CHA)*padWidth[sid],-0.5*padWidth[sid],(NUM_SPADIC_CHA-0.5)*padWidth[sid]);
00918 CorrelationHodo1Trd[sid]->SetXTitle("x_{Hod1} [mm]");
00919 title.Form("x_{TRD%i} [mm]",sid+1);
00920 CorrelationHodo1Trd[sid]->SetYTitle(title);
00921 CorrelationHodo1Trd[sid]->SetContour(99);
00922 title.Form("CorrelationHodo2Trd%i",sid+1);
00923 CorrelationHodo2Trd[sid] = new TH2I(title,title,64,0,64,
00924
00925 bins_mm*(NUM_SPADIC_CHA)*padWidth[sid],-0.5*padWidth[sid],(NUM_SPADIC_CHA-0.5)*padWidth[sid]);
00926 CorrelationHodo2Trd[sid]->SetXTitle("x_{Hod2} [mm]");
00927 title.Form("x_{TRD%i} [mm]",sid+1);
00928 CorrelationHodo2Trd[sid]->SetYTitle(title);
00929 CorrelationHodo2Trd[sid]->SetContour(99);
00930
00931 title.Form("clusterSizeRatio_%02i",usedSuId[sid]);
00932 clusterSizeRatio[sid] = new TH2I(title,title,NUM_SPADIC_CHA,-0.5,NUM_SPADIC_CHA-0.5,100,0,1);
00933 clusterSizeRatio[sid]->SetXTitle("cluster size");
00934 clusterSizeRatio[sid]->SetYTitle("charge fraction on central pad");
00935 clusterSizeRatio[sid]->SetContour(99);
00936 for (Int_t sit = 0; sit < 2; sit++) {
00937 title.Form("correlation_2D_%02i_%02i",usedSuId[sid],sit);
00938 correlation_2D[sid][sit] = new TH2I(title,title,
00939 bins_mm*(NUM_SPADIC_CHA)*padWidth[sid],-0.5*padWidth[sid],(NUM_SPADIC_CHA-0.5)*padWidth[sid],
00940 bins_mm*(NUM_SPADIC_CHA)*padWidth[sid],-0.5*padWidth[sid],(NUM_SPADIC_CHA-0.5)*padWidth[sid]);
00941 correlation_2D[sid][sit]->SetXTitle("reco. x TRD1 [mm]");
00942 correlation_2D[sid][sit]->SetYTitle("reco. x TRD2 [mm]");
00943 correlation_2D[sid][sit]->SetContour(99);
00944 }
00945 title.Form("clusterSize_%02i",usedSuId[sid]);
00946
00947 clusterSize[sid] = new TH1I(title,title,NUM_SPADIC_CHA+1,-0.5,NUM_SPADIC_CHA+0.5);
00948 clusterSize[sid]->SetXTitle("cluster width [channels]");
00949 clusterSize[sid]->SetYTitle("");
00950 title.Form("maxAmplitudeValue_%02i",usedSuId[sid]);
00951
00952 maxAmplitudeValue[sid] = new TH1I(title,title,256*2,0,256);
00953 maxAmplitudeValue[sid]->SetXTitle("max. amplitude [ADC]");
00954 maxAmplitudeValue[sid]->SetYTitle("");
00955 title.Form("maxAmplitudeHitTime_%02i",usedSuId[sid]);
00956
00957 maxAmplitudeHitTime[sid] = new TH2I(title,title,256,0,256,45,0,45);
00958 maxAmplitudeHitTime[sid]->SetXTitle("max. amplitude [ADC]");
00959 maxAmplitudeHitTime[sid]->SetYTitle("max. time bin");
00960 maxAmplitudeHitTime[sid]->SetContour(99);
00961 title.Form("covaMatixValue_%02i",usedSuId[sid]);
00962
00963 covaMatixValue[sid] = new TH1I(title,title,1000,-0.13,0.13);
00964 covaMatixValue[sid]->SetXTitle("cov. matrix value");
00965 covaMatixValue[sid]->SetYTitle("");
00966
00967 title.Form("covaMatixValueClusterSize_%02i",usedSuId[sid]);
00968 covaMatixValueClusterSize[sid] = new TH2I(title,title,1000,-0.13,0.13,NUM_SPADIC_CHA-1,-0.5,NUM_SPADIC_CHA-1.5);
00969 covaMatixValueClusterSize[sid]->SetXTitle("cov. matrix noise cut");
00970 covaMatixValueClusterSize[sid]->SetYTitle("number of signal channels");
00971 covaMatixValueClusterSize[sid]->SetContour(99);
00972
00973 title.Form("covaMatixValueMaxAmplitude_%02i",usedSuId[sid]);
00974 covaMatixValueMaxAmplitude[sid] = new TH2I(title,title,1000,-0.13,0.13,256,0,256);
00975 covaMatixValueMaxAmplitude[sid]->SetXTitle("cov. matrix value");
00976 covaMatixValueMaxAmplitude[sid]->SetYTitle("max. amplitude [ADC]");
00977 covaMatixValueMaxAmplitude[sid]->SetContour(99);
00978 title.Form("covaMatixValueHitTime_%02i",usedSuId[sid]);
00979
00980 covaMatixValueHitTime[sid] = new TH2I(title,title,1000,-0.13,0.13,45,0,45);
00981 covaMatixValueHitTime[sid]->SetXTitle("cov. matrix value");
00982 covaMatixValueHitTime[sid]->SetYTitle("max. time bin");
00983 covaMatixValueHitTime[sid]->SetContour(99);
00984 title.Form("signalChDistance_%02i",usedSuId[sid]);
00985
00986 signalChDistance[sid] = new TH1I(title,title,2*NUM_SPADIC_CHA+1,-NUM_SPADIC_CHA-0.5,NUM_SPADIC_CHA+0.5);
00987 signalChDistance[sid]->SetXTitle("distance to next signal channel [channels]");
00988 signalChDistance[sid]->SetYTitle("normalized counts");
00989 title.Form("averageSignal_2D_%02i",usedSuId[sid]);
00990
00991 averageSignal_2D[sid] = new TH2I(title,title,SPADIC_TRACE_SIZE,0,SPADIC_TRACE_SIZE,512,-256,256);
00992 averageSignal_2D[sid]->SetXTitle("time bin");
00993 averageSignal_2D[sid]->SetYTitle("signal [ADC]");
00994 averageSignal_2D[sid]->SetContour(99);
00995
00996 title.Form("noiseDistribution_%02i",usedSuId[sid]);
00997 noiseDistribution[sid] = new TH1I(title,title,2*SPADIC_ADC_MAX,-SPADIC_ADC_MAX,SPADIC_ADC_MAX);
00998 noiseDistribution[sid]->SetXTitle("subtracted noise [ADC]");
00999
01000 title.Form("averageNoise_2D_%02i",usedSuId[sid]);
01001 averageNoise_2D[sid] = new TH2I(title,title,SPADIC_TRACE_SIZE,0,SPADIC_TRACE_SIZE,512,-256,256);
01002 averageNoise_2D[sid]->SetXTitle("time bin");
01003 averageNoise_2D[sid]->SetYTitle("signal [ADC]");
01004 averageNoise_2D[sid]->SetContour(99);
01005
01006 title.Form("baselineDistribution_%02i",usedSuId[sid]);
01007 baselineDistribution[sid] = new TH2I(title,title,NUM_SPADIC_CHA,-0.5,NUM_SPADIC_CHA-0.5,SPADIC_ADC_MAX,0,SPADIC_ADC_MAX);
01008 baselineDistribution[sid]->SetXTitle("channel");
01009 baselineDistribution[sid]->SetYTitle("signal within the first 3 time bins [ADC]");
01010 baselineDistribution[sid]->SetContour(99);
01011
01012 title.Form("PRF_2D_%02i",usedSuId[sid]);
01013
01014 prf[sid] = new TH2D(title,title, 30 * padWidth[sid], -1.5 * padWidth[sid] , 1.5 * padWidth[sid], 100, 0, 1);
01015 prf[sid]->SetYTitle("relative pad charge");
01016 prf[sid]->SetXTitle("reco. displacement [mm]");
01017 prf[sid]->SetContour(99);
01018
01019 title.Form("PRF_%02i",usedSuId[sid]);
01020 prfProfile[sid] = new TProfile(title,title, 6 * padWidth[sid], -1.5 * padWidth[sid], 1.5 * padWidth[sid]);
01021 prfProfile[sid]->SetMarkerStyle(24);
01022 prfProfile[sid]->SetMarkerColor(1);
01023 prfProfile[sid]->SetLineColor(1);
01024 prfProfile[sid]->SetYTitle("relative pad charge");
01025 prfProfile[sid]->SetXTitle("reco. displacement [mm]");
01026 title.Form("Displacement_Charge_%02i",usedSuId[sid]);
01027 Displacement_Charge[sid] = new TH2I(title,title,
01028 bins_mm*2*padWidth[sid],-1*padWidth[sid],1*padWidth[sid],
01029 (256+10)*SPADIC_TRACE_SIZE/10,-10*SPADIC_TRACE_SIZE,256*SPADIC_TRACE_SIZE);
01030 Displacement_Charge[sid]->SetContour(99);
01031 Displacement_Charge[sid]->SetXTitle("displacement [mm]");
01032 Displacement_Charge[sid]->SetYTitle("signal [ADC]");
01033 title.Form("DisplacementSimple_Charge_%02i",usedSuId[sid]);
01034 DisplacementSimple_Charge[sid] = new TH2I(title,title,
01035 bins_mm*2*padWidth[sid],-1*padWidth[sid],1*padWidth[sid],
01036 (256+10)*SPADIC_TRACE_SIZE/10*SPADIC_TRACE_SIZE,-10*SPADIC_TRACE_SIZE,256*SPADIC_TRACE_SIZE);
01037 DisplacementSimple_Charge[sid]->SetContour(99);
01038 DisplacementSimple_Charge[sid]->SetXTitle("displacement [mm]");
01039 DisplacementSimple_Charge[sid]->SetYTitle("signal [ADC]");
01040
01041 title.Form("DisplacementSimple_2D_%02i",usedSuId[sid]);
01042 DisplacementSimple_2D[sid] = new TH2I(title,title,
01043 bins_mm*2*padWidth[sid],-1*padWidth[sid],1*padWidth[sid],
01044 bins_mm*2*padWidth[sid],-1*padWidth[sid],1*padWidth[sid]);
01045 DisplacementSimple_2D[sid]->SetContour(99);
01046 DisplacementSimple_2D[sid]->SetXTitle("d_{TRD1} [mm]");
01047 DisplacementSimple_2D[sid]->SetYTitle("d_{TRD1}-d_{TRD2} [mm]");
01048 title.Form("DisplacementSimple_%02i",usedSuId[sid]);
01049 DisplacementSimple[sid] = new TProfile(title,title,bins_mm*2*padWidth[sid],-1*padWidth[sid],1*padWidth[sid]);
01050
01051
01052 title.Form("Displacement_2D_%02i",usedSuId[sid]);
01053 Displacement_2D[sid] = new TH2I(title,title,
01054 bins_mm*2*padWidth[sid],-1*padWidth[sid],1*padWidth[sid],
01055 bins_mm*2*padWidth[sid],-1*padWidth[sid],1*padWidth[sid]);
01056 Displacement_2D[sid]->SetContour(99);
01057 Displacement_2D[sid]->SetXTitle("d_{TRD1} [mm]");
01058 Displacement_2D[sid]->SetYTitle("d_{TRD1}-d_{TRD2} [mm]");
01059
01060 title.Form("DisplacementSimple_1D_%02i",usedSuId[sid]);
01061 DisplacementSimple_1D[sid] = new TH1I(title,title,
01062
01063 bins_mm*NUM_SPADIC_CHA*padWidth[sid],-0.5*padWidth[sid],NUM_SPADIC_CHA*padWidth[sid]-0.5);
01064 DisplacementSimple_1D[sid]->SetXTitle("reco. x [mm]");
01065
01066
01067 title.Form("Displacement_1D_%02i",usedSuId[sid]);
01068 Displacement_1D[sid] = new TH1I(title,title,
01069
01070 bins_mm*NUM_SPADIC_CHA*padWidth[sid],-0.5*padWidth[sid],NUM_SPADIC_CHA*padWidth[sid]-0.5);
01071 title.Form("reco. x_{TRD%i} [mm]",sid+1);
01072 Displacement_1D[sid]->SetXTitle(title);
01073
01074 title.Form("DisplacementPRF_1D_%02i",usedSuId[sid]);
01075 DisplacementPRF_1D[sid] = new TH1I(title,title,
01076
01077 bins_mm*NUM_SPADIC_CHA*padWidth[sid],-0.5*padWidth[sid],NUM_SPADIC_CHA*padWidth[sid]-0.5);
01078 title.Form("reco. x_{TRD%i} [mm]",sid+1);
01079 DisplacementPRF_1D[sid]->SetXTitle(title);
01080
01081 title.Form("DisplacementHSS_1D_%02i",usedSuId[sid]);
01082 DisplacementHSS_1D[sid] = new TH1I(title,title,
01083
01084 bins_mm*NUM_SPADIC_CHA*padWidth[sid],-0.5*padWidth[sid],NUM_SPADIC_CHA*padWidth[sid]-0.5);
01085 title.Form("reco. x_{TRD%i} [mm]",sid+1);
01086 DisplacementHSS_1D[sid]->SetXTitle(title);
01087
01088
01089 title.Form("Displacement_%02i",usedSuId[sid]);
01090 Displacement[sid] = new TProfile(title,title,bins_mm*2*padWidth[sid],-1*padWidth[sid],1*padWidth[sid]);
01091
01092
01093 PadMax->SetXTitle("max. channel Sus.11");
01094 PadMax->SetYTitle("max. channel Sus.10");
01095 PadMax->SetContour(99);
01096 title.Form("Alignment_2D_%02i",usedSuId[sid]);
01097 Alignment_2D[sid] = new TH2I(title,title,
01098 bins_mm*NUM_SPADIC_CHA*padWidth[sid],-0.5*padWidth[sid],NUM_SPADIC_CHA*padWidth[sid]-0.5*padWidth[sid],
01099 bins_mm*NUM_SPADIC_CHA*padWidth[sid],-1*NUM_SPADIC_CHA*padWidth[sid]+0.5*padWidth[sid],NUM_SPADIC_CHA*padWidth[sid]-0.5*padWidth[sid]);
01100 Alignment_2D[sid]->SetXTitle("reco. x_{TRD1} [mm]");
01101 Alignment_2D[sid]->SetYTitle("reco. x_{TRD1}-x_{TRD2} [mm]");
01102 Alignment_2D[sid]->SetContour(99);
01103 title.Form("Alignment_%02i",usedSuId[sid]);
01104 Alignment[sid] = new TProfile(title,title,
01105 4*NUM_SPADIC_CHA*padWidth[sid],-0.5*padWidth[sid],NUM_SPADIC_CHA*padWidth[sid]-0.5*padWidth[sid]);
01106 Alignment[sid]->SetXTitle("reco. x_{TRD1} [mm]");
01107 Alignment[sid]->SetYTitle("reco. x_{TRD1}-x_{TRD2} [mm]");
01108 Alignment[sid]->SetMarkerStyle(1);
01109 Alignment[sid]->GetYaxis()->SetRangeUser(-1*NUM_SPADIC_CHA*padWidth[sid]+0.5*padWidth[sid],NUM_SPADIC_CHA*padWidth[sid]-0.5*padWidth[sid]);
01110 title.Form("Residuals_%02i",usedSuId[sid]);
01111 Residuals[sid] = new TH1D(title,title,4*bins_mm*padWidth[sid],-1*padWidth[sid],1*padWidth[sid]);
01112 Residuals[sid]->SetXTitle("reco. x_{TRD1}-x_{TRD2} [mm]");
01113 Residuals[sid]->SetYTitle("#");
01114
01115
01116 title.Form("ResidualsTracking_%02i",usedSuId[sid]);
01117 ResidualsTracking[sid] = new TH1D(title,title,4*bins_mm*padWidth[sid],-1*padWidth[sid],1*padWidth[sid]);
01118 title.Form("x_{TRD%i}-x_{track} [mm]",sid+1);
01119 ResidualsTracking[sid]->SetXTitle(title);
01120 ResidualsTracking[sid]->SetYTitle("#");
01121
01122 title.Form("ResidualsTrackingH_%i",sid+1);
01123 ResidualsTrackingH[sid] = new TH1D(title,title,4*80,-40,40);
01124 title.Form("x_{Hod%i}-x_{track} [mm]",sid+1);
01125 ResidualsTrackingH[sid]->SetXTitle(title);
01126 ResidualsTrackingH[sid]->SetYTitle("#");
01127
01128 title.Form("AlignmentSimple_2D_%02i",usedSuId[sid]);
01129 AlignmentSimple_2D[sid] = new TH2I(title,title,
01130 bins_mm*NUM_SPADIC_CHA*padWidth[sid],-0.5*padWidth[sid],NUM_SPADIC_CHA*padWidth[sid]-0.5*padWidth[sid],
01131 bins_mm*NUM_SPADIC_CHA*padWidth[sid],-1*NUM_SPADIC_CHA*padWidth[sid]+0.5*padWidth[sid],NUM_SPADIC_CHA*padWidth[sid]-0.5*padWidth[sid]);
01132 AlignmentSimple_2D[sid]->SetXTitle("reco. x_{TRD1} [mm]");
01133 AlignmentSimple_2D[sid]->SetYTitle("reco. x_{TRD1}-x_{TRD2} [mm]");
01134 AlignmentSimple_2D[sid]->SetContour(99);
01135 title.Form("AlignmentSimple_%02i",usedSuId[sid]);
01136 AlignmentSimple[sid] = new TProfile(title,title,
01137 4*NUM_SPADIC_CHA*padWidth[sid],-0.5*padWidth[sid],NUM_SPADIC_CHA*padWidth[sid]-0.5*padWidth[sid]);
01138 AlignmentSimple[sid]->SetXTitle("reco. x_{TRD1} [mm]");
01139 AlignmentSimple[sid]->SetYTitle("reco. x_{TRD1}-x_{TRD2} [mm]");
01140 AlignmentSimple[sid]->SetMarkerStyle(1);
01141 AlignmentSimple[sid]->GetYaxis()->SetRangeUser(-1*NUM_SPADIC_CHA*padWidth[sid]+0.5*padWidth[sid],NUM_SPADIC_CHA*padWidth[sid]-0.5*padWidth[sid]);
01142 title.Form("ResidualsSimple_%02i",usedSuId[sid]);
01143 ResidualsSimple[sid] = new TH1D(title,title,4*bins_mm*padWidth[sid],-1*padWidth[sid],1*padWidth[sid]);
01144 ResidualsSimple[sid]->SetXTitle("reco. x_{TRD1}-x_{TRD2} [mm]");
01145 ResidualsSimple[sid]->SetYTitle("#");
01146 }
01147 }
01148 for (Int_t i = 0; i < 4; i++) {
01149 title.Form("ResidualsEl_%s",methode[i].Data());
01150 ResidualsEl[i] = new TH1D(title,title,4*bins_mm*padWidth[0],-1*padWidth[0],1*padWidth[0]);
01151 ResidualsEl[i]->SetXTitle("reco. x_{TRD1}-x_{TRD2} [mm]");
01152 ResidualsEl[i]->SetYTitle("#");
01153 title.Form("ResidualsPi_%s",methode[i].Data());
01154 ResidualsPi[i] = new TH1D(title,title,4*bins_mm*padWidth[0],-1*padWidth[0],1*padWidth[0]);
01155 ResidualsPi[i]->SetXTitle("reco. x_{TRD1}-x_{TRD2} [mm]");
01156 ResidualsPi[i]->SetYTitle("#");
01157 title.Form("ResidualsMy_%s",methode[i].Data());
01158 ResidualsMy[i] = new TH1D(title,title,4*bins_mm*padWidth[0],-1*padWidth[0],1*padWidth[0]);
01159 ResidualsMy[i]->SetXTitle("reco. x_{TRD1}-x_{TRD2} [mm]");
01160 ResidualsMy[i]->SetYTitle("#");
01161
01162 }
01163
01164
01165
01166
01167
01168
01169
01170
01171
01172
01173
01174
01175 TH1I *trackingSigmaHod1 = new TH1I("trackingSigmaHod1","trackingSigmaHod1",10000,-1,1000);
01176 TH1I *trackingSigmaHod2 = new TH1I("trackingSigmaHod2","trackingSigmaHod2",10000,-1,1000);
01177 TH1I *trackingSigmaTRD1 = new TH1I("trackingSigmaTRD1","trackingSigmaTRD1",10000,-1,1000);
01178 TH1I *trackingSigmaTRD2 = new TH1I("trackingSigmaTRD2","trackingSigmaTRD2",10000,-1,1000);
01179 TH1I *trackingPullHod1 = new TH1I("trackingPullHod1","trackingPullHod1",100,-5,5);
01180 TH1I *trackingPullHod2 = new TH1I("trackingPullHod2","trackingPullHod2",100,-5,5);
01181 TH1I *trackingPullTRD1 = new TH1I("trackingPullTRD1","trackingPullTRD1",100,-5,5);
01182 TH1I *trackingPullTRD2 = new TH1I("trackingPullTRD2","trackingPullTRD2",100,-5,5);
01183
01184 TH1I *trackingPara0 = new TH1I("trackingPara0","trackingPara0",2000,-0.1,0.1);
01185 trackingPara0->SetXTitle("track slope relative to z-axis [mm/mm]");
01186 TH1I *trackingPara1 = new TH1I("trackingPara1","trackingPara1",20000,-100,100);
01187 trackingPara1->SetXTitle("fitted track origin at z=0 [mm]");
01188 TH1I *trackingchiSqrNDF = new TH1I("trackingchiSqrNDF","trackingchiSqrNDF",1101,-1,10);
01189 trackingchiSqrNDF->SetXTitle("track fit #chi^{2}/NDF");
01190
01191 TH2I *trackingDisplHodo1 = new TH2I("trackingDisplHodo1","trackingDisplHodo1",64,0,64,2000,-100,100);
01192 trackingDisplHodo1->SetXTitle("x_{Hod1} [mm]");
01193 trackingDisplHodo1->SetYTitle("x_{Hod1}-x_{track} [mm]");
01194 trackingDisplHodo1->SetContour(99);
01195 TProfile *trackingDisplHodo1_1D = new TProfile("trackingDisplHodo1_1D","trackingDisplHodo1_1D",64,0,64);
01196 trackingDisplHodo1_1D->SetXTitle("x_{Hod1} [mm]");
01197 trackingDisplHodo1_1D->SetYTitle("x_{Hod1}-x_{track} [mm]");
01198 TH2I *trackingDisplHodo2 = new TH2I("trackingDisplHodo2","trackingDisplHodo2",64,0,64,2000,-100,100);
01199 trackingDisplHodo2->SetXTitle("x_{Hod2} [mm]");
01200 trackingDisplHodo2->SetYTitle("x_{Hod2} [mm]-x_{track}");
01201 trackingDisplHodo2->SetContour(99);
01202 TProfile *trackingDisplHodo2_1D = new TProfile("trackingDisplHodo2_1D","trackingDisplHodo2_1D",64,0,64);
01203 trackingDisplHodo2_1D->SetXTitle("x_{Hod2} [mm]");
01204 trackingDisplHodo2_1D->SetYTitle("x_{Hod2}-x_{track} [mm]");
01205 TH2I *trackingDisplTRD1 = new TH2I("trackingDisplTRD1","trackingDisplTRD1",
01206 2*bins_mm*(NUM_SPADIC_CHA)*padWidth[0],(-0.5)*padWidth[0],(NUM_SPADIC_CHA-0.5)*padWidth[0],
01207 2000,-100,100);
01208 trackingDisplTRD1->SetXTitle("x_{TRD1} [mm]");
01209 trackingDisplTRD1->SetYTitle("x_{TRD1}-x_{track} [mm]");
01210 trackingDisplTRD1->SetContour(99);
01211 TProfile *trackingDisplTRD1_1D = new TProfile("trackingDisplTRD1_1D","trackingDisplTRD1_1D",
01212 2*bins_mm*(NUM_SPADIC_CHA)*padWidth[0],(-0.5)*padWidth[0],(NUM_SPADIC_CHA-0.5)*padWidth[0]);
01213 trackingDisplTRD1_1D->SetXTitle("x_{TRD1} [mm]");
01214 trackingDisplTRD1_1D->SetYTitle("x_{TRD1}-x_{track} [mm]");
01215 TH2I *trackingDisplTRD2 = new TH2I("trackingDisplTRD2","trackingDisplTRD2",
01216 2*bins_mm*(NUM_SPADIC_CHA)*padWidth[1],(-0.5)*padWidth[1],(NUM_SPADIC_CHA-0.5)*padWidth[1],
01217 2000,-100,100);
01218 trackingDisplTRD2->SetXTitle("x_{TRD2} [mm]");
01219 trackingDisplTRD2->SetYTitle("x_{TRD2}-x_{track} [mm]");
01220 trackingDisplTRD2->SetContour(99);
01221 TProfile *trackingDisplTRD2_1D = new TProfile("trackingDisplTRD2_1D","trackingDisplTRD2_1D",
01222 2*bins_mm*(NUM_SPADIC_CHA)*padWidth[1],(-0.5)*padWidth[1],(NUM_SPADIC_CHA-0.5)*padWidth[1]);
01223 trackingDisplTRD2_1D->SetXTitle("x_{TRD2} [mm]");
01224 trackingDisplTRD2_1D->SetYTitle("x_{TRD2}-x_{track} [mm]");
01225
01226 TH1I *Hodo1X = new TH1I("Hodo1X","Hodo1X",640,0,64);
01227 Hodo1X->SetXTitle("x [mm]");
01228 TH1I *Hodo2X = new TH1I("Hodo2X","Hodo2X",640,0,64);
01229 Hodo2X->SetXTitle("x [mm]");
01230
01231
01232 TProfile *AlignmentHodoX_1D = new TProfile("AlignmentHodoX_1D","AlignmentHodoX_1D",64,0,64);
01233 AlignmentHodoX_1D->SetXTitle("x_{Hod1} [mm]");
01234 AlignmentHodoX_1D->SetYTitle("x_{Hod1}-x_{Hod2} [mm]");
01235
01236 TH2I *AlignmentHodoX = new TH2I("AlignmentHodoX","AlignmentHodoX",64,0,64,128,-64,64);
01237 AlignmentHodoX->SetXTitle("x_{Hod1} [mm]");
01238 AlignmentHodoX->SetYTitle("x_{Hod1}-x_{Hod2} [mm]");
01239 AlignmentHodoX->SetContour(99);
01240
01241 TH2I *AlignmentHodoY = new TH2I("AlignmentHodoY","AlignmentHodoY",64,0,64,128,-64,64);
01242 AlignmentHodoY->SetXTitle("y_{Hod1} [mm]");
01243 AlignmentHodoY->SetYTitle("y_{Hod1}-y_{Hod2} [mm]");
01244 AlignmentHodoY->SetContour(99);
01245
01246 TH2I *CorrelationHodoX = new TH2I("CorrelationHodoX","CorrelationHodoX",64,0,64,64,0,64);
01247 CorrelationHodoX->SetXTitle("x_{Hod1} [mm]");
01248 CorrelationHodoX->SetYTitle("x_{Hod2} [mm]");
01249 CorrelationHodoX->SetContour(99);
01250
01251 TH2I *CorrelationHodoY = new TH2I("CorrelationHodoY","CorrelationHodoY",64,0,64,64,0,64);
01252 CorrelationHodoY->SetXTitle("y_{Hod1} [mm]");
01253 CorrelationHodoY->SetYTitle("y_{Hod2} [mm]");
01254 CorrelationHodoY->SetContour(99);
01255
01256 TH2I *Hodo1 = new TH2I("Hodo1","Hodo1",64,0,64,64,0,64);
01257 Hodo1->SetXTitle("x [mm]");
01258 Hodo1->SetYTitle("y [mm]");
01259 Hodo1->SetContour(99);
01260 TH2I *Hodo2 = new TH2I("Hodo2","Hodo2",64,0,64,64,0,64);
01261 Hodo2->SetXTitle("x [mm]");
01262 Hodo2->SetYTitle("y [mm]");
01263 Hodo2->SetContour(99);
01264
01265 TH2I *AngleX = new TH2I("AngleX","AngleX",2000,-5,5,200,-0.5,0.5);
01266 AngleX->SetContour(99);
01267 AngleX->SetXTitle("#alpha_{TRD} [deg]");
01268 AngleX->SetYTitle("#alpha_{Hod} [deg]");
01269 TH2I *AngleHod = new TH2I("AngleHod","AngleHod",200,-1,1,200,-1,1);
01270 AngleHod->SetContour(99);
01271 AngleHod->SetXTitle("#alpha_{x} [deg]");
01272 AngleHod->SetYTitle("#beta_{y} [deg]");
01273 TH2I *AnglePositionX = new TH2I("AnglePositionX","AnglePositionX",64,0,64,200,-1,1);
01274 AnglePositionX->SetContour(99);
01275 AnglePositionX->SetXTitle("x_{Hod1} [mm]");
01276 AnglePositionX->SetYTitle("#alpha_{Hod} [deg]");
01277 TH2I *AnglePositionY = new TH2I("AnglePositionY","AnglePositionY",64,0,64,200,-1,1);
01278 AnglePositionY->SetContour(99);
01279 AnglePositionY->SetXTitle("y_{Hod1} [mm]");
01280 AnglePositionY->SetYTitle("#beta_{Hod} [deg]");
01281
01282
01283
01284 temp = NULL;
01285 if (NULL == (temp = (TProfile*)output->Get("AlignmentHodoX_1D_uncompensated"))){
01286 GetHodoAlignment(filename, AlignmentHodoX_1D, AlignmentHodoX);
01287 AlignmentHodoX_1D->Fit("linfitH","0QR");
01288 h0 = linfitH->GetParameter(0);
01289 h1 = linfitH->GetParameter(1);
01290 printf("\n H(x) = %+9.5f * x + %+9.5f\n\n",h0,h1);
01291 output->cd();
01292 AlignmentHodoX_1D->Write("AlignmentHodoX_1D_uncompensated", TObject::kOverwrite);
01293 AlignmentHodoX->Write("AlignmentHodoX_uncompensated", TObject::kOverwrite);
01294 AlignmentHodoX_1D->Reset();
01295 AlignmentHodoX->Reset();
01296 AlignmentHodoX->SetContour(99);
01297 } else {
01298 TProfile *tempAlignmentHodoX_1D = (TProfile*)output->Get("AlignmentHodoX_1D_uncompensated");
01299 tempAlignmentHodoX_1D->Fit("linfitH","0QR");
01300 h0 = linfitH->GetParameter(0);
01301 h1 = linfitH->GetParameter(1);
01302 printf("\n H(x) = %+9.5f * x + %+9.5f\n\n",h0,h1);
01303 delete tempAlignmentHodoX_1D;
01304 temp = NULL;
01305 }
01306
01307
01308 TStopwatch timer;
01309 timer.Start();
01310 Double_t d[2] = {0.0};
01311 Double_t x[2] = {0.0};
01312 Double_t dHSS[2] = {0.0};
01313 Double_t xHSS[2] = {0.0};
01314 Double_t dPRF[2] = {0.0};
01315 Double_t xPRF[2] = {0.0};
01316 Double_t ds[2] = {0.0};
01317 Double_t xs[2] = {0.0};
01318 Double_t Q[2][3] = {{0.0}};
01319 Double_t xTrack[2] = {0.0};
01320 Double_t xHTrack[2] = {0.0};
01321 Double_t delta = 0.0;
01322 Int_t padMax[2] = {-1};
01323 Int_t clusterCh[2] = {0};
01324 Int_t counter(0), usedEvents(0), usedEvents2(0), usedEvents3(0), usedEvents4(0), sus1events(0), sus2events(0), pidNoiseEvents(0), notPulserEvents(0), fiberHodoEvents(0);
01325 name = filename;
01326 GetPidCuts(name.ReplaceAll("data2012/TTrees/merged/",""));
01327 Int_t nPion(0),nElectron(0), nMyon(0);
01328 Float_t Ch1(0), Ch2(0), Pb(0);
01329 TFile inputFile(filename,"READ");
01330 if (!inputFile.IsOpen())
01331 cout << "file not found: " << filename << endl;
01332
01333
01334
01335 TTree* theTree = NULL;
01336 TKey* kee = NULL;
01337 TIter iter(inputFile.GetListOfKeys());
01338 while ( ( kee = dynamic_cast<TKey*>(iter()) ) !=0 ) {
01339 theTree = dynamic_cast<TTree*>(kee->ReadObj());
01340 if (theTree)
01341 break;
01342 }
01343 if(theTree == NULL) {
01344 cout <<"Error: no Tree in file "<< filename.Data() << endl;
01345 return;
01346 }
01347 TCernOct12UnpackEvent* evnt = new TCernOct12UnpackEvent;
01348 TGo4EventElement* theBase=evnt;
01349 evnt->synchronizeWithTree(theTree, &theBase);
01350 const Int_t entries = (Int_t)theTree->GetEntries() / speed_up;
01351
01352 printf("%7i Events found in TTree\n",entries);
01353 TMbsCrateEvent* fCrateInputEvent = NULL;
01354 TSpadicEvent* SpadicInputEvent = NULL;
01355 TSpadicData* theSpadic1 = NULL;
01356 TSpadicData* theSpadic2 = NULL;
01357
01358
01359
01360 name = filename;
01361 name.ReplaceAll(".root","_step1.root");
01362 TFile inputFile_step1(name,"READ");
01363 if (!inputFile_step1.IsOpen())
01364 cout << "file not found: " << name << endl;
01365
01366
01367
01368 TTree* theTree_step1 = NULL;
01369 TKey* kee_step1 = NULL;
01370 TIter iter_step1(inputFile_step1.GetListOfKeys());
01371 while ( ( kee_step1 = dynamic_cast<TKey*>(iter_step1()) ) !=0 ) {
01372 theTree_step1 = dynamic_cast<TTree*>(kee_step1->ReadObj());
01373 if (theTree_step1)
01374 break;
01375 }
01376 if(theTree_step1 == NULL) {
01377 cout <<"Error: no Tree in file "<< name.Data() << endl;
01378 return;
01379 }
01380 TCernOct12DetectorEvent* evnt_step1 = new TCernOct12DetectorEvent;
01381 TGo4EventElement* theBase_step1=evnt_step1;
01382 evnt_step1->synchronizeWithTree(theTree_step1, &theBase_step1);
01383 const Int_t entries_step1 = (Int_t)theTree_step1->GetEntries() / speed_up;
01384 if (entries != entries_step1) {
01385 printf("%7i Events in raw TTree\n%7i Events in step1 TTree\n\n", entries, entries_step1);
01386 }
01387 else
01388 printf("%7i Events found in step 1 TTree\n", entries_step1);
01389
01390 TFiberHodEvent* theHodo1 = NULL;
01391 TFiberHodEvent* theHodo2 = NULL;
01392 Double_t xHod1(0.0), xHod2(0.0), yHod1(0.0), yHod2(0.0), xAngle(0.0), yAngle(0.0), xTrdAngle(0.0);
01393
01394 Bool_t Sus[2] = {false};
01395
01396
01397 for(Int_t i = 0; i < entries; ++i) {
01398 Statusbar(i,entries);
01399 theTree->GetEntry(i);
01400 fCrateInputEvent = dynamic_cast<TMbsCrateEvent*>(evnt->GetSubEvent("MBSCRATE"));
01401 SpadicInputEvent = dynamic_cast<TSpadicEvent*>(evnt->GetSubEvent("SPADIC"));
01402 theSpadic1 = dynamic_cast<TSpadicData*>(SpadicInputEvent->getEventElement(usedSuId[0]));
01403 theSpadic2 = dynamic_cast<TSpadicData*>(SpadicInputEvent->getEventElement(usedSuId[1]));
01404
01405 Ch1 = fCrateInputEvent->fData1182[1][0];
01406 Ch2 = fCrateInputEvent->fData1182[0][0];
01407 Pb = fCrateInputEvent->fData1182[1][1];
01408
01409 isPulser = fCrateInputEvent->fIsPulser;
01410 if (isPulser) continue;
01411 notPulserEvents++;
01412
01413 theTree_step1->GetEntry(i);
01414 theHodo1 = dynamic_cast<TFiberHodEvent*>(evnt_step1->GetSubEvent("Hodo1"));
01415 theHodo2 = dynamic_cast<TFiberHodEvent*>(evnt_step1->GetSubEvent("Hodo2"));
01416 Int_t nhits1 = (Int_t)theHodo1->NumHits();
01417 Int_t nhits2 = (Int_t)theHodo2->NumHits();
01418 if (nhits1 < 1 || nhits2 < 1) continue;
01419 fiberHodoEvents++;
01420 for (Int_t ihit = 0; ihit < nhits1; ihit++) {
01421 xHod1 = theHodo1->fHits[ihit].X + 32;
01422 yHod1 = theHodo1->fHits[ihit].Y + 32;
01423 if (ihit > 0)
01424 printf("%i %i Hodo1(%.2f, %.2f)\n\n",i,ihit,xHod1,yHod1);
01425 }
01426 for (Int_t ihit = 0; ihit < nhits2; ihit++) {
01427 xHod2 = theHodo2->fHits[ihit].X + 32;
01428 yHod2 = theHodo2->fHits[ihit].Y + 32;
01429 if (ihit > 0)
01430 printf("%i %i Hodo2(%.2f, %.2f)\n\n",i,ihit,xHod2,yHod2);
01431 }
01432 xHTrack[0] = xHod1;
01433 xHTrack[1] = xHod2;
01434 xHTrack[1] += (h0 * xHod1 + h1);
01435
01436
01437 for (Int_t it = 0; it < nit; it++) {
01438 xHTrack[0] -= th0[0][it] * xHod1 + th1[0][it];
01439
01440 xHTrack[1] -= th0[1][it] * xHod2 + th1[1][it];
01441
01442 }
01443
01444 Hodo1X->Fill(xHod1);
01445 Hodo1->Fill(xHod1, yHod1);
01446 Hodo2X->Fill(xHod2);
01447 Hodo2->Fill(xHod2, yHod2);
01448 CorrelationHodoX->Fill(xHod1, xHod2);
01449 CorrelationHodoY->Fill(yHod1, yHod2);
01450 AlignmentHodoX->Fill(xHod1, xHod1-xHod2);
01451
01452 AlignmentHodoY->Fill(yHod1, yHod1-yHod2);
01453 xAngle = CalcAngleHodo(xHTrack[0], xHTrack[1]);
01454 yAngle = CalcAngleHodo(yHod1, yHod2);
01455 AngleHod->Fill(xAngle, yAngle);
01456 AnglePositionX->Fill(xHod1, xAngle);
01457 AnglePositionY->Fill(yHod1, yAngle);
01458
01459 if ((Ch1 < 350 && Pb < 350) || (Ch2 < 350 && Pb < 350)) {
01460 pidNoiseEvents++;
01461 continue;
01462 }
01463
01464
01465
01466 getPID(Ch1, Ch2, Pb);
01467 if (isPion){
01468 nPion++;
01469 if (first) {
01470 Ch1_Pb_Pi->Fill(Ch1,Pb);
01471 Ch2_Pb_Pi->Fill(Ch2,Pb);
01472 Ch1_Ch2_Pi->Fill(Ch1,Ch2);
01473 }
01474 }
01475 if (isElectron){
01476 nElectron++;
01477 if (first) {
01478 Ch1_Pb_El->Fill(Ch1,Pb);
01479 Ch2_Pb_El->Fill(Ch2,Pb);
01480 Ch1_Ch2_El->Fill(Ch1,Ch2);
01481 }
01482 }
01483 if (isMyon){
01484 nMyon++;
01485 if (first) {
01486 Ch1_Pb_My->Fill(Ch1,Pb);
01487 Ch2_Pb_My->Fill(Ch2,Pb);
01488 Ch1_Ch2_My->Fill(Ch1,Ch2);
01489 }
01490 }
01491 if (first) {
01492 allCh1_Pb->Fill(Ch1,Pb);
01493 allCh2_Pb->Fill(Ch2,Pb);
01494 allCh1_Ch2->Fill(Ch1,Ch2);
01495
01496 if (isPion || isElectron || isMyon) {
01497
01498
01499
01500 }
01501 if (!isPion && !isElectron && !isMyon) {
01502 noCh1_Pb->Fill(Ch1,Pb);
01503 noCh2_Pb->Fill(Ch2,Pb);
01504 noCh1_Ch2->Fill(Ch1,Ch2);
01505 }
01506 }
01507
01508 if (usePID)
01509 if (!isPion && !isElectron) continue;
01510
01511
01512
01513
01514 for (Int_t sid = 0; sid < 2; sid++){
01515 SpadicOverFlow[sid] = false;
01516 SpadicUnderFlow[sid] = false;
01517 clusterCh[sid] = 0;
01518
01519 for (Int_t ch = 0; ch < NUM_SPADIC_CHA; ch++) {
01520 rawPulse[sid][ch]->Reset();
01521 rawPulse[sid][ch]->GetYaxis()->SetRangeUser(-50,256);
01522 baselinePulse[sid][ch]->Reset();
01523 baselinePulse[sid][ch]->GetYaxis()->SetRangeUser(-50,256);
01524 baselineNoisePulse[sid][ch]->Reset();
01525 baselineNoisePulse[sid][ch]->GetYaxis()->SetRangeUser(-50,256);
01526 }
01527 }
01528 for (Int_t ch = 0; ch < NUM_SPADIC_CHA; ch++) {
01529 for (Int_t bin = 0; bin < SPADIC_TRACE_SIZE; bin++) {
01530 if ((Double_t)theSpadic1->fSpadicPulse[ch][bin] >= 255)
01531 SpadicOverFlow[0] = true;
01532 if ((Double_t)theSpadic1->fSpadicPulse[ch][bin] <= 1 && bin < SPADIC_TRACE_SIZE-1)
01533 SpadicUnderFlow[0] = true;
01534 rawPulse[0][ch]->Fill(bin, (Double_t)theSpadic1->fSpadicPulse[ch][bin]);
01535 if ((Double_t)theSpadic2->fSpadicPulse[ch][bin] >= 255)
01536 SpadicOverFlow[1] = true;
01537 if ((Double_t)theSpadic2->fSpadicPulse[ch][bin] <= 1 && bin < SPADIC_TRACE_SIZE-1)
01538 SpadicUnderFlow[1] = true;
01539 rawPulse[1][ch]->Fill(bin, (Double_t)theSpadic2->fSpadicPulse[ch][bin]);
01540 }
01541 }
01542 if (!useOverFlows)
01543 if (SpadicOverFlow[0] || SpadicOverFlow[1]) continue;
01544 if (!useUnderFlows)
01545 if (SpadicUnderFlow[0] || SpadicUnderFlow[1]) continue;
01546
01547 for (Int_t sid = 0; sid < 2; sid++){
01548
01549 susid = sid;
01550
01551
01552 BaselineCompensation(rawPulse[sid], baselinePulse[sid], baselineDistribution[sid]);
01553
01554 clusterCh[sid] = CancelNoise_Cova(baselinePulse[sid],
01555 baselineNoisePulse[sid],
01556 covaMatixValue[sid],
01557 covaMatixValueMaxAmplitude[sid],
01558 covaMatixValueHitTime[sid],
01559 maxAmplitudeHitTime[sid],
01560 noiseDistribution[sid],
01561 clusterSize[sid],
01562 signalChDistance[sid],
01563 averageNoise_2D[sid],
01564 averageSignal_2D[sid],
01565 covaMatixValueClusterSize[sid],
01566 false
01567 );
01568 padMax[sid] = GetPadMax(baselineNoisePulse[sid]);
01569
01570 maxAmplitudeValue[sid]->Fill(baselineNoisePulse[sid][padMax[sid]]->GetBinContent(baselineNoisePulse[sid][padMax[sid]]->GetMaximumBin()));
01571 if(minimumAmplitudeThreshold(baselineNoisePulse[sid],padMax[sid]) &&
01572 minimumIntegralThreshold(baselineNoisePulse[sid]) &&
01573 !BorderPadMax(baselineNoisePulse[sid],padMax[sid]) &&
01574 HitTimeWindow(baselineNoisePulse[sid],padMax[sid]) &&
01575 clusterCh[sid] > 0
01576
01577
01578 ){
01579 if(sid == 0){
01580 sus1events++;
01581 }else{
01582 sus2events++;
01583 }
01584 Sus[sid] = true;
01585 } else {
01586 Sus[sid] = false;
01587 }
01588 if (first){
01589
01590 if (counter < 5) {
01591 if (baselineNoisePulse[0][padMax[0]]->GetBinContent(baselineNoisePulse[0][padMax[0]]->GetMaximumBin()) > 200 &&
01592 baselineNoisePulse[1][padMax[1]]->GetBinContent(baselineNoisePulse[1][padMax[1]]->GetMaximumBin()) > 200
01593 ){
01594 title.Form("c%iEvents%07i",sid,i);
01595 TCanvas *c = new TCanvas(title,title,2*800,600);
01596 c->Divide(2,1);
01597 for (Int_t ch = 0; ch < NUM_SPADIC_CHA; ch++) {
01598 if(ch > 0)
01599 name = "same";
01600 else
01601 name = "";
01602
01603 c->cd(1);
01604 rawPulse[sid][ch]->DrawCopy(name);
01605 c->cd(2);
01606 baselineNoisePulse[sid][ch]->DrawCopy(name);
01607
01608 }
01609 output->cd();
01610 c->Write(title, TObject::kOverwrite);
01611 c->Close();
01612 delete c;
01613 counter++;
01614 }
01615 }
01616
01617 }
01618 }
01619
01620 if (Sus[0] == true && Sus[1] == true){
01621 usedEvents++;
01622 for (Int_t sid = 0; sid < 2; sid++){
01623 for (Int_t j = 0; j < 3; j++){
01624 Q[sid][j] = 0.0;
01625 }
01626 d[sid] = -1.0E6;
01627 x[sid] = -1.0E6;
01628 dPRF[sid] = -1.0E6;
01629 xPRF[sid] = -1.0E6;
01630 dHSS[sid] = -1.0E6;
01631 xHSS[sid] = -1.0E6;
01632 ds[sid] = -1.0E6;
01633 xs[sid] = -1.0E6;
01634
01635 susid = sid;
01636 CalcPrf(baselineNoisePulse[sid], prf[sid], prfProfile[sid], padWidth[sid], padMax[sid]);
01637
01638 for (Int_t ibin = 1; ibin < SPADIC_TRACE_SIZE; ibin++) {
01639 if (baselineNoisePulse[sid][padMax[sid]-1]->GetBinContent(ibin) > 0.0)
01640 Q[sid][0] += baselineNoisePulse[sid][padMax[sid]-1]->GetBinContent(ibin);
01641
01642
01643 if (baselineNoisePulse[sid][padMax[sid]]->GetBinContent(ibin) > 0.0)
01644 Q[sid][1] += baselineNoisePulse[sid][padMax[sid]]->GetBinContent(ibin);
01645
01646
01647 if (baselineNoisePulse[sid][padMax[sid]+1]->GetBinContent(ibin) > 0.0)
01648 Q[sid][2] += baselineNoisePulse[sid][padMax[sid]+1]->GetBinContent(ibin);
01649
01650
01651 }
01652 }
01653 if ( (Q[0][0] > 0.0 && Q[0][1] > 0.0 && Q[0][2] > 0.0)
01654 &&
01655 (Q[1][0] > 0.0 && Q[1][1] > 0.0 && Q[1][2] > 0.0) )
01656 {
01657
01658 usedEvents2++;
01659 PadMax->Fill(padMax[0],padMax[1]);
01660 for (Int_t sid = 0; sid < 2; sid++){
01661 clusterSizeRatio[sid]->Fill( clusterCh[sid], Q[sid][1]/(Q[sid][0]+Q[sid][1]+Q[sid][2]));
01662 d[sid] = calcDisplacement(padWidth[sid], Q[sid], sigma[sid]);
01663
01664
01665
01666
01667
01668
01669 x[sid] = padWidth[sid] * padMax[sid] + d[sid];
01670
01671 dPRF[sid] = calcDisplacementPRFFitting(padWidth[sid], Q[sid]);
01672 xPRF[sid] = padWidth[sid] * padMax[sid] + dPRF[sid];
01673
01674
01675 ds[sid] = calcSimpleDisplacement(padWidth[sid],Q[sid]);
01676
01677
01678
01679
01680
01681
01682 xs[sid] = padWidth[sid] * padMax[sid] + ds[sid];
01683
01684 dHSS[sid] = calcDisplacementHyperbolicSecantSquared(padWidth[sid], Q[sid]);
01685 xHSS[sid] = padWidth[sid] * padMax[sid] + dHSS[sid];
01686
01687
01688
01689
01690
01691
01692
01693
01694
01695
01696
01697 xTrack[sid] = xHSS[sid];
01698 for (Int_t it = 0; it < maxIt; it++) {
01699
01700 if (t0[sid][it] != 0.0)
01701 xTrack[sid] -= (t0[sid][it] * TMath::Sin(t1[sid][it] * xHSS[sid] + t2[sid][it]) + (t3[sid][it] * xHSS[sid] + t4[sid][it]));
01702 else
01703 xTrack[sid] -= (t3[sid][it] * xHSS[sid] + t4[sid][it]);
01704
01705
01706
01707
01708
01709
01710
01711
01712
01713 }
01714
01715
01716
01717
01718
01719
01720
01721
01722
01723
01724
01725
01726
01727
01728
01729
01730
01731
01732
01733
01734 AlignmentHodo1Trd[sid]->Fill(xHod1, xHTrack[0] - xTrack[sid]);
01735 AlignmentHodo2Trd[sid]->Fill(xHod2, xHTrack[1] - xTrack[sid]);
01736 CorrelationHodo1Trd[sid]->Fill(xHod1, xTrack[sid]);
01737 CorrelationHodo2Trd[sid]->Fill(xHod2, xTrack[sid]);
01738 }
01739 xTrdAngle = CalcAngleMsTrd(xTrack[0], xTrack[1]);
01740 AngleX->Fill(xTrdAngle, xAngle);
01741
01742
01743
01744 if (fTracking->GetN() > 0){
01745
01746 for (Int_t j = 0; j < fTracking->GetN(); j++)
01747 fTracking->RemovePoint(j);
01748 }
01749
01750
01751
01752
01753
01754
01755
01756
01757
01758
01759
01760
01761
01762
01763
01764
01765
01766 fTracking->SetPoint(0,zHod1,xHTrack[0]);
01767 fTracking->SetPointError(0,0,eHod1);
01768 fTracking->SetPoint(1,zTRD2,xTrack[0]);
01769 fTracking->SetPointError(1,0,eTRD);
01770 fTracking->SetPoint(2,zTRD2,xTrack[1]);
01771 fTracking->SetPointError(2,0,eTRD);
01772 if (useHod2){
01773 fTracking->SetPoint(3,zHod2,xHTrack[1]);
01774 fTracking->SetPointError(3,0,eHod2);
01775 }
01776
01777
01778
01779
01780
01781
01782
01783
01784
01785
01786
01787
01788 fTracking->Fit(trackfit,"Q0");
01789 if (debug) {
01790 printf("f(x) = %+9.5f +- %+9.5f* x + %+9.5f +- %+9.5f (chi^2/NDF = %+9.5f)\n",trackfit->GetParameter(0), trackfit->GetParError(0), trackfit->GetParameter(1), trackfit->GetParError(1), trackfit->GetChisquare() / trackfit->GetNDF() );
01791 fTracking->Draw("AP");
01792 trackfit->Draw("same");
01793 }
01794
01795
01796
01797 trackingPullHod1->Fill(CalcPull(xHTrack[0], trackfit->GetParameter(0) * zHod1 + trackfit->GetParameter(1), eHod1, trackfit->IntegralError(0.99 * zHod1, 1.01 * zHod1)));
01798 trackingSigmaHod1->Fill(trackfit->IntegralError(0.99 * zHod1, 1.01 * zHod1));
01799
01800
01801 trackingPullHod2->Fill(CalcPull(xHTrack[1], trackfit->GetParameter(0) * zHod2 + trackfit->GetParameter(1), eHod2, trackfit->IntegralError(0.99 * zHod2, 1.01 * zHod2)));
01802 trackingSigmaHod2->Fill(trackfit->IntegralError(0.99 * zHod2, 1.01 * zHod2));
01803
01804
01805 trackingPullTRD1->Fill(CalcPull(xTrack[0], trackfit->GetParameter(0) * zTRD1 + trackfit->GetParameter(1), eTRD, trackfit->IntegralError(0.99 * zTRD1, 1.01 * zTRD1)));
01806 trackingSigmaTRD1->Fill(trackfit->IntegralError(0.99 * zTRD1, 1.01 * zTRD1));
01807
01808
01809 trackingPullTRD2->Fill(CalcPull(xTrack[1], trackfit->GetParameter(0) * zTRD2 + trackfit->GetParameter(1), eTRD, trackfit->IntegralError(0.99 * zTRD2, 1.01 * zTRD2)));
01810 trackingSigmaTRD2->Fill(trackfit->IntegralError(0.99 * zTRD2, 1.01 * zTRD2));
01811
01812 trackingPara0->Fill(trackfit->GetParameter(0));
01813 trackingPara1->Fill(trackfit->GetParameter(1));
01814 trackingchiSqrNDF->Fill(trackfit->GetChisquare() / trackfit->GetNDF());
01815 OptDeltaZ_Trd->Fill((zHod2 - zHod1) / (xHTrack[1] - xHTrack[0]) * (xTrack[1] - xTrack[0]));
01816 OptDeltaZ_Hod->Fill((zTRD2 - zTRD1) / (xTrack[1] - xTrack[0]) * (xHTrack[1] - xHTrack[0]));
01817
01818
01819 xTrack[0] -= (trackfit->GetParameter(0) * zTRD1 + trackfit->GetParameter(1));
01820 xTrack[1] -= (trackfit->GetParameter(0) * zTRD2 + trackfit->GetParameter(1));
01821
01822
01823
01824 trackingDisplHodo1->Fill( xHod1, xHTrack[0] - (trackfit->GetParameter(0) * zHod1 + trackfit->GetParameter(1)));
01825 ResidualsTrackingH[0]->Fill(xHTrack[0] - (trackfit->GetParameter(0) * zHod1 + trackfit->GetParameter(1)));
01826
01827 trackingDisplHodo2->Fill( xHod2, xHTrack[1] - (trackfit->GetParameter(0) * zHod2 + trackfit->GetParameter(1)));
01828 ResidualsTrackingH[1]->Fill(xHTrack[1] - (trackfit->GetParameter(0) * zHod2 + trackfit->GetParameter(1)));
01829
01830
01831 trackingDisplTRD1->Fill( xHSS[0], xTrack[0]);
01832
01833 ResidualsTracking[0]->Fill(xTrack[0]);
01834 trackingDisplTRD2->Fill( xHSS[1], xTrack[1]);
01835
01836 ResidualsTracking[1]->Fill(xTrack[1]);
01837
01838
01839
01840
01841
01842
01843
01844
01845
01846
01847
01848
01849
01850
01851
01852
01853
01854
01855 {
01856 usedEvents3++;
01857
01858
01859 {
01860 usedEvents4++;
01861 correlation_2D[0][0]->Fill(x[0],x[1]);
01862 correlation_2D[1][0]->Fill(xs[0],xs[1]);
01863 correlation_2D[0][1]->Fill(xPRF[0],xPRF[1]);
01864 correlation_2D[1][1]->Fill(xHSS[0],xHSS[1]);
01865 delta = (x[0]-x[1]);
01866 if (!useFitAlignment){
01867 if (NULL != AlignmentComp[0]){
01868 delta -= AlignmentComp[0]->GetBinContent(AlignmentComp[0]->FindBin(x[0]));
01869 }
01870 } else {
01871 if (useCombinedFit){
01872
01873 delta -= (f0[0] * TMath::Sin(f1[0] * x[0] + f2[0]) + (f3[0] * x[0] + f4[0]));
01874 } else {
01875 delta -= (m[0]*x[0]+b[0]);
01876 if(useSinFit)
01877 delta -= (ad[0] * TMath::Sin(fd[0] * d[0] + pd[0]));
01878
01879 }
01880 }
01881
01882
01883 {
01884
01885 Displacement_Charge[0]->Fill(d[0],Q[0][1]);
01886 Displacement_2D[0]->Fill(d[0],delta);
01887 Displacement_1D[0]->Fill(x[0]);
01888 Displacement_1D[1]->Fill(x[1]);
01889
01890 Alignment_2D[0]->Fill(x[0],delta);
01891
01892 if (padMax[0] > 1 && padMax[0] < NUM_SPADIC_CHA-2){
01893
01894 Residuals[0]->Fill(delta);
01895 if (isElectron)
01896 ResidualsEl[0]->Fill(delta);
01897 if (isPion)
01898 ResidualsPi[0]->Fill(delta);
01899 if (isMyon)
01900 ResidualsMy[0]->Fill(delta);
01901 }
01902 }
01903
01904
01905
01906
01907
01908
01909
01910
01911
01912
01913
01914
01915
01916
01917
01918
01919
01920
01921
01922
01923
01924
01925
01926
01927
01928
01929
01930
01931
01932
01933 {
01934
01935
01936
01937
01938
01939
01940
01941
01942
01943
01944
01945
01946
01947
01948
01949
01950
01951
01952
01953
01954
01955
01956
01957 delta = (xPRF[0] - xPRF[1]);
01958 if (!useFitAlignment){
01959 if (NULL != AlignmentComp[1]){
01960 delta -= AlignmentComp[1]->GetBinContent(AlignmentComp[1]->FindBin(xPRF[0]));
01961 }
01962 } else {
01963 if (useCombinedFit){
01964 delta -= (f0[1] * TMath::Sin(f1[1] * xPRF[0] + f2[1]) + (f3[1] * xPRF[0] + f4[1]));
01965 } else {
01966 delta -= (m[1]*xPRF[1]+b[1]);
01967 if(useSinFit)
01968 delta -= (ad[1] * TMath::Sin(fd[1] * dPRF[0] + pd[1]));
01969 }
01970 }
01971
01972
01973 {
01974
01975 Displacement_Charge[1]->Fill(dPRF[0],Q[0][1]);
01976 Displacement_2D[1]->Fill(dPRF[0],delta);
01977 DisplacementPRF_1D[0]->Fill(xPRF[0]);
01978 DisplacementPRF_1D[1]->Fill(xPRF[1]);
01979
01980 Alignment_2D[1]->Fill(xPRF[0],delta);
01981
01982 if (padMax[0] > 1 && padMax[0] < NUM_SPADIC_CHA-2){
01983
01984 Residuals[1]->Fill(delta);
01985 if (isElectron)
01986 ResidualsEl[2]->Fill(delta);
01987 if (isPion)
01988 ResidualsPi[2]->Fill(delta);
01989 if (isMyon)
01990 ResidualsMy[2]->Fill(delta);
01991 }
01992 }
01993 }
01994 }
01995 {
01996 delta = (xs[0]-xs[1]);
01997 if (!useFitAlignment){
01998 if (NULL != sAlignmentComp[0]){
01999 delta -= sAlignmentComp[0]->GetBinContent(sAlignmentComp[0]->FindBin(xs[0]));
02000 }
02001 } else {
02002 if (useCombinedFit){
02003 delta -= (s0[0] * TMath::Sin(s1[0] * xs[0] + s2[0]) + (s3[0] * xs[0] + s4[0]));
02004 } else {
02005 delta -= (ms[0]*xs[0]+bs[0]);
02006 if(useSinFit)
02007 delta -= (ads[0] * TMath::Sin(fds[0] * ds[0] + pds[0]));
02008 }
02009 }
02010
02011
02012 {
02013
02014 DisplacementSimple_Charge[0]->Fill(ds[0],Q[0][1]);
02015 DisplacementSimple_2D[0]->Fill(ds[0],delta);
02016 DisplacementSimple_1D[0]->Fill(xs[0]);
02017 DisplacementSimple_1D[1]->Fill(xs[1]);
02018
02019 AlignmentSimple_2D[0]->Fill(xs[0],delta);
02020
02021 if (padMax[0] > 1 && padMax[0] < NUM_SPADIC_CHA-2){
02022
02023 ResidualsSimple[0]->Fill(delta);
02024 if (isElectron)
02025 ResidualsEl[1]->Fill(delta);
02026 if (isPion)
02027 ResidualsPi[1]->Fill(delta);
02028 if (isMyon)
02029 ResidualsMy[1]->Fill(delta);
02030 }
02031 }
02032
02033
02034
02035
02036
02037
02038
02039
02040
02041
02042
02043
02044
02045
02046
02047
02048
02049
02050
02051
02052
02053
02054
02055
02056
02057
02058
02059
02060
02061
02062
02063 {
02064 delta = (xHSS[0]-xHSS[1]);
02065 if (!useFitAlignment){
02066 if (NULL != sAlignmentComp[1]){
02067 delta -= sAlignmentComp[1]->GetBinContent(sAlignmentComp[1]->FindBin(xHSS[0]));
02068 }
02069 } else {
02070 if (useCombinedFit){
02071 delta -= (s0[1] * TMath::Sin(s1[1] * xHSS[0] + s2[1]) + (s3[1] * xHSS[0] + s4[1]));
02072 } else {
02073 delta -= (ms[1]*xHSS[0]+bs[1]);
02074 if(useSinFit)
02075 delta -= (ads[1] * TMath::Sin(fds[1] * dHSS[0] + pds[1]));
02076 }
02077 }
02078
02079
02080 {
02081
02082 DisplacementSimple_Charge[1]->Fill(dHSS[0],Q[1][1]);
02083 DisplacementSimple_2D[1]->Fill(dHSS[0],delta);
02084 DisplacementHSS_1D[0]->Fill(xHSS[0]);
02085 DisplacementHSS_1D[1]->Fill(xHSS[1]);
02086
02087 AlignmentSimple_2D[1]->Fill(xHSS[0],delta);
02088
02089 if (padMax[0] > 1 && padMax[0] < NUM_SPADIC_CHA-2){
02090
02091 ResidualsSimple[1]->Fill(delta);
02092 if (isElectron)
02093 ResidualsEl[3]->Fill(delta);
02094 if (isPion)
02095 ResidualsPi[3]->Fill(delta);
02096 if (isMyon)
02097 ResidualsMy[3]->Fill(delta);
02098 }
02099 }
02100 }
02101 }
02102 }
02103
02104
02105 }
02106
02107 if (debug)
02108 if (i%1000 == 0){
02109
02110 }
02111
02112
02113 }
02114
02115 }
02116 if (inputFile.IsOpen())
02117 inputFile.Close();
02118 if (inputFile_step1.IsOpen())
02119 inputFile_step1.Close();
02120 printf("%6.2f%% noise pid\n%6.2f%% efficiency sus11\n%6.2f%% efficiency sus10\n%6.2f%% efficiency sus11 && sus10\n%6.2f%% efficiency sus11 && sus10 cuts 2\n%6.2f%% efficiency sus11 && sus10 cuts 3\n%6.2f%% efficiency sus11 && sus10 cuts 4\n",
02121 100.*pidNoiseEvents/entries,
02122 100.*sus1events/entries,
02123 100.*sus2events/entries,
02124 100.*usedEvents/entries,
02125 100.*usedEvents2/entries,
02126 100.*usedEvents3/entries,
02127 100.*usedEvents4/entries
02128 );
02129 printf("%7i not pulser (%.2f%%) %7i fiberhodo. (%.2f%%) %7i pions (%.2f%%) %7i electrons (%.2f%%) %7i myons (%.2f%%) %7i without PID (%.2f%%)\n",
02130 notPulserEvents,100.*notPulserEvents/entries,
02131 fiberHodoEvents,100.*fiberHodoEvents/entries,
02132 nPion,100.*nPion/entries,
02133 nElectron,100.*nElectron/entries,
02134 nMyon,100.*nMyon/entries,
02135 entries-nPion-nElectron-nMyon-pidNoiseEvents,100.*(entries-nPion-nElectron-nMyon-pidNoiseEvents)/entries
02136 );
02137 timer.Stop();
02138 Double_t rtime = timer.RealTime();
02139 Double_t ctime = timer.CpuTime();
02140
02141 printf("\n\n*********************************************************\n");
02142
02143 printf(" RealTime = %i min. %.1f s, CpuTime = %i min. %.1f s\n",Int_t(rtime/60),(rtime/60 - Int_t(rtime/60))*60.,Int_t(ctime/60),(ctime/60 - Int_t(ctime/60))*60.);
02144 printf(" %.1f events/s, %.1f events/s\n",Float_t(entries)/rtime,Float_t(entries)/ctime);
02145 printf("*********************************************************\n\n");
02146
02147 if (first)
02148 title = "_first";
02149 else if (second)
02150 title = "_second";
02151 else if (third)
02152 title = "_third";
02153 else if (fourth)
02154 title = "_fourth";
02155 else if (fifth)
02156 title = "_fifth";
02157 else if (sixth)
02158 title = "_sixth";
02159 else
02160 title = "_last";
02161 TCanvas *results = new TCanvas(TString("big")+title,TString("big")+title,2*800,1*600);
02162 results->Divide(2,1);
02163 TCanvas *results1 = new TCanvas(TString("small")+title,TString("small")+title,1*800,1*600);
02164 results1->Divide(1,1);
02165 TCanvas *results2 = new TCanvas(TString("hugh")+title,TString("hugh")+title,2*800,2*600);
02166 results2->Divide(2,2);
02167
02168 results1->cd();
02169 Residuals[0]->Fit("gauss","0Q","",Residuals[0]->GetMean()-Residuals[0]->GetRMS(),Residuals[0]->GetMean()+Residuals[0]->GetRMS());
02170 gfit->Draw("same");
02171 name.Form("pr: %.3f#pm%.3f mm",gfit->GetParameter(2)/TMath::Sqrt(2.), gfit->GetParError(2)/TMath::Sqrt(2.));
02172 cout << "weighted D " << name << endl;
02173
02174 Residuals[1]->Fit("gauss","0Q","",Residuals[1]->GetMean()-Residuals[1]->GetRMS(),Residuals[1]->GetMean()+Residuals[1]->GetRMS());
02175 gfit->Draw("same");
02176 name.Form("pr: %.3f#pm%.3f mm",gfit->GetParameter(2)/TMath::Sqrt(2.), gfit->GetParError(2)/TMath::Sqrt(2.));
02177 cout << "PRF fit " << name << endl;
02178
02179 ResidualsSimple[0]->Fit("gauss","0Q","",ResidualsSimple[0]->GetMean()-ResidualsSimple[0]->GetRMS(),ResidualsSimple[0]->GetMean()+ResidualsSimple[0]->GetRMS());
02180 gfit->Draw("same");
02181 name.Form("pr: %.3f#pm%.3f mm",gfit->GetParameter(2)/TMath::Sqrt(2.), gfit->GetParError(2)/TMath::Sqrt(2.));
02182 cout << "gaus simple " << name << endl;
02183
02184 ResidualsSimple[1]->Fit("gauss","0Q","",ResidualsSimple[1]->GetMean()-ResidualsSimple[1]->GetRMS(),ResidualsSimple[1]->GetMean()+ResidualsSimple[1]->GetRMS());
02185 gfit->Draw("same");
02186 name.Form("pr: %.3f#pm%.3f mm",gfit->GetParameter(2)/TMath::Sqrt(2.), gfit->GetParError(2)/TMath::Sqrt(2.));
02187 cout << "HSS " << name << endl;
02188
02189 ResidualsTracking[0]->Fit("gauss","0Q","",ResidualsTracking[0]->GetMean()-ResidualsTracking[0]->GetRMS(),ResidualsTracking[0]->GetMean()+ResidualsTracking[0]->GetRMS());
02190 gfit->Draw("same");
02191 name.Form("pr: %.3f#pm%.3f mm",gfit->GetParameter(2), gfit->GetParError(2));
02192 cout << "Tracking 11 " << name << endl;
02193
02194 ResidualsTracking[1]->Fit("gauss","0Q","",ResidualsTracking[1]->GetMean()-ResidualsTracking[1]->GetRMS(),ResidualsTracking[1]->GetMean()+ResidualsTracking[1]->GetRMS());
02195 gfit->Draw("same");
02196 name.Form("pr: %.3f#pm%.3f mm",gfit->GetParameter(2), gfit->GetParError(2));
02197 cout << "Tracking 10 " << name << endl;
02198
02199 ResidualsTrackingH[0]->Fit("gauss","0Q","",ResidualsTrackingH[0]->GetMean()-ResidualsTrackingH[0]->GetRMS(),ResidualsTrackingH[0]->GetMean()+ResidualsTrackingH[0]->GetRMS());
02200 gfit->Draw("same");
02201 name.Form("pr: %.3f#pm%.3f mm",gfit->GetParameter(2), gfit->GetParError(2));
02202 cout << "Tracking H1 " << name << endl;
02203
02204 ResidualsTrackingH[1]->Fit("gauss","0Q","",ResidualsTrackingH[1]->GetMean()-ResidualsTrackingH[1]->GetRMS(),ResidualsTrackingH[1]->GetMean()+ResidualsTrackingH[1]->GetRMS());
02205 gfit->Draw("same");
02206 name.Form("pr: %.3f#pm%.3f mm",gfit->GetParameter(2), gfit->GetParError(2));
02207 cout << "Tracking H2 " << name << endl << endl;
02208
02209 if (output->IsOpen()){
02210 output->cd();
02211
02212
02213
02214
02215
02216
02217
02218
02219
02220
02221
02222
02223
02224
02225 if (first)
02226 title = "_first";
02227 else if (second)
02228 title = "_second";
02229 else if (third)
02230 title = "_third";
02231 else if (fourth)
02232 title = "_fourth";
02233 else if (fifth)
02234 title = "_fifth";
02235 else if (sixth)
02236 title = "_sixth";
02237 else
02238 title = "_last";
02239 if(first){
02240 Ch1_Pb_El->Write("", TObject::kOverwrite);
02241 Ch1_Pb_Pi->Write("", TObject::kOverwrite);
02242 Ch1_Pb_My->Write("", TObject::kOverwrite);
02243 allCh1_Pb->Write("", TObject::kOverwrite);
02244 noCh1_Pb->Write("", TObject::kOverwrite);
02245 Ch2_Pb_El->Write("", TObject::kOverwrite);
02246 Ch2_Pb_Pi->Write("", TObject::kOverwrite);
02247 Ch2_Pb_My->Write("", TObject::kOverwrite);
02248 allCh2_Pb->Write("", TObject::kOverwrite);
02249 noCh2_Pb->Write("", TObject::kOverwrite);
02250 Ch1_Ch2_El->Write("", TObject::kOverwrite);
02251 Ch1_Ch2_Pi->Write("", TObject::kOverwrite);
02252 Ch1_Ch2_My->Write("", TObject::kOverwrite);
02253 allCh1_Ch2->Write("", TObject::kOverwrite);
02254 noCh1_Ch2->Write("", TObject::kOverwrite);
02255 }
02256
02257 FillProfile(trackingDisplHodo1, trackingDisplHodo1_1D);
02258 FillProfile(trackingDisplHodo2, trackingDisplHodo2_1D);
02259 FillProfile(trackingDisplTRD1, trackingDisplTRD1_1D);
02260 FillProfile(trackingDisplTRD2, trackingDisplTRD2_1D);
02261 FillProfile(AlignmentHodoX, AlignmentHodoX_1D);
02262
02263 OptDeltaZ_Trd->Write(TString(OptDeltaZ_Trd->GetTitle())+title, TObject::kOverwrite);
02264 OptDeltaZ_Hod->Write(TString(OptDeltaZ_Hod->GetTitle())+title, TObject::kOverwrite);
02265 trackingPullHod1->Write(TString(trackingPullHod1->GetTitle())+title, TObject::kOverwrite);
02266 trackingPullHod2->Write(TString(trackingPullHod2->GetTitle())+title, TObject::kOverwrite);
02267 trackingPullTRD1->Write(TString(trackingPullTRD1->GetTitle())+title, TObject::kOverwrite);
02268 trackingPullTRD2->Write(TString(trackingPullTRD2->GetTitle())+title, TObject::kOverwrite);
02269 trackingSigmaHod1->Write(TString(trackingSigmaHod1->GetTitle())+title, TObject::kOverwrite);
02270 trackingSigmaHod2->Write(TString(trackingSigmaHod2->GetTitle())+title, TObject::kOverwrite);
02271 trackingSigmaTRD1->Write(TString(trackingSigmaTRD1->GetTitle())+title, TObject::kOverwrite);
02272 trackingSigmaTRD2->Write(TString(trackingSigmaTRD2->GetTitle())+title, TObject::kOverwrite);
02273 trackingPara0->Write(TString(trackingPara0->GetTitle())+title, TObject::kOverwrite);
02274 trackingPara1->Write(TString(trackingPara1->GetTitle())+title, TObject::kOverwrite);
02275 trackingchiSqrNDF->Write(TString(trackingchiSqrNDF->GetTitle())+title, TObject::kOverwrite);
02276 trackingDisplHodo1->Write(TString(trackingDisplHodo1->GetTitle())+title, TObject::kOverwrite);
02277 trackingDisplHodo1_1D->Write(TString(trackingDisplHodo1_1D->GetTitle())+title, TObject::kOverwrite);
02278 trackingDisplHodo2->Write(TString(trackingDisplHodo2->GetTitle())+title, TObject::kOverwrite);
02279 trackingDisplHodo2_1D->Write(TString(trackingDisplHodo2_1D->GetTitle())+title, TObject::kOverwrite);
02280 trackingDisplTRD1->Write( TString(trackingDisplTRD1->GetTitle() )+title, TObject::kOverwrite);
02281 trackingDisplTRD1_1D->Write(TString(trackingDisplTRD1_1D->GetTitle())+title, TObject::kOverwrite);
02282 trackingDisplTRD2->Write( TString(trackingDisplTRD2->GetTitle() )+title, TObject::kOverwrite);
02283 trackingDisplTRD2_1D->Write(TString(trackingDisplTRD2_1D->GetTitle())+title, TObject::kOverwrite);
02284 Hodo1X->Write(TString(Hodo1X->GetTitle())+title, TObject::kOverwrite);
02285 Hodo2X->Write(TString(Hodo2X->GetTitle())+title, TObject::kOverwrite);
02286 Hodo1->Write(TString(Hodo1->GetTitle())+title, TObject::kOverwrite);
02287 Hodo2->Write(TString(Hodo2->GetTitle())+title, TObject::kOverwrite);
02288 AngleHod->Write(TString(AngleHod->GetTitle())+title, TObject::kOverwrite);
02289 AngleX->Write(TString(AngleX->GetTitle())+title, TObject::kOverwrite);
02290 AnglePositionX->Write(TString(AnglePositionX->GetTitle())+title, TObject::kOverwrite);
02291 AnglePositionY->Write(TString(AnglePositionY->GetTitle())+title, TObject::kOverwrite);
02292 AlignmentHodoX->Write(TString(AlignmentHodoX->GetTitle())+title, TObject::kOverwrite);
02293 AlignmentHodoX_1D->Write(TString(AlignmentHodoX_1D->GetTitle())+title, TObject::kOverwrite);
02294 AlignmentHodoY->Write(TString(AlignmentHodoY->GetTitle())+title, TObject::kOverwrite);
02295 CorrelationHodoX->Write(TString(CorrelationHodoX->GetTitle())+title, TObject::kOverwrite);
02296 CorrelationHodoY->Write(TString(CorrelationHodoY->GetTitle())+title, TObject::kOverwrite);
02297 PadMax->Write(TString(PadMax->GetTitle())+title, TObject::kOverwrite);
02298 for (Int_t sid = 0; sid < 2; sid++){
02299
02300
02301
02302 FillProfile(AlignmentHodo1Trd[sid], AlignmentHodo1Trd_1D[sid]);
02303 FillProfile(AlignmentHodo2Trd[sid], AlignmentHodo2Trd_1D[sid]);
02304 FillProfile(Alignment_2D[sid], Alignment[sid]);
02305 FillProfile(AlignmentSimple_2D[sid], AlignmentSimple[sid]);
02306 FillProfile(Displacement_2D[sid], Displacement[sid]);
02307 FillProfile(DisplacementSimple_2D[sid], DisplacementSimple[sid]);
02308
02309
02310
02311
02312 clusterSize[sid]->Write(TString(clusterSize[sid]->GetTitle())+title, TObject::kOverwrite);
02313 maxAmplitudeValue[sid]->Write(TString(maxAmplitudeValue[sid]->GetTitle())+title, TObject::kOverwrite);
02314 maxAmplitudeHitTime[sid]->Write(TString(maxAmplitudeHitTime[sid]->GetTitle())+title, TObject::kOverwrite);
02315 covaMatixValue[sid]->Write(TString(covaMatixValue[sid]->GetTitle())+title, TObject::kOverwrite);
02316 covaMatixValueMaxAmplitude[sid]->Write(TString(covaMatixValueMaxAmplitude[sid]->GetTitle())+title, TObject::kOverwrite);
02317 covaMatixValueHitTime[sid]->Write(TString(covaMatixValueHitTime[sid]->GetTitle())+title, TObject::kOverwrite);
02318 signalChDistance[sid]->Write(TString(signalChDistance[sid]->GetTitle())+title, TObject::kOverwrite);
02319 averageSignal_2D[sid]->Write(TString(averageSignal_2D[sid]->GetTitle())+title, TObject::kOverwrite);
02320 averageNoise_2D[sid]->Write(TString(averageNoise_2D[sid]->GetTitle())+title, TObject::kOverwrite);
02321
02322
02323 noiseDistribution[sid]->Write(TString(noiseDistribution[sid]->GetTitle())+title, TObject::kOverwrite);
02324 baselineDistribution[sid]->Write(TString(baselineDistribution[sid]->GetTitle())+title, TObject::kOverwrite);
02325 DisplacementSimple_Charge[sid]->Write(TString(DisplacementSimple_Charge[sid]->GetTitle())+title, TObject::kOverwrite);
02326 Displacement_Charge[sid]->Write(TString(Displacement_Charge[sid]->GetTitle())+title, TObject::kOverwrite);
02327 DisplacementSimple_2D[sid]->Write(TString(DisplacementSimple_2D[sid]->GetTitle())+title, TObject::kOverwrite);
02328 DisplacementSimple_1D[sid]->Write(TString(DisplacementSimple_1D[sid]->GetTitle())+title, TObject::kOverwrite);
02329 DisplacementSimple[sid]->Write(TString(DisplacementSimple[sid]->GetTitle())+title, TObject::kOverwrite);
02330 Displacement_2D[sid]->Write(TString(Displacement_2D[sid]->GetTitle())+title, TObject::kOverwrite);
02331 Displacement_1D[sid]->Write(TString(Displacement_1D[sid]->GetTitle())+title, TObject::kOverwrite);
02332 DisplacementPRF_1D[sid]->Write(TString(DisplacementPRF_1D[sid]->GetTitle())+title, TObject::kOverwrite);
02333 DisplacementHSS_1D[sid]->Write(TString(DisplacementHSS_1D[sid]->GetTitle())+title, TObject::kOverwrite);
02334 Displacement[sid]->Write(TString(Displacement[sid]->GetTitle())+title, TObject::kOverwrite);
02335 prf[sid]->Write(TString(prf[sid]->GetTitle())+title, TObject::kOverwrite);
02336 prfProfile[sid]->Write(TString(prfProfile[sid]->GetTitle())+title, TObject::kOverwrite);
02337 Alignment_2D[sid]->Write(TString(Alignment_2D[sid]->GetTitle())+title, TObject::kOverwrite);
02338 Alignment[sid]->Write(TString(Alignment[sid]->GetTitle())+title, TObject::kOverwrite);
02339 ResidualsTracking[sid]->Scale(1./ResidualsTracking[sid]->Integral());
02340 ResidualsTracking[sid]->GetYaxis()->SetRangeUser(0,0.05);
02341 ResidualsTracking[sid]->Write(TString(ResidualsTracking[sid]->GetTitle())+title, TObject::kOverwrite);
02342 ResidualsTrackingH[sid]->Scale(1./ResidualsTrackingH[sid]->Integral());
02343 ResidualsTrackingH[sid]->GetYaxis()->SetRangeUser(0,0.05);
02344 ResidualsTrackingH[sid]->Write(TString(ResidualsTrackingH[sid]->GetTitle())+title, TObject::kOverwrite);
02345 Residuals[sid]->Scale(1./ Residuals[sid]->Integral());
02346 Residuals[sid]->GetYaxis()->SetRangeUser(0,0.05);
02347 Residuals[sid]->Write(TString(Residuals[sid]->GetTitle())+title, TObject::kOverwrite);
02348 AlignmentSimple_2D[sid]->Write(TString(AlignmentSimple_2D[sid]->GetTitle())+title, TObject::kOverwrite);
02349 AlignmentSimple[sid]->Write(TString(AlignmentSimple[sid]->GetTitle())+title, TObject::kOverwrite);
02350 ResidualsSimple[sid]->Scale(1./ ResidualsSimple[sid]->Integral());
02351 ResidualsSimple[sid]->GetYaxis()->SetRangeUser(0,0.05);
02352 ResidualsSimple[sid]->Write(TString(ResidualsSimple[sid]->GetTitle())+title, TObject::kOverwrite);
02353 covaMatixValueClusterSize[sid]->Write(TString(covaMatixValueClusterSize[sid]->GetTitle())+title, TObject::kOverwrite);
02354 correlation_2D[sid][0]->Write(TString(correlation_2D[sid][0]->GetTitle())+title, TObject::kOverwrite);
02355 correlation_2D[sid][1]->Write(TString(correlation_2D[sid][1]->GetTitle())+title, TObject::kOverwrite);
02356 clusterSizeRatio[sid]->Write(TString(clusterSizeRatio[sid]->GetTitle())+title, TObject::kOverwrite);
02357 AlignmentHodo1Trd[sid]->Write(TString( AlignmentHodo1Trd[sid]->GetTitle())+title, TObject::kOverwrite);
02358 AlignmentHodo2Trd[sid]->Write(TString( AlignmentHodo2Trd[sid]->GetTitle())+title, TObject::kOverwrite);
02359 AlignmentHodo1Trd_1D[sid]->Write(TString( AlignmentHodo1Trd[sid]->GetTitle())+title, TObject::kOverwrite);
02360 AlignmentHodo2Trd_1D[sid]->Write(TString( AlignmentHodo2Trd[sid]->GetTitle())+title, TObject::kOverwrite);
02361 CorrelationHodo1Trd[sid]->Write(TString( CorrelationHodo1Trd[sid]->GetTitle())+title, TObject::kOverwrite);
02362 CorrelationHodo2Trd[sid]->Write(TString( CorrelationHodo2Trd[sid]->GetTitle())+title, TObject::kOverwrite);
02363 }
02364 for(Int_t i = 0; i < 4; i++){
02365 ResidualsEl[i]->Scale(1./ ResidualsEl[i]->Integral());
02366 ResidualsEl[i]->GetYaxis()->SetRangeUser(0,0.05);
02367 ResidualsEl[i]->Write(TString(ResidualsEl[i]->GetTitle())+title, TObject::kOverwrite);
02368 ResidualsPi[i]->Scale(1./ ResidualsPi[i]->Integral());
02369 ResidualsPi[i]->GetYaxis()->SetRangeUser(0,0.05);
02370 ResidualsPi[i]->Write(TString(ResidualsPi[i]->GetTitle())+title, TObject::kOverwrite);
02371 ResidualsMy[i]->Scale(1./ ResidualsMy[i]->Integral());
02372 ResidualsMy[i]->GetYaxis()->SetRangeUser(0,0.05);
02373 ResidualsMy[i]->Write(TString(ResidualsMy[i]->GetTitle())+title, TObject::kOverwrite);
02374 }
02375 if (first){
02376 TLegend *legPID = new TLegend(0.55,0.85-0.04*6,0.85,0.85);
02377 legPID->SetNColumns(2);
02378 legPID->SetLineColor(0);
02379 legPID->SetLineStyle(0);
02380 legPID->SetLineWidth(0);
02381 legPID->SetFillColor(0);
02382 legPID->SetFillStyle(0);
02383 legPID->SetTextSize(0.03);
02384 legPID->AddEntry((TObject*)0,"events:", "");
02385 name.Form("%7i",entries);
02386 legPID->AddEntry((TObject*)0, name, "");
02387 legPID->AddEntry((TObject*)0,"pions:", "");
02388 name.Form("%7i (%5.1f%%)",nPion,100.*nPion/entries);
02389 legPID->AddEntry((TObject*)0, name, "");
02390 legPID->AddEntry((TObject*)0,"electrons:", "");
02391 name.Form("%7i (%5.1f%%)",nElectron,100.*nElectron/entries);
02392 legPID->AddEntry((TObject*)0, name, "");
02393 legPID->AddEntry((TObject*)0,"myons:", "");
02394 name.Form("%7i (%5.1f%%)",nMyon,100.*nMyon/entries);
02395 legPID->AddEntry((TObject*)0, name, "");
02396 legPID->AddEntry((TObject*)0,"no PID:", "");
02397 name.Form("%7i (%5.1f%%)",entries-nPion-nElectron-nMyon-pidNoiseEvents,100.*(entries-nPion-nElectron-nMyon-pidNoiseEvents)/entries);
02398 legPID->AddEntry((TObject*)0, name, "");
02399 legPID->AddEntry((TObject*)0,"noise trigger:", "");
02400 name.Form("%7i (%5.1f%%)",pidNoiseEvents,100.*pidNoiseEvents/entries);
02401 legPID->AddEntry((TObject*)0, name, "");
02402 results->cd(1)->SetLogz(1);
02403 allCh1_Pb->DrawCopy("colz");
02404 legPID->Draw("same");
02405
02406 TBox *ElCut1 = new TBox(pidcuts[0], pidcuts[4], pidcuts[1], pidcuts[5]);
02407 ElCut1->SetLineStyle(1);
02408 ElCut1->SetLineWidth(1);
02409 ElCut1->SetFillStyle(0);
02410 ElCut1->Draw("same");
02411 TBox *PiCut1 = new TBox(pidcuts[6], pidcuts[10], pidcuts[7], pidcuts[11]);
02412 PiCut1->SetFillStyle(0);
02413 PiCut1->SetLineStyle(2);
02414 PiCut1->SetLineWidth(1);
02415 PiCut1->Draw("same");
02416 TBox *MyCut1 = new TBox(pidcuts[12], pidcuts[16], pidcuts[13], pidcuts[17]);
02417 MyCut1->SetLineStyle(3);
02418 MyCut1->SetFillStyle(0);
02419 MyCut1->SetLineWidth(1);
02420 MyCut1->Draw("same");
02421 results->cd(2)->SetLogz(1);
02422 allCh2_Pb->DrawCopy("colz");
02423
02424 TBox *ElCut2 = new TBox(pidcuts[2], pidcuts[4], pidcuts[3], pidcuts[5]);
02425 ElCut2->SetLineStyle(1);
02426 ElCut2->SetFillStyle(0);
02427 ElCut2->SetLineWidth(1);
02428 ElCut2->Draw("same");
02429 TBox *PiCut2 = new TBox(pidcuts[8], pidcuts[10], pidcuts[9], pidcuts[11]);
02430 PiCut2->SetFillStyle(0);
02431 PiCut2->SetLineStyle(2);
02432 PiCut2->SetLineWidth(1);
02433 PiCut2->Draw("same");
02434 TBox *MyCut2 = new TBox(pidcuts[14], pidcuts[16], pidcuts[15], pidcuts[17]);
02435 MyCut2->SetLineStyle(3);
02436 MyCut2->SetFillStyle(0);
02437 MyCut2->SetLineWidth(1);
02438 MyCut2->Draw("same");
02439 results->Write(TString("cCh_Pb")+title, TObject::kOverwrite);
02440 if (!fast) results->SaveAs(outpic+"_Ch_Pb.png");
02441 if (!fast) results->SaveAs(outpic+"_Ch_Pb.pdf");
02442 }
02443
02444 results2->cd(1);
02445 CorrelationHodo1Trd[0]->DrawCopy("colz");
02446 results2->cd(2);
02447 CorrelationHodo2Trd[0]->DrawCopy("colz");
02448 results2->cd(3);
02449 CorrelationHodo1Trd[1]->DrawCopy("colz");
02450 results2->cd(4);
02451 CorrelationHodo2Trd[1]->DrawCopy("colz");
02452 results2->Write(TString("c")+TString("CorrelationHodoTrd")+title, TObject::kOverwrite);
02453 if (!fast) results2->SaveAs(outpic+"_CorrelationHodoTrd.png");
02454 if (!fast) results2->SaveAs(outpic+"_CorrelationHodoTrd.pdf");
02455
02456 results1->cd(1);
02457 PadMax->DrawCopy("colz");
02458 results1->Write(TString("c")+TString(PadMax->GetTitle())+title, TObject::kOverwrite);
02459 if (!fast) results1->SaveAs(outpic+"_PadMax.png");
02460 if (!fast) results1->SaveAs(outpic+"_PadMax.pdf");
02461
02462 results->cd(1);
02463 CorrelationHodoX->DrawCopy("colz");
02464 results->cd(2);
02465 CorrelationHodoY->DrawCopy("colz");
02466 results->Write(TString("c")+TString("CorrelationHodo")+title, TObject::kOverwrite);
02467 if (!fast) results->SaveAs(outpic+"_HodoCorrelation.png");
02468 if (!fast) results->SaveAs(outpic+"_HodoCorrelation.pdf");
02469
02470 results2->cd(1);
02471 AngleHod->DrawCopy("colz");
02472 results2->cd(2);
02473 AngleX->DrawCopy("colz");
02474 results2->cd(3);
02475 AnglePositionX->DrawCopy("colz");
02476 results2->cd(4);
02477 AnglePositionY->DrawCopy("colz");
02478 results2->Write(TString("c")+TString("CorrelationAngle")+title, TObject::kOverwrite);
02479 if (!fast) results2->SaveAs(outpic+"_CorrelationAngle.png");
02480 if (!fast) results2->SaveAs(outpic+"_CorrelationAngle.pdf");
02481
02482 results->cd(1)->SetLogz(0);
02483 Hodo1->Draw("colz");
02484 results->cd(2)->SetLogz(0);
02485 Hodo2->Draw("colz");
02486 results->Write(TString("c")+TString("HodoBeamProfile")+title, TObject::kOverwrite);
02487 if (!fast) results->SaveAs(outpic+"_HodoBeamProfile.png");
02488 if (!fast) results->SaveAs(outpic+"_HodoBeamProfile.pdf");
02489
02490 results->cd(1)->SetLogz(0);
02491 AlignmentSimple_2D[0]->GetYaxis()->SetRangeUser(-maxD,maxD);
02492 AlignmentSimple_2D[0]->Draw("colz");
02493 AlignmentSimple[0]->Draw("PE,same");
02494 if (second){
02495 AlignmentSimple[0]->Fit("sinfit2","0NRQ");
02496 sinfit2->DrawCopy("same");
02497 } else {
02498 AlignmentSimple[0]->Fit("linfit","0NRQ");
02499 linfit->DrawCopy("same");
02500 }
02501 l0->Draw("same");
02502 l1->Draw("same");
02503 l2->Draw("same");
02504 l3->Draw("same");
02505 l4->Draw("same");
02506 l5->Draw("same");
02507 l6->Draw("same");
02508 results->cd(2)->SetLogz(0);
02509 ResidualsSimple[0]->GetXaxis()->SetRangeUser(-maxD,maxD);
02510 ResidualsSimple[0]->Draw();
02511 ResidualsSimple[0]->Fit("gauss","0Q","",ResidualsSimple[0]->GetMean()-ResidualsSimple[0]->GetRMS(),ResidualsSimple[0]->GetMean()+ResidualsSimple[0]->GetRMS());
02512 gfit->DrawCopy("same");
02513 name.Form("#sigma/#sqrt{2}: %.3f#pm%.3f mm",gfit->GetParameter(2)/TMath::Sqrt(2.), gfit->GetParError(2)/TMath::Sqrt(2.));
02514
02515 leg->AddEntry(gfit,name,"l");
02516 leg->Draw("same");
02517 results->Write(TString("c")+TString(DisplacementSimple[0]->GetTitle())+title, TObject::kOverwrite);
02518 if (!fast) results->SaveAs(outpic+"_sResiduals.png");
02519 if (!fast) results->SaveAs(outpic+"_sResiduals.pdf");
02520 leg->Clear();
02521
02522 results->cd(1);
02523 AlignmentSimple_2D[1]->GetYaxis()->SetRangeUser(-maxD,maxD);
02524 AlignmentSimple_2D[1]->Draw("colz");
02525 AlignmentSimple[1]->Draw("PE,same");
02526 if (second){
02527 AlignmentSimple[1]->Fit("sinfit2","0NRQ");
02528 sinfit2->DrawCopy("same");
02529 } else {
02530 AlignmentSimple[1]->Fit("linfit","0NRQ");
02531 linfit->DrawCopy("same");
02532 }
02533 l0->Draw("same");
02534 l1->Draw("same");
02535 l2->Draw("same");
02536 l3->Draw("same");
02537 l4->Draw("same");
02538 l5->Draw("same");
02539 l6->Draw("same");
02540 results->cd(2);
02541 ResidualsSimple[1]->GetXaxis()->SetRangeUser(-maxD,maxD);
02542 ResidualsSimple[1]->Draw();
02543 ResidualsSimple[1]->Fit("gauss","0Q","",ResidualsSimple[1]->GetMean()-ResidualsSimple[1]->GetRMS(),ResidualsSimple[1]->GetMean()+ResidualsSimple[1]->GetRMS());
02544 gfit->DrawCopy("same");
02545 name.Form("#sigma/#sqrt{2}: %.3f#pm%.3f mm",gfit->GetParameter(2)/TMath::Sqrt(2.), gfit->GetParError(2)/TMath::Sqrt(2.));
02546
02547 leg->AddEntry(gfit,name,"l");
02548 leg->Draw("same");
02549 results->Write(TString("c_HSS")+TString(DisplacementSimple[1]->GetTitle())+title, TObject::kOverwrite);
02550 if (!fast) results->SaveAs(outpic+"_sResiduals_HSS.png");
02551 if (!fast) results->SaveAs(outpic+"_sResiduals_HSS.pdf");
02552 leg->Clear();
02553
02554 results->cd(1);
02555 Alignment_2D[0]->GetYaxis()->SetRangeUser(-maxD,maxD);
02556 Alignment_2D[0]->DrawCopy("colz");
02557 Alignment[0]->DrawCopy("PE,same");
02558 if (second){
02559 Alignment[0]->Fit("sinfit2","0NRQ");
02560 sinfit2->DrawCopy("same");
02561 } else {
02562 Alignment[0]->Fit("linfit","0NRQ");
02563 linfit->DrawCopy("same");
02564 }
02565 l0->Draw("same");
02566 l1->Draw("same");
02567 l2->Draw("same");
02568 l3->Draw("same");
02569 l4->Draw("same");
02570 l5->Draw("same");
02571 l6->Draw("same");
02572 results->cd(2);
02573 Residuals[0]->GetXaxis()->SetRangeUser(-maxD,maxD);
02574 Residuals[0]->Draw();
02575 Residuals[0]->Fit("gauss","0Q","",Residuals[0]->GetMean()-Residuals[0]->GetRMS(),Residuals[0]->GetMean()+Residuals[0]->GetRMS());
02576 gfit->DrawCopy("same");
02577 name.Form("#sigma/#sqrt{2}: %.3f#pm%.3f mm",gfit->GetParameter(2)/TMath::Sqrt(2.), gfit->GetParError(2)/TMath::Sqrt(2.));
02578
02579 leg->AddEntry(gfit,name,"l");
02580 leg->Draw("same");
02581 results->Write(TString("c")+TString(Displacement[0]->GetTitle())+title, TObject::kOverwrite);
02582 if (!fast) results->SaveAs(outpic+"_Residuals.png");
02583 if (!fast) results->SaveAs(outpic+"_Residuals.pdf");
02584 leg->Clear();
02585
02586 results->cd(1);
02587 Alignment_2D[1]->GetYaxis()->SetRangeUser(-maxD,maxD);
02588 Alignment_2D[1]->DrawCopy("colz");
02589 Alignment[1]->DrawCopy("PE,same");
02590 if (second){
02591 Alignment[1]->Fit("sinfit2","0NRQ");
02592 sinfit2->DrawCopy("same");
02593 } else {
02594 Alignment[1]->Fit("linfit","0NRQ");
02595 linfit->DrawCopy("same");
02596 }
02597 l0->Draw("same");
02598 l1->Draw("same");
02599 l2->Draw("same");
02600 l3->Draw("same");
02601 l4->Draw("same");
02602 l5->Draw("same");
02603 l6->Draw("same");
02604 results->cd(2);
02605 Residuals[1]->GetXaxis()->SetRangeUser(-maxD,maxD);
02606 Residuals[1]->Draw();
02607 Residuals[1]->Fit("gauss","0Q","",Residuals[1]->GetMean()-Residuals[1]->GetRMS(),Residuals[1]->GetMean()+Residuals[1]->GetRMS());
02608 gfit->DrawCopy("same");
02609 name.Form("#sigma/#sqrt{2}: %.3f#pm%.3f mm",gfit->GetParameter(2)/TMath::Sqrt(2.), gfit->GetParError(2)/TMath::Sqrt(2.));
02610
02611 leg->AddEntry(gfit,name,"l");
02612 leg->Draw("same");
02613 results->Write(TString("c_PRF")+TString(Displacement[1]->GetTitle())+title, TObject::kOverwrite);
02614 if (!fast) results->SaveAs(outpic+"_Residuals_PRF.png");
02615 if (!fast) results->SaveAs(outpic+"_Residuals_PRF.pdf");
02616 leg->Clear();
02617
02618 results->cd(1)->SetLogz(1);
02619 prf[0]->DrawCopy("colz");
02620 prfProfile[0]->DrawCopy("same");
02621
02622
02623 prfProfile[0]->Fit("mathiesonFit","0RQ");
02624 TLegend lPRF1(0.12,0.85-6*0.04,0.4,0.85);
02625 lPRF1.SetNColumns(3);
02626 lPRF1.SetFillStyle(0);
02627 lPRF1.SetTextSize(0.035);
02628 lPRF1.SetLineStyle(0);
02629 lPRF1.SetLineColor(0);
02630 lPRF1.AddEntry((TObject*)0,"","");
02631 lPRF1.AddEntry(mathiesonFit,"Fit:","l");
02632 lPRF1.AddEntry(mathieson,"Theory:","l");
02633 lPRF1.AddEntry((TObject*)0,"K_{3}:","");
02634 name.Form("%.2f",-0.245 * (mathiesonFit->GetParameter(0)/mathiesonFit->GetParameter(2)) + (-20.19*(mathiesonFit->GetParameter(1)/mathiesonFit->GetParameter(2))+0.85));
02635 lPRF1.AddEntry((TObject*)0,name,"");
02636 name.Form("%.2f",K3);
02637 lPRF1.AddEntry((TObject*)0,name,"");
02638
02639 lPRF1.AddEntry((TObject*)0,"h:","");
02640 name.Form("%.2fmm",mathiesonFit->GetParameter(0));
02641 lPRF1.AddEntry((TObject*)0,name,"");
02642 name.Form("%.2fmm",h[0]);
02643 lPRF1.AddEntry((TObject*)0,name,"");
02644
02645 lPRF1.AddEntry((TObject*)0,"r_{a}:","");
02646 name.Form("%.2f#mum",mathiesonFit->GetParameter(1)*1000);
02647 lPRF1.AddEntry((TObject*)0,name,"");
02648 name.Form("%.2f#mum",r_a*1000);
02649 lPRF1.AddEntry((TObject*)0,name,"");
02650
02651 lPRF1.AddEntry((TObject*)0,"s:","");
02652 name.Form("%.2fmm",mathiesonFit->GetParameter(2));
02653 lPRF1.AddEntry((TObject*)0,name,"");
02654 name.Form("%.2fmm",s);
02655 lPRF1.AddEntry((TObject*)0,name,"");
02656
02657 lPRF1.AddEntry((TObject*)0,"#frac{#chi^{2}}{NDF}:","");
02658 name.Form("%.1f",mathiesonFit->GetChisquare()/mathiesonFit->GetNDF());
02659 lPRF1.AddEntry((TObject*)0,name,"");
02660
02661
02662
02663
02664
02665
02666
02667
02668
02669
02670
02671
02672
02673
02674
02675
02676
02677
02678
02679
02680
02681
02682
02683
02684
02685
02686
02687
02688
02689
02690
02691
02692
02693
02694 mathiesonFit->DrawCopy("same");
02695 mathieson->DrawCopy("same");
02696 lPRF1.Draw("same");
02697 results->cd(2)->SetLogz(1);
02698 prf[1]->DrawCopy("colz");
02699 prfProfile[1]->DrawCopy("same");
02700 prfProfile[1]->Fit("mathiesonFit","0RQ");
02701
02702 TLegend lPRF2(0.12,0.85-6*0.04,0.4,0.85);
02703 lPRF2.SetNColumns(3);
02704 lPRF2.SetFillStyle(0);
02705 lPRF2.SetTextSize(0.035);
02706 lPRF2.SetLineStyle(0);
02707 lPRF2.SetLineColor(0);
02708 lPRF2.AddEntry((TObject*)0,"","");
02709 lPRF2.AddEntry(mathiesonFit,"Fit:","l");
02710 lPRF2.AddEntry(mathieson,"Theory:","l");
02711 lPRF2.AddEntry((TObject*)0,"K_{3}:","");
02712 name.Form("%.2f",-0.245 * (mathiesonFit->GetParameter(0)/mathiesonFit->GetParameter(2)) + (-20.19*(mathiesonFit->GetParameter(1)/mathiesonFit->GetParameter(2))+0.85));
02713 lPRF2.AddEntry((TObject*)0,name,"");
02714 name.Form("%.2f",K3);
02715 lPRF2.AddEntry((TObject*)0,name,"");
02716
02717 lPRF2.AddEntry((TObject*)0,"h:","");
02718 name.Form("%.2fmm",mathiesonFit->GetParameter(0));
02719 lPRF2.AddEntry((TObject*)0,name,"");
02720 name.Form("%.2fmm",h[0]);
02721 lPRF2.AddEntry((TObject*)0,name,"");
02722
02723 lPRF2.AddEntry((TObject*)0,"r_{a}:","");
02724 name.Form("%.2f#mum",mathiesonFit->GetParameter(1)*1000);
02725 lPRF2.AddEntry((TObject*)0,name,"");
02726 name.Form("%.2f#mum",r_a*1000);
02727 lPRF2.AddEntry((TObject*)0,name,"");
02728
02729 lPRF2.AddEntry((TObject*)0,"s:","");
02730 name.Form("%.2fmm",mathiesonFit->GetParameter(2));
02731 lPRF2.AddEntry((TObject*)0,name,"");
02732 name.Form("%.2fmm",s);
02733 lPRF2.AddEntry((TObject*)0,name,"");
02734
02735 lPRF2.AddEntry((TObject*)0,"#frac{#chi^{2}}{NDF}:","");
02736 name.Form("%.1f",mathiesonFit->GetChisquare()/mathiesonFit->GetNDF());
02737 lPRF2.AddEntry((TObject*)0,name,"");
02738
02739
02740
02741
02742
02743
02744
02745
02746
02747
02748
02749
02750
02751
02752
02753
02754
02755
02756
02757
02758
02759
02760
02761
02762
02763
02764
02765
02766
02767
02768
02769
02770
02771
02772
02773
02774
02775
02776
02777
02778
02779
02780
02781
02782
02783
02784
02785
02786 mathiesonFit->DrawCopy("same");
02787 mathieson->DrawCopy("same");
02788 lPRF2.Draw("same");
02789 results->Write(TString("c")+TString(prf[0]->GetTitle())+title, TObject::kOverwrite);
02790 if (!fast) results->SaveAs(outpic+"_PRF.png");
02791 if (!fast) results->SaveAs(outpic+"_PRF.pdf");
02792
02793 results->cd(1)->SetLogz(0);
02794 Displacement_Charge[0]->DrawCopy("colz");
02795 results->cd(2)->SetLogz(0);
02796 Displacement_Charge[1]->DrawCopy("colz");
02797 results->Write(TString("c")+TString(Displacement_Charge[0]->GetTitle())+title, TObject::kOverwrite);
02798 if (!fast) results->SaveAs(outpic+"_Displacement_Charge.png");
02799 if (!fast) results->SaveAs(outpic+"_Displacement_Charge.pdf");
02800
02801 results->cd(1)->SetLogz(0);
02802 baselineDistribution[0]->DrawCopy("colz");
02803 results->cd(2)->SetLogz(0);
02804 baselineDistribution[1]->DrawCopy("colz");
02805 results->Write(TString("c")+TString(baselineDistribution[0]->GetTitle())+title, TObject::kOverwrite);
02806 if (!fast) results->SaveAs(outpic+"_baselineDistribution.png");
02807 if (!fast) results->SaveAs(outpic+"_baselineDistribution.pdf");
02808
02809 results->cd(1)->SetLogz(0);
02810 clusterSize[0]->DrawCopy("");
02811 results->cd(2)->SetLogz(0);
02812 clusterSize[1]->DrawCopy("");
02813 results->Write(TString("c")+TString(clusterSize[0]->GetTitle())+title, TObject::kOverwrite);
02814 if (!fast) results->SaveAs(outpic+"_clusterSize.png");
02815 if (!fast) results->SaveAs(outpic+"_clusterSize.pdf");
02816
02817 results->cd(1)->SetLogy(1);
02818 maxAmplitudeValue[0]->DrawCopy("");
02819 results->cd(2)->SetLogy(1);
02820 maxAmplitudeValue[1]->DrawCopy("");
02821 results->Write(TString("c")+TString(maxAmplitudeValue[0]->GetTitle())+title, TObject::kOverwrite);
02822 if (!fast) results->SaveAs(outpic+"_maxAmplitudeValue.png");
02823 if (!fast) results->SaveAs(outpic+"_maxAmplitudeValue.pdf");
02824
02825 results->cd(1)->SetLogy(0);
02826 results->cd(1)->SetLogz(1);
02827 maxAmplitudeHitTime[0]->DrawCopy("colz");
02828 results->cd(2)->SetLogy(0);
02829 results->cd(2)->SetLogz(1);
02830 maxAmplitudeHitTime[1]->DrawCopy("colz");
02831 results->Write(TString("c")+TString(maxAmplitudeHitTime[0]->GetTitle())+title, TObject::kOverwrite);
02832 if (!fast) results->SaveAs(outpic+"_maxAmplitudeHitTime_.png");
02833 if (!fast) results->SaveAs(outpic+"_maxAmplitudeHitTime_.pdf");
02834
02835 results->cd(1)->SetLogy(1);
02836 results->cd(1)->SetLogz(0);
02837 covaMatixValue[0]->DrawCopy("");
02838
02839 results->cd(2)->SetLogy(1);
02840 results->cd(2)->SetLogz(0);
02841 covaMatixValue[1]->DrawCopy("");
02842 results->Write(TString("c")+TString(covaMatixValue[0]->GetTitle())+title, TObject::kOverwrite);
02843 if (!fast) results->SaveAs(outpic+"_covaMatixValue_.png");
02844 if (!fast) results->SaveAs(outpic+"_covaMatixValue_.pdf");
02845
02846 results->cd(1)->SetLogy(0);
02847 results->cd(1)->SetLogz(1);
02848 covaMatixValueMaxAmplitude[0]->DrawCopy("colz");
02849 results->cd(2)->SetLogy(0);
02850 results->cd(2)->SetLogz(1);
02851 covaMatixValueMaxAmplitude[1]->DrawCopy("colz");
02852 results->Write(TString("c")+TString(covaMatixValueMaxAmplitude[0]->GetTitle())+title, TObject::kOverwrite);
02853 if (!fast) results->SaveAs(outpic+"_covaMatixValueMaxAmplitude_.png");
02854 if (!fast) results->SaveAs(outpic+"_covaMatixValueMaxAmplitude_.pdf");
02855
02856 results->cd(1)->SetLogz(1);
02857 covaMatixValueHitTime[0]->DrawCopy("colz");
02858 results->cd(2)->SetLogz(1);
02859 covaMatixValueHitTime[1]->DrawCopy("colz");
02860 results->Write(TString("c")+TString(covaMatixValueHitTime[0]->GetTitle())+title, TObject::kOverwrite);
02861 if (!fast) results->SaveAs(outpic+"_covaMatixValueHitTime_.png");
02862 if (!fast) results->SaveAs(outpic+"_covaMatixValueHitTime_.pdf");
02863
02864 results->cd(1)->SetLogz(0);
02865 signalChDistance[0]->DrawCopy("");
02866 results->cd(2)->SetLogz(0);
02867 signalChDistance[1]->DrawCopy("");
02868 results->Write(TString("c")+TString(signalChDistance[0]->GetTitle())+title, TObject::kOverwrite);
02869 if (!fast) results->SaveAs(outpic+"_signalChDistance_.png");
02870 if (!fast) results->SaveAs(outpic+"_signalChDistance_.pdf");
02871
02872 results->cd(1)->SetLogz(1);
02873
02874 averageSignal_2D[0]->DrawCopy("colz");
02875 results->cd(2)->SetLogz(1);
02876
02877 averageSignal_2D[1]->DrawCopy("colz");
02878 results->Write(TString("c")+TString(averageSignal_2D[0]->GetTitle())+title, TObject::kOverwrite);
02879 if (!fast) results->SaveAs(outpic+"_averageSignal_2D_.png");
02880 if (!fast) results->SaveAs(outpic+"_averageSignal_2D_.pdf");
02881
02882 results->cd(1)->SetLogz(1);
02883
02884 averageNoise_2D[0]->DrawCopy("colz");
02885 results->cd(2)->SetLogz(1);
02886
02887 averageNoise_2D[1]->DrawCopy("colz");
02888 results->Write(TString("c")+TString(averageNoise_2D[0]->GetTitle())+title, TObject::kOverwrite);
02889 if (!fast) results->SaveAs(outpic+"_averageNoise_2D_.png");
02890 if (!fast) results->SaveAs(outpic+"_averageNoise_2D_.pdf");
02891
02892 results->cd(1)->SetLogz(0);
02893 noiseDistribution[0]->GetXaxis()->SetRangeUser(-20,20);
02894 noiseDistribution[0]->DrawCopy("");
02895 results->cd(2)->SetLogz(0);
02896 noiseDistribution[1]->GetXaxis()->SetRangeUser(-20,20);
02897 noiseDistribution[1]->DrawCopy("");
02898 results->Write(TString("c")+TString(noiseDistribution[0]->GetTitle())+title, TObject::kOverwrite);
02899 if (!fast) results->SaveAs(outpic+"_noiseDistribution_.png");
02900 if (!fast) results->SaveAs(outpic+"_noiseDistribution_.pdf");
02901
02902 results->cd(1)->SetLogz(1);
02903 covaMatixValueClusterSize[0]->DrawCopy("colz");
02904 results->cd(2)->SetLogz(1);
02905 covaMatixValueClusterSize[1]->DrawCopy("colz");
02906 results->Write(TString("c")+TString(covaMatixValueClusterSize[0]->GetTitle())+title, TObject::kOverwrite);
02907 if (!fast) results->SaveAs(outpic+"_covaMatixValueClusterSize.png");
02908 if (!fast) results->SaveAs(outpic+"_covaMatixValueClusterSize.pdf");
02909
02910 results2->cd(1)->SetLogz(1);
02911 TLine *lineH[NUM_SPADIC_CHA] = {NULL};
02912 TLine *lineV[NUM_SPADIC_CHA] = {NULL};
02913 for (Int_t ch = 0; ch < NUM_SPADIC_CHA; ch++){
02914 lineH[ch] = new TLine(-0.5*padWidth[0], ch*padWidth[0]-0.5*padWidth[0], (NUM_SPADIC_CHA-1)*padWidth[0]-0.5*padWidth[0], ch*padWidth[0]-0.5*padWidth[0]);
02915 lineH[ch]->SetLineWidth(1.);
02916 lineV[ch] = new TLine(ch*padWidth[0]-0.5*padWidth[0], -0.5*padWidth[0], ch*padWidth[0]-0.5*padWidth[0], (NUM_SPADIC_CHA-1)*padWidth[0]-0.5*padWidth[0]);
02917 lineV[ch]->SetLineWidth(1.);
02918 }
02919 Int_t maxZ = correlation_2D[0][0]->GetBinContent(correlation_2D[0][0]->GetMaximumBin());
02920 correlation_2D[1][0]->GetZaxis()->SetRangeUser(0,maxZ);
02921 correlation_2D[1][0]->DrawCopy("AXIS");
02922 for (Int_t ch = 0; ch < NUM_SPADIC_CHA; ch++){
02923 lineH[ch]->Draw("same");
02924 lineV[ch]->Draw("same");
02925 }
02926 correlation_2D[1][0]->DrawCopy("colz");
02927
02928 results2->cd(2)->SetLogz(1);
02929 correlation_2D[0][0]->GetZaxis()->SetRangeUser(0,maxZ);
02930 correlation_2D[0][0]->DrawCopy("AXIS");
02931 for (Int_t ch = 0; ch < NUM_SPADIC_CHA; ch++){
02932 lineH[ch]->Draw("same");
02933 lineV[ch]->Draw("same");
02934 }
02935 correlation_2D[0][0]->DrawCopy("colz");
02936
02937 results2->cd(3)->SetLogz(1);
02938 correlation_2D[1][1]->GetZaxis()->SetRangeUser(0,maxZ);
02939 correlation_2D[1][1]->DrawCopy("AXIS");
02940 for (Int_t ch = 0; ch < NUM_SPADIC_CHA; ch++){
02941 lineH[ch]->Draw("same");
02942 lineV[ch]->Draw("same");
02943 }
02944 correlation_2D[1][1]->DrawCopy("colz");
02945
02946 results2->cd(4)->SetLogz(1);
02947 correlation_2D[0][1]->GetZaxis()->SetRangeUser(0,maxZ);
02948 correlation_2D[0][1]->DrawCopy("AXIS");
02949 for (Int_t ch = 0; ch < NUM_SPADIC_CHA; ch++){
02950 lineH[ch]->Draw("same");
02951 lineV[ch]->Draw("same");
02952 }
02953 correlation_2D[0][1]->DrawCopy("colz");
02954
02955 results2->Write(TString("c")+TString(correlation_2D[0][0]->GetTitle())+title, TObject::kOverwrite);
02956 if (!fast) results2->SaveAs(outpic+"_correlation_2D.png");
02957 if (!fast) results2->SaveAs(outpic+"_correlation_2D.pdf");
02958
02959 results->cd(1)->SetLogz(0);
02960 clusterSizeRatio[0]->DrawCopy("colz");
02961 results->cd(2)->SetLogz(0);
02962 clusterSizeRatio[1]->DrawCopy("colz");
02963 results->Write(TString("c")+TString(clusterSizeRatio[0]->GetTitle())+title, TObject::kOverwrite);
02964 if (!fast) results->SaveAs(outpic+"_clusterSizeRatio.png");
02965 if (!fast) results->SaveAs(outpic+"_clusterSizeRatio.pdf");
02966
02967 results1->cd(1);
02968 clusterSize[0]->DrawCopy("");
02969 clusterSize[1]->SetLineStyle(2);
02970 clusterSize[1]->DrawCopy("same");
02971 results1->Write(TString("c")+TString(clusterSize[0]->GetTitle())+TString("_single")+title, TObject::kOverwrite);
02972 if (!fast) results1->SaveAs(outpic+"_clusterSize_single.png");
02973 if (!fast) results1->SaveAs(outpic+"_clusterSize_single.pdf");
02974
02975
02976
02977 results1->cd(1)->SetLogz(1);
02978 correlation_2D[0][0]->DrawCopy("colz");
02979 results1->Write(TString("c")+TString(correlation_2D[0][0]->GetTitle())+TString("_single")+title, TObject::kOverwrite);
02980 if (!fast) results1->SaveAs(outpic+"_correlation_2D_single.png");
02981 if (!fast) results1->SaveAs(outpic+"_correlation_2D_single.pdf");
02982
02983 results1->cd(1)->SetLogz(1);
02984 correlation_2D[1][0]->DrawCopy("colz");
02985 results1->Write(TString("c")+TString(correlation_2D[1][0]->GetTitle())+TString("_single")+title, TObject::kOverwrite);
02986 if (!fast) results1->SaveAs(outpic+"_s_correlation_2D_single.png");
02987 if (!fast) results1->SaveAs(outpic+"_s_correlation_2D_single.pdf");
02988
02989 results->cd(1)->SetLogz(0);
02990 Displacement_1D[0]->DrawCopy("");
02991 DisplacementPRF_1D[0]->SetLineColor(kRed );
02992 DisplacementPRF_1D[0]->DrawCopy("same");
02993 DisplacementHSS_1D[0]->SetLineColor(kBlue);
02994 DisplacementHSS_1D[0]->DrawCopy("same");
02995 DisplacementSimple_1D[0]->SetLineColor(kGreen);
02996 DisplacementSimple_1D[0]->DrawCopy("same");
02997
02998 results->cd(2)->SetLogz(0);
02999 Displacement_1D[1]->DrawCopy("");
03000 DisplacementPRF_1D[1]->SetLineColor(kRed );
03001 DisplacementPRF_1D[1]->DrawCopy("same");
03002 DisplacementHSS_1D[1]->SetLineColor(kBlue);
03003 DisplacementHSS_1D[1]->DrawCopy("same");
03004 DisplacementSimple_1D[1]->SetLineColor(kGreen);
03005 DisplacementSimple_1D[1]->DrawCopy("same");
03006
03007 results->Write(TString("c")+TString(Displacement_1D[0]->GetTitle())+TString("_single")+title, TObject::kOverwrite);
03008 if (!fast) results->SaveAs(outpic+"_displacement_single.png");
03009 if (!fast) results->SaveAs(outpic+"_displacement_single.pdf");
03010
03011
03012 }
03013
03014 if (first)
03015 name = "c_first";
03016 else if (second)
03017 name = "c_second";
03018 else if (third)
03019 name = "c_third";
03020 else if (fourth)
03021 name = "_fourth";
03022 else if (fifth)
03023 name = "_fifth";
03024 else if (sixth)
03025 name = "_sixth";
03026 else
03027 name = "_last";
03028 TCanvas *c = new TCanvas(name,name,2*800,1.5*600);
03029 c->Divide(4,4);
03030 c->cd(1);
03031 Alignment_2D[0]->GetYaxis()->SetRangeUser(-10,10);
03032 Alignment_2D[0]->DrawCopy("colz");
03033 Alignment[0]->DrawCopy("PE,same");
03034 if (second){
03035 Alignment[0]->Fit("sinfit2","0NRQ");
03036 sinfit2->DrawCopy("same");
03037 } else {
03038 Alignment[0]->Fit("linfit","0RQ");
03039 linfit->DrawCopy("same");
03040 }
03041 l0->Draw("same");
03042 l1->Draw("same");
03043 l2->Draw("same");
03044 l3->Draw("same");
03045 l4->Draw("same");
03046 l5->Draw("same");
03047 l6->Draw("same");
03048
03049 c->cd(2);
03050 Residuals[0]->DrawCopy();
03051 Residuals[0]->Fit("gauss","R0Q");
03052 gfit->DrawCopy("same");
03053 name.Form("pr: %.3f#pm%.3f mm",gfit->GetParameter(2)/TMath::Sqrt(2.), gfit->GetParError(2)/TMath::Sqrt(2.));
03054
03055 leg->AddEntry(gfit,name,"l");
03056 leg->Draw("same");
03057 c->cd(3);
03058 AlignmentSimple_2D[0]->GetYaxis()->SetRangeUser(-10,10);
03059 AlignmentSimple_2D[0]->DrawCopy("colz");
03060 AlignmentSimple[0]->DrawCopy("PE,same");
03061 AlignmentSimple[0]->Fit("linfit","0NRQ");
03062 linfit->DrawCopy("same");
03063 l0->Draw("same");
03064 l1->Draw("same");
03065 l2->Draw("same");
03066 l3->Draw("same");
03067 l4->Draw("same");
03068 l5->Draw("same");
03069 l6->Draw("same");
03070
03071 c->cd(4);
03072 ResidualsSimple[0]->DrawCopy();
03073 ResidualsSimple[0]->Fit("gauss","R0Q");
03074 gfit->DrawCopy("same");
03075 name.Form("pr: %.3f#pm%.3f mm",gfit->GetParameter(2)/TMath::Sqrt(2.), gfit->GetParError(2)/TMath::Sqrt(2.));
03076
03077 leg->AddEntry(gfit,name,"l");
03078 leg->Draw("same");
03079 c->cd(5);
03080 Alignment_2D[1]->GetYaxis()->SetRangeUser(-10,10);
03081 Alignment_2D[1]->DrawCopy("colz");
03082 Alignment[1]->DrawCopy("PE,same");
03083 if (second){
03084 Alignment[1]->Fit("sinfit2","0NRQ");
03085 sinfit2->DrawCopy("same");
03086 } else {
03087 Alignment[1]->Fit("linfit","0RQ");
03088 linfit->DrawCopy("same");
03089 }
03090 l0->Draw("same");
03091 l1->Draw("same");
03092 l2->Draw("same");
03093 l3->Draw("same");
03094 l4->Draw("same");
03095 l5->Draw("same");
03096 l6->Draw("same");
03097
03098 c->cd(6);
03099 Residuals[1]->DrawCopy();
03100 Residuals[1]->Fit("gauss","R0Q");
03101 gfit->DrawCopy("same");
03102 name.Form("pr: %.3f#pm%.3f mm",gfit->GetParameter(2)/TMath::Sqrt(2.), gfit->GetParError(2)/TMath::Sqrt(2.));
03103
03104 leg->AddEntry(gfit,name,"l");
03105 leg->Draw("same");
03106 c->cd(7);
03107 AlignmentSimple_2D[1]->GetYaxis()->SetRangeUser(-10,10);
03108 AlignmentSimple_2D[1]->DrawCopy("colz");
03109 AlignmentSimple[1]->DrawCopy("PE,same");
03110 AlignmentSimple[1]->Fit("linfit","0RQ");
03111 linfit->DrawCopy("same");
03112 l0->Draw("same");
03113 l1->Draw("same");
03114 l2->Draw("same");
03115 l3->Draw("same");
03116 l4->Draw("same");
03117 l5->Draw("same");
03118 l6->Draw("same");
03119
03120 c->cd(8);
03121 ResidualsSimple[1]->DrawCopy();
03122 ResidualsSimple[1]->Fit("gauss","R0Q");
03123 gfit->DrawCopy("same");
03124 name.Form("pr: %.3f#pm%.3f mm",gfit->GetParameter(2)/TMath::Sqrt(2.), gfit->GetParError(2)/TMath::Sqrt(2.));
03125
03126 leg->AddEntry(gfit,name,"l");
03127 leg->Draw("same");
03128 c->cd(9);
03129 PadMax->DrawCopy("colz");
03130 c->cd(9)->SetLogz(1);
03131 prf[0]->DrawCopy("colz");
03132 prfProfile[0]->DrawCopy("same");
03133
03134
03135 prfProfile[0]->Fit("mathiesonFit","0RQ");
03136
03137 mathiesonFit->DrawCopy("same");
03138 mathieson->DrawCopy("same");
03139 prfProfile[0]->Fit("gausPRF","R0Q");
03140 gPRFfit->DrawCopy("same");
03141 c->cd(10)->SetLogz(1);
03142 prf[1]->DrawCopy("colz");
03143 prfProfile[1]->DrawCopy("same");
03144 prfProfile[1]->Fit("mathiesonFit","0RQ");
03145
03146 mathiesonFit->DrawCopy("same");
03147 mathieson->DrawCopy("same");
03148 prfProfile[1]->Fit("gausPRF","R0Q");
03149 gPRFfit->DrawCopy("same");
03150 c->cd(11);
03151 Displacement_2D[0]->DrawCopy("colz");
03152 Displacement[0]->DrawCopy("PE,same");
03153 Displacement[0]->Fit("sinfit","RQ0");
03154 sinfit->DrawCopy("same");
03155 c->cd(12);
03156 DisplacementSimple_2D[0]->DrawCopy("colz");
03157 DisplacementSimple[0]->DrawCopy("PE,same");
03158 DisplacementSimple[0]->Fit("sinfit","RQ0");
03159 sinfit->DrawCopy("same");
03160 c->cd(13);
03161 DisplacementSimple_Charge[0]->DrawCopy("colz");
03162 c->cd(14);
03163 Displacement_Charge[0]->DrawCopy("colz");
03164 c->cd(15);
03165 Displacement_1D[1]->SetLineColor(kGray);
03166 Displacement_1D[1]->DrawCopy("");
03167 Displacement_1D[0]->DrawCopy("same");
03168 c->cd(16);
03169 DisplacementSimple_1D[1]->SetLineColor(kGray);
03170 DisplacementSimple_1D[1]->DrawCopy("");
03171 DisplacementSimple_1D[0]->DrawCopy("same");
03172
03173 c->Update();
03174 if (!fast) c->SaveAs(outpic+"_PR.png");
03175 if (!fast) c->SaveAs(outpic+"_PR.pdf");
03176 if (output->IsOpen()){
03177 output->cd();
03178 c->Write(TString(c->GetTitle()), TObject::kOverwrite);
03179 }
03180 output->Close();
03181
03182 }