• Main Page
  • Related Pages
  • Namespaces
  • Data Structures
  • Files
  • File List
  • Globals

beamtime/cern-oct12/go4/AnalysisMacros/spadic_pr_Analysis.cxx (r4864/r4848)

Go to the documentation of this file.
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   //(xHTrack[0] - (trackfit->GetParameter(0) * zHod1 + trackfit->GetParameter(1))) / TMath::Sqrt((eHod1 * eHod1) - (sigmaFit * sigmaFit))
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)// to compensate systematic chift of the average due to rhombus shape of the th2 distribution
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     //cout << "file found: " << filename << endl;
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; // we take first Tree in file, disregarding its name...
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){//[mm]
00088   Double_t HodoDistanceZ = 7505.0;//[mm]
00089   return TMath::ATan((x1 - x2) / HodoDistanceZ) / TMath::Pi() * 180.;
00090 }
00091 Double_t CalcAngleMsTrd(Double_t x1, Double_t x2){//[mm]
00092   Double_t TrdDistanceZ = 570.0;//[mm]
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 zHod2*/, const Double_t zTRD1, const Double_t zTRD2){
00096  
00097   //return x2 - (track->GetParameter(0) * zTRD2 + track->GetParameter(1));// absolute displacment of chambers with respect to track
00098   return x2 - (track->GetParameter(0) * (zTRD2 - zTRD1));// only relative displacment due to track angle
00099   //return x2;
00100 }
00101 
00102 TGraphErrors *fTracking = new TGraphErrors();//NULL;
00103 
00104 void spadic_pr_Analysis(TString filename=/*"data2011/TTrees/Be_run2110020.root"*/"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);                         //<-- tic marks on all axes
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   //spadic_noise_Analysis();
00134   const Double_t bins_mm =  5.;
00135   const Int_t usedSusibos = 5;
00136 
00137   //-----------Tracking--------------
00138   const Double_t zHod1 =    0.1; //[mm]
00139   const Double_t zHod2 = 7505.0;//[mm]
00140   const Double_t zTRD1 = 3385.0;//[mm]
00141   Double_t zTRD2 = 3955.0;//[mm]
00142   Double_t eTRD = 7.125/sqrt(12);//0.30;
00143   Double_t eHod1 = 1./sqrt(12);
00144   Double_t eHod2 = 1./sqrt(12);
00145   //Int_t iteration = 0;
00146   const Int_t nit = 6;
00147   Int_t maxIt = 0;
00148   const TString itname[nit] = {"_first","_second","_third","_fourth","_fifth","_sixth"};
00149   //-----------Tracking--------------
00150 
00151   Int_t usedSuId[usedSusibos] = {            11,      10,        18,        5,       19};
00152   //TString usedSuName[usedSusibos] = {"MS_R_I","MS_N_II","MS_J_III","FFM_5+5","FFM_4+4"};
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]);//0.525;
00159   Double_t par = 1.0;
00160   TString formula(""), K3formula("-0.245*([0]/[2])+(-20.19*([1]/[2])+0.85)");//K3formula("0.35");
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);// [0] = h; [1] = r_a; [2] = s
00162   //formula.Form(" -1. / (2. * atan(sqrt([0]))) * (atan(sqrt([0]) *tanh(3.14159265 * (-2. + sqrt([0]) ) * (%f + 2.* x * %f) / (8.* [1]) )) +  atan(sqrt([0]) *  tanh(3.14159265 * (-2. + sqrt([0]) ) * (%f - 2.* x * %f) / (8.* [1]) )) )",padWidth[0],par,padWidth[0],par);// [0] = K_3 and [1] = h
00163   //formula.Form(" -1. / (2. * atan(sqrt(-0.098 * [0] + 0.7))) * (atan(sqrt(-0.098 * [0] + 0.7) *tanh(3.14159265 * (-2. + sqrt(-0.098 * [0] + 0.7) ) * (%f + 2.* x * %f) / (8.* [0]) )) +  atan(sqrt(-0.098 * [0] + 0.7) *  tanh(3.14159265 * (-2. + sqrt(-0.098 * [0] + 0.7) ) * (%f - 2.* x * %f) / (8.* [0]) )) )",padWidth[0],par,padWidth[0],par);// [0] = h
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   //mathiesonFit->SetParameter(0,K3);
00170   //mathiesonFit->SetParameter(1,h[0]);
00171   mathiesonFit->SetParameter(0,h[0]);
00172   mathiesonFit->SetParLimits(0,1.25,4.0);
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   //TLine* l7 = new TLine(padWidth[0]*7.5,-40,padWidth[0]*7.5,40);
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   //TGraphErrors *tracking = new TGraphErrors();
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);//0.04*entries
00323   //leg-> SetNColumns(2);
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]); // only one pad
00332   //TF1 *sinfit = new TF1("sinfit","[0]*sin([1]*x+[2])",1.5*padWidth[0],NUM_SPADIC_CHA*padWidth[0]-2.5*padWidth[0]);// all central pads
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   //sinfit2->SetParLimits(,,);
00348   sinfit2->SetParameter(4,0.311);
00349   //sinfit2->SetParLimits(,,);
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]);//NULL;
00354   gPRFfit->SetLineColor(2);
00355   TF1 *gfit =  new TF1("gauss","gaus",-0.25*padWidth[0],0.25*padWidth[0]);//NULL;
00356   gfit->SetLineColor(2);
00357   //TF1 *constfit = new TF1("constfit","[0]",1.5*padWidth[0],NUM_SPADIC_CHA*padWidth[0]-2.5*padWidth[0]);//NULL;
00358   TF1 *linfit = new TF1("linfit","[0]*x+[1]",1.5*padWidth[0],NUM_SPADIC_CHA*padWidth[0]-2.5*padWidth[0]);//NULL;
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]);//NULL;
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     if (mathiesonFit)
00368     formula.Form("[0] * (0.5 * TMath::Pi() *(1. - 0.5 * TMath::Sqrt([2])) * TMath::Sqrt([2])) / (4. * TMath::ATan(TMath::Sqrt([2]))) * (1. - TMath::Power(TMath::TanH(0.5 * TMath::Pi() * (1. - 0.5 * TMath::Sqrt([2])) * (x - [1]) / %E),2)) / (1. + [2] * TMath::Power(TMath::TanH(0.5 * TMath::Pi() * (1. - 0.5 * TMath::Sqrt([2])) * (x - [1]) / %E),2))",h[0],h[0]);
00369     else if (PRFfit)
00370     formula.Form("1. / (TMath::ATan(TMath::Sqrt([1]))) * ((-0.5 * (TMath::ATan(TMath::Sqrt([1]) * TMath::TanH(TMath::Pi() * (TMath::Sqrt([1]) - 2.) * (%E - 2. * (x - [0])) / (8. * %E))))) + (-0.5 * (TMath::ATan(TMath::Sqrt([1]) * TMath::TanH(TMath::Pi() * (TMath::Sqrt([1]) - 2.) * (%E + 2. * (x - [0])) / (8. * %E))))))",padWidth[0],h[0],padWidth[0],h[0]);
00371     TF1 *displacementFit = new TF1("f",formula, -1.5 * padWidth[0], 1.5 * padWidth[0]);
00372   */
00373   TProfile* temp = NULL;// used to find out which iteration is done
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   //title.Form("PRF_2D_%02i",usedSuId[sid]);
00393   //prf[sid] = (TH2D*)output->Get(title);
00394 
00395 
00396   //title.Form("PRF_%02i_first",usedSuId[sid]);
00397   if (NULL == (temp = (TProfile*)paraFile->Get("PRF_11_first"/*title*/))){
00398     first = true;
00399     maxIt = 0;
00400     //iteration = 1;
00401     printf("----------First iteration!\n");
00402     //sigma[sid] = 0.533*padWidth[sid];
00403     sigma[0] = 3.8;
00404     sigma[1] = 3.8;
00405     //for (Int_t sid = 0; sid < 2; sid++)
00406     //printf("Sid%i\n sigma %+9.5f\n f(x) = %+9.5f * x + %+9.5f\n f(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]);
00407   
00408   } else {
00409     first = false;
00410     //title.Form("PRF_%02i_second",usedSuId[sid]);
00411     if (NULL == (temp = (TProfile*)paraFile->Get("PRF_11_second"))){
00412       second = true;
00413       maxIt = 1;
00414       //iteration = 2;
00415       printf("----------Second iteration!\n");
00416     }
00417     else if (NULL == (temp = (TProfile*)paraFile->Get("PRF_11_third"))){
00418       third = true;
00419       maxIt = 2;
00420       //iteration = 3;
00421       printf("----------Third iteration!\n");
00422     }
00423     else if (NULL == (temp = (TProfile*)paraFile->Get("PRF_11_fourth"))){
00424       fourth = true;
00425       maxIt = 3;
00426       //iteration = 4;
00427       printf("----------Fourth iteration!\n");
00428     }     
00429     else if (NULL == (temp = (TProfile*)paraFile->Get("PRF_11_fifth"))){
00430       fifth = true;
00431       maxIt = 4;
00432       //iteration = 5;
00433       printf("----------Fifth iteration!\n");
00434     }
00435     else if (NULL == (temp = (TProfile*)paraFile->Get("PRF_11_sixth"))){
00436       sixth = true;
00437       maxIt = 5;
00438       //iteration = 6;
00439       printf("----------Sixth iteration!\n");
00440     }
00441     else {
00442       printf("----------Last iteration!\n");
00443       maxIt = 6;
00444       //iteration = 7;
00445     }
00446 
00447     if (first){
00448       eTRD  = 1.0/sqrt(12);//7.125/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         eTRD  = 4.5;
00454         eHod1 = 1.0;
00455         eHod2 = 1.0;
00456         /*
00457         } else if (second){
00458         eTRD  = 2.5;
00459         eHod1 = 2.5;
00460         eHod2 = 2.5;
00461         /*
00462         } else if (third){
00463         eTRD  = 0.1;
00464         eHod1 = 1;
00465         eHod2 = 1;
00466         /*
00467         } else if (fourth){
00468         eTRD  = 0.6;
00469         eHod1 = 1.0;
00470         eHod2 = 1.0;
00471         } else if (fifth){
00472         eTRD  = 0.6;
00473         eHod1 = 1.0;
00474         eHod2 = 1.0;
00475         } else if (sixth){
00476         eTRD  = 0.6;
00477         eHod1 = 1.0;
00478         eHod2 = 1.0;
00479       */
00480     } else { 
00481       eTRD  = 0.1/sqrt(12);//7.125/sqrt(12);
00482       eHod1 = 1.0/sqrt(12);
00483       eHod2 = 1.0/sqrt(12);
00484       /*            
00485                     eTRD  = 0.1;
00486                     eHod1 = 1.0;
00487                     eHod2 = 1.0;
00488       */
00489     }
00490     /*
00491       eTRD =  0.0;
00492       eHod1 = 0.0;
00493       eHod2 = 0.0;
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           //cout << title << endl;
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               tempTrackDispl->Fit("constfit","R0Q");
00512               t4[sid][it] = constfit->GetParameter(0);
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               tempTrackDispl->Fit("sinfit2","R0Q");
00521               tempTrackDispl->Fit("sinfit2","R0Q");
00522               t0[sid][it] = sinfit2->GetParameter(0);
00523               t1[sid][it] = sinfit2->GetParameter(1);
00524               t2[sid][it] = sinfit2->GetParameter(2);
00525               t3[sid][it] = sinfit2->GetParameter(3);
00526               t4[sid][it] = sinfit2->GetParameter(4);
00527               chiSqrNDF[sid][it] = sinfit2->GetChisquare()/sinfit2->GetNDF();
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               } else if (it == 3) {         
00536               //tempTrackDispl->Fit("sinfit2","R0Q");
00537               //t0[sid][it] = sinfit2->GetParameter(0);
00538               //t1[sid][it] = sinfit2->GetParameter(1);
00539               //t2[sid][it] = sinfit2->GetParameter(2);
00540               //t3[sid][it] = sinfit2->GetParameter(3);
00541               //t4[sid][it] = sinfit2->GetParameter(4);
00542             
00543               tempTrackDispl->Fit("linfit","R0Q");
00544               t3[sid][it] = linfit->GetParameter(0);
00545               t4[sid][it] = linfit->GetParameter(1);
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           //printf(" t(x) = %+9.5f * TMath::Sin(%+9.5f * x + %+9.5f) + %+9.5f * x + %+9.5f\n",t0[sid][it],t1[sid][it],t2[sid][it],t3[sid][it],t4[sid][it]);
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           //printf("%8.2f\n",pr[sid][it]);
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           //printf("%8.2f\n",prH[sid][it]);
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             //deltaZOptTRD[it] = gfit->GetParameter(1);
00596             if (it == 1){
00597               //zTRD2 = zTRD1 + gfit->GetParameter(1);
00598               //printf("#Delta z_{TRD}^{real}:  %8.2f mm   z-pos TRD 2: %8.2f mm  \n",zTRD2-zTRD1,zTRD2);            
00599             }
00600             //else
00601             //printf("#Delta z_{TRD}^{real}:  %8.2f mm   z-pos TRD 2: %8.2f mm  \n",zTRD2-zTRD1,zTRD2);
00602             printf("#Delta z_{TRD}^{opt.}:  %8.2f mm   sigma:       %8.2f     chi^2/NDF:  %8.2f\n",gzfit->GetParameter(1),gzfit->GetParameter(2),/*gfit->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       //eTRD = 0.5 * (pr[0][it] + pr[1][it]);
00614       //eHod1 = prH[0][it];//*2.5;
00615       //eHod2 = prH[1][it];//*5;
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       //cout << title << endl;
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       //[0]*sin([1]*x+[2])+[3]*x+[4]
00645       title.Form("AlignmentSimple_%02i_first",usedSuId[sid]);
00646       //cout << title << endl;
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       //[0]*sin([1]*x+[2])+[3]*x+[4]
00662       title.Form("PRF_%02i_first",usedSuId[sid]);
00663       //cout << title << endl;
00664       TProfile *tempprfProfile = (TProfile*)paraFile->Get(title);
00665 
00666       //gfit = new TF1("gauss","gaus",-1.5*padWidth[sid],1.5*padWidth[sid]);
00667       //title.Form("PRF_2D_%02i",usedSuId[sid]);
00668       //prf[sid] = (TH2D*)paraFile->Get(title);
00669       tempprfProfile->Fit("gausPRF","R0Q");
00670       sigma[sid] = gPRFfit->GetParameter(2);// /padWidth[sid];
00671 
00672       //linfit = new TF1("linfit","[0]*x+[1]",1.5*padWidth[sid],NUM_SPADIC_CHA*padWidth[sid]-2.5*padWidth[sid]);    
00673 
00674       //linfitD = new TF1("linfitD","[0]*x+[1]",-0.5*padWidth[sid],0.5*padWidth[sid]);  
00675       if (third) {
00676         if (!useCombinedFit && useSinFit){
00677           title.Form("Displacement_%02i_second",usedSuId[sid]);
00678           //title.Form("Alignment_%02i_second",usedSuId[sid]);
00679           //cout << title << endl;
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           //title.Form("AlignmentSimple_%02i_second",usedSuId[sid]);
00688           //cout << title << endl;
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       //delete tempTrackDispl;
00715       //delete temp;
00716       
00717       //delete paraFile;
00718     }
00719   }
00720   //paraFile->Close();
00721   TFile *output = new TFile(outfilename,"UPDATE");
00722   for (Int_t sid = 0; sid < 2; sid++){
00723     if (plotFromFile) { 
00724       /*
00725         TIter nextkey(output->GetListOfKeys());
00726         TKey *key;
00727         while (key = (TKey*)nextkey()) {
00728 
00729         }
00730       */
00731       /*
00732         Ch1_Pb = (TH2I*)output->Get("Ch1_Pb");
00733         allCh1_Pb = (TH2I*)output->Get("allCh1_Pb");
00734         noCh1_Pb = (TH2I*)output->Get("noCh1_Pb");
00735         Ch2_Pb = (TH2I*)output->Get("Ch2_Pb");
00736         allCh2_Pb = (TH2I*)output->Get("allCh2_Pb");
00737         noCh2_Pb = (TH2I*)output->Get("noCh2_Pb");
00738         Ch1_Ch2 = (TH2I*)output->Get("Ch1_Ch2");
00739         allCh1_Ch2 = (TH2I*)output->Get("allCh1_Ch2");
00740         noCh1_Ch2 = (TH2I*)output->Get("noCh1_Ch2");
00741         title.Form("Displacement_Charge_%02i",usedSuId[sid]);
00742         Displacement_Charge[sid] = (TH2I*)output->Get(title);
00743         title.Form("DisplacementSimple_Charge_%02i",usedSuId[sid]);
00744         DisplacementSimple_Charge[sid] = (TH2I*)output->Get(title);
00745         title.Form("Displacement_2D_%02i",usedSuId[sid]);
00746         Displacement_2D[sid] = (TH2I*)output->Get(title);
00747         title.Form("Displacement_1D_%02i",usedSuId[sid]);
00748         Displacement_1D[sid] = (TH1I*)output->Get(title);
00749         title.Form("Displacement_%02i",usedSuId[sid]);
00750         Displacement[sid] = (TProfile*)output->Get(title);
00751         title.Form("DisplacementSimple_2D_%02i",usedSuId[sid]);
00752         DisplacementSimple_2D[sid] = (TH2I*)output->Get(title);
00753         title.Form("DisplacementSimple_1D_%02i",usedSuId[sid]);
00754         DisplacementSimple_1D[sid] = (TH1I*)output->Get(title);
00755         title.Form("DisplacementSimple_%02i",usedSuId[sid]);
00756         DisplacementSimple[sid] = (TProfile*)output->Get(title);
00757         title.Form("PadMax");
00758         if (sid == 0)
00759         PadMax = (TH2I*)output->Get(title); 
00760         PadMax->SetXTitle("max. channel Sus.11");
00761         PadMax->SetYTitle("max. channel Sus.10");
00762         PadMax->SetContour(99);
00763         title.Form("Alignment_2D_%02i",usedSuId[sid]);
00764         Alignment_2D[sid] = (TH2I*)output->Get(title);
00765         Alignment_2D[sid]->SetContour(99);
00766         title.Form("Alignment_%02i",usedSuId[sid]);
00767         Alignment[sid] = (TProfile*)output->Get(title);
00768         Alignment[sid]->SetMarkerStyle(24);
00769         title.Form("Residuals_%02i",usedSuId[sid]);
00770         Residuals[sid] = (TH1I*)output->Get(title);
00771         title.Form("AlignmentSimple_2D_%02i",usedSuId[sid]);
00772         AlignmentSimple_2D[sid] = (TH2I*)output->Get(title);
00773         AlignmentSimple_2D[sid]->SetContour(99);
00774         title.Form("AlignmentSimple_%02i",usedSuId[sid]);
00775         AlignmentSimple[sid] = (TProfile*)output->Get(title);
00776         AlignmentSimple[sid]->SetMarkerStyle(24);
00777         title.Form("ResidualsSimple_%02i",usedSuId[sid]);
00778         ResidualsSimple[sid] = (TH1I*)output->Get(title);
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);//-32,32);
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);//-32,32);
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,//-32,32,
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,//-32,32,
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,//-32,32,
00916                                           //2*bins_mm*(NUM_SPADIC_CHA-1)*padWidth[sid],-(NUM_SPADIC_CHA-0.5)*padWidth[sid],(NUM_SPADIC_CHA-0.5)*padWidth[sid]);
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,//-32,32,
00924                                           //2*bins_mm*(NUM_SPADIC_CHA-1)*padWidth[sid],-(NUM_SPADIC_CHA-0.5)*padWidth[sid],(NUM_SPADIC_CHA-0.5)*padWidth[sid]);
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                                             //bins_mm*2*padWidth[sid],-1*padWidth[sid],1*padWidth[sid]);
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                                       //bins_mm*2*padWidth[sid],-1*padWidth[sid],1*padWidth[sid]);
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                                          //bins_mm*2*padWidth[sid],-1*padWidth[sid],1*padWidth[sid]);
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                                          //bins_mm*2*padWidth[sid],-1*padWidth[sid],1*padWidth[sid]);
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);//4*bins_mm*padWidth[sid],-1*padWidth[sid],1*padWidth[sid]);
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     if (first)
01165     name = "c";
01166     else if (second)
01167     name = "c_second";
01168     else if (third)
01169     name = "c_third";
01170     TCanvas *c = new TCanvas(name,name,2*800,1.5*600);
01171     c->Divide(4,4);
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);//-32,32);
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);//-32,32);
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);//-32,32);
01227   Hodo1X->SetXTitle("x [mm]");
01228   TH1I *Hodo2X = new TH1I("Hodo2X","Hodo2X",640,0,64);//-32,32);
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);//,-32,32,64,-32,32);
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);//,-32,32,64,-32,32);
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);//,-32,32,64,-32,32);
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);//,-32,32,64,-32,32);
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), /*entries(0), entries_step1(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   //else
01333   //cout << "file found: " << filename << endl;
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; // we take first Tree in file, disregarding its name...
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   //pidNoiseEvents = entries;
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   //else 
01366   //cout << "file found: " << name << endl;
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; // we take first Tree in file, disregarding its name...
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   //TTriglogEvent* trigLogEvent = NULL;
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);//, sigmaFit(0.0);
01393   //Bool_t isPulser = false;
01394   Bool_t Sus[2] = {false};
01395   //output->mkdir("SignalScreens");
01396   //output->cd("SignalScreens")
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]));//0
01403     theSpadic2 = dynamic_cast<TSpadicData*>(SpadicInputEvent->getEventElement(usedSuId[1]));//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;   // original FH coordinate system is between -32 and 32 mm in x and y
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);// alignment and focus compensated   
01435     //xHod2 += (h0 * xHod1 + h1);// alignment and focus compensated   
01436     
01437     for (Int_t it = 0; it < nit; it++) {
01438       xHTrack[0] -= th0[0][it] * xHod1 + th1[0][it];
01439       //xHod1 -= th0[0][it] * xHod1 + th1[0][it];
01440       xHTrack[1] -= th0[1][it] * xHod2 + th1[1][it];
01441       //xHod2 -= th0[1][it] * xHod2 + th1[1][it];
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     //AlignmentHodoX_1D->Fill(xHod1, xHod1-xHod2);
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     } // cut noise trigger
01463     //pidNoiseEvents--;
01464     //isPion = false;
01465     //isElectron = false;
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         //Ch1_Pb->Fill(Ch1,Pb);
01498         //Ch2_Pb->Fill(Ch2,Pb);
01499         //Ch1_Ch2->Fill(Ch1,Ch2);
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     //if (!isMyon) continue;
01512     //if (!isPion) continue;
01513     //if (!isElectron) continue;
01514     for (Int_t sid = 0; sid < 2; sid++){
01515       SpadicOverFlow[sid] = false;
01516       SpadicUnderFlow[sid] = false;
01517       clusterCh[sid] = 0;
01518       //Sus[sid] = false;
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;  // makes separate chamber statistic useless but algorithm faster!!!
01544     if (!useUnderFlows)
01545       if (SpadicUnderFlow[0] || SpadicUnderFlow[1]) continue;  // makes separate chamber statistic useless but algorithm faster!!!
01546 
01547     for (Int_t sid = 0; sid < 2; sid++){
01548       //SetSusid(sid);
01549       susid = sid;
01550       //if (!useOverFlows)
01551       //if (SpadicOverFlow[sid]) continue; // to increase noise statistic before filtering for coincendent events. speeds a bit up by avoiding noise reduction for overflow events
01552       BaselineCompensation(rawPulse[sid], baselinePulse[sid], baselineDistribution[sid]);
01553       //CancelNoise_Cova(baselinePulse[sid], baselineNoisePulse[sid], NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, false);
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          //&& clusterCh[sid] > 1 && clusterCh[sid] < 4 
01577          //&& baselineNoisePulse[sid][padMax[sid]]->GetBinContent(baselineNoisePulse[sid][padMax[sid]]->GetMaximumBin()) > 50
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         //if (Sus[0] && Sus[1]){ // coincendent filtering
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               //for (Int_t bin = 0; bin < SPADIC_TRACE_SIZE; bin++) {
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         //SetSusid(sid);
01635         susid = sid;
01636         CalcPrf(baselineNoisePulse[sid], prf[sid], prfProfile[sid], padWidth[sid], padMax[sid]);
01637         //padMax[sid] = GetPadMax(baselineNoisePulse[sid]);
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); // positive integral
01641           //Q[sid][0] = baselineNoisePulse[sid][padMax[sid]-1]->Integral(); // complett integral
01642           //Q[sid][0] = baselineNoisePulse[sid][padMax[sid]-1]->GetBinContent(baselineNoisePulse[sid][padMax[sid]-1]->GetMaximumBin());// max amplitude
01643           if (baselineNoisePulse[sid][padMax[sid]]->GetBinContent(ibin) > 0.0)
01644             Q[sid][1] += baselineNoisePulse[sid][padMax[sid]]->GetBinContent(ibin);
01645           //Q[sid][1] = baselineNoisePulse[sid][padMax[sid]]->Integral();
01646           //Q[sid][1] = baselineNoisePulse[sid][padMax[sid]]->GetBinContent(baselineNoisePulse[sid][padMax[sid]]->GetMaximum());
01647           if (baselineNoisePulse[sid][padMax[sid]+1]->GetBinContent(ibin) > 0.0)
01648             Q[sid][2] += baselineNoisePulse[sid][padMax[sid]+1]->GetBinContent(ibin);
01649           //Q[sid][2] = baselineNoisePulse[sid][padMax[sid]+1]->Integral();
01650           //Q[sid][2] = baselineNoisePulse[sid][padMax[sid]+1]->GetBinContent(baselineNoisePulse[sid][padMax[sid]+1]->GetMaximum());
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           //Double_t offset[2] = {23, 24};
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             //d[sid] = calcDisplacementRatio(padWidth[sid], Q[sid]);
01664             //d[sid] = calcDisplacementGRatio(padWidth[sid], Q[sid]);
01665             //d[sid] = calcDisplacementHyperbolicSecantSquared(padWidth[sid], Q[sid]);
01666             //d[sid] = calcDisplacementOverflow(padWidth[sid], Q[sid]);
01667             //d[sid] = calcDisplacementMathiesonFitting(padWidth[sid], Q[sid]);
01668             //d[sid] = calcDisplacementPRFFitting(padWidth[sid], Q[sid]);
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             //ds[sid] = calcDisplacement(padWidth[sid], Q[sid], sigma[sid]);
01675             ds[sid] = calcSimpleDisplacement(padWidth[sid],Q[sid]);
01676             //ds[sid] = calcDisplacement(padWidth[sid], Q[sid], sigma[sid]);
01677             //ds[sid] = calcDisplacementRatio(padWidth[sid], Q[sid]);
01678             //ds[sid] = calcDisplacementGRatio(padWidth[sid], Q[sid]);
01679             //ds[sid] = calcDisplacementHyperbolicSecantSquared(padWidth[sid], Q[sid]);
01680             //ds[sid] = calcDisplacementOverflow(padWidth[sid], Q[sid]);
01681             //ds[sid] = calcDisplacementMathiesonFitting(padWidth[sid], Q[sid]);
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               xTrack[sid] = xPRF[sid];// - offset[sid];
01689               for (Int_t it = 0; it < maxIt; it++) {
01690               //if (sid == 0)
01691               if (t0[sid][it] != 0.0)
01692               xTrack[sid] -= (t0[sid][it] * TMath::Sin(t1[sid][it] * xPRF[sid] + t2[sid][it]) + (t3[sid][it] * xPRF[sid] + t4[sid][it]));
01693               else
01694               xTrack[sid] -= (t3[sid][it] * xPRF[sid] + t4[sid][it]);
01695               }*/
01696             
01697             xTrack[sid] = xHSS[sid];// - offset[sid];
01698             for (Int_t it = 0; it < maxIt; it++) {
01699               //if (sid == 0)
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                 if (maxIt%2 == 0) {
01706                 if (sid == 0)
01707                 xTrack[0] -= (t0[0][it] * TMath::Sin(t1[0][it] * xHSS[0] + t2[0][it]) + (t3[0][it] * xHSS[0] + t4[0][it]));
01708                 } else {
01709                 if (sid == 1)
01710                 xTrack[1] -= (t0[1][it] * TMath::Sin(t1[1][it] * xHSS[1] + t2[1][it]) + (t3[1][it] * xHSS[1] + t4[1][it]));
01711                 }
01712               */
01713             }
01714             /*
01715               xTrack[sid] = x[sid];// - offset[sid];
01716               for (Int_t it = 0; it < maxIt; it++) {
01717               //if (sid == 0)
01718               if (t0[sid][it] != 0.0)
01719               xTrack[sid] -= (t0[sid][it] * TMath::Sin(t1[sid][it] * x[sid] + t2[sid][it]) + (t3[sid][it] * x[sid] + t4[sid][it]));
01720               else
01721               xTrack[sid] -= (t3[sid][it] * x[sid] + t4[sid][it]);
01722               }
01723               xTrack[sid] = xs[sid];// - offset[sid];
01724               for (Int_t it = 0; it < maxIt; it++) {
01725               //if (sid == 0)
01726               if (t0[sid][it] != 0.0)
01727               xTrack[sid] -= (t0[sid][it] * TMath::Sin(t1[sid][it] * xs[sid] + t2[sid][it]) + (t3[sid][it] * xs[sid] + t4[sid][it]));
01728               else
01729               xTrack[sid] -= (t3[sid][it] * xs[sid] + t4[sid][it]);
01730               }
01731             */
01732             //AlignmentHodo1Trd_1D[sid]->Fill(xHod1, xHod1-xTrack[sid]);//xPRF[sid]);
01733             //AlignmentHodo2Trd_1D[sid]->Fill(xHod2, xHod2-xTrack[sid]);//xPRF[sid]);
01734             AlignmentHodo1Trd[sid]->Fill(xHod1, xHTrack[0] - xTrack[sid]);//xPRF[sid]);
01735             AlignmentHodo2Trd[sid]->Fill(xHod2, xHTrack[1] - xTrack[sid]);//xPRF[sid]);
01736             CorrelationHodo1Trd[sid]->Fill(xHod1, xTrack[sid]);//xPRF[sid]);
01737             CorrelationHodo2Trd[sid]->Fill(xHod2, xTrack[sid]);//xPRF[sid]);
01738           }
01739           xTrdAngle = CalcAngleMsTrd(xTrack[0], xTrack[1]);
01740           AngleX->Fill(xTrdAngle, xAngle);
01741 
01742 
01743           //fTracking = new TGraphErrors();
01744           if (fTracking->GetN() > 0){
01745             //if (debug) printf("    ERROR:: %i\n",fTracking->GetN());
01746             for (Int_t j = 0; j < fTracking->GetN(); j++)
01747               fTracking->RemovePoint(j);
01748           }
01749           /*
01750             if (maxIt%2 == 0) {
01751             fTracking->SetPoint(0,zHod1,xHTrack[0]);
01752             fTracking->SetPointError(0,0,eHod1);
01753             fTracking->SetPoint(1,zTRD2,xTrack[0]);
01754             fTracking->SetPointError(1,0,eTRD);
01755             fTracking->SetPoint(2,zHod2,xHTrack[1]);
01756             fTracking->SetPointError(2,0,eHod2);
01757             } else {
01758             fTracking->SetPoint(0,zHod1,xHTrack[0]);
01759             fTracking->SetPointError(0,0,eHod1);
01760             fTracking->SetPoint(1,zTRD2,xTrack[1]);
01761             fTracking->SetPointError(1,0,eTRD);
01762             fTracking->SetPoint(2,zHod2,xHTrack[1]);
01763             fTracking->SetPointError(2,0,eHod2);
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           fTracking->SetPoint(0,zHod1,xHTrack[0]);
01778           fTracking->SetPointError(0,10,eHod1);//(0,0,eHod1);
01779           fTracking->SetPoint(1,zTRD2,xTrack[0]);
01780           fTracking->SetPointError(1,5,eTRD);//(1,0,eTRD);
01781           fTracking->SetPoint(2,zTRD2,xTrack[1]);
01782           fTracking->SetPointError(2,5,eTRD);//(2,0,eTRD);
01783           if (useHod2){
01784             fTracking->SetPoint(3,zHod2,xHTrack[1]);
01785             fTracking->SetPointError(3,50,eHod2);//(3,0,eHod2);
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           //sigmaFit = trackfit->IntegralError(0.99 * zHod1, 1.01 * zHod1);
01796           //trackingPullHod1->Fill((xHTrack[0] - (trackfit->GetParameter(0) * zHod1 + trackfit->GetParameter(1))) / TMath::Sqrt((eHod1 * eHod1) - (sigmaFit * sigmaFit)));
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           //sigmaFit = trackfit->IntegralError(0.99 * zHod2, 1.01 * zHod2);
01800           //trackingPullHod2->Fill((xHTrack[1] - (trackfit->GetParameter(0) * zHod2 + trackfit->GetParameter(1))) / TMath::Sqrt((eHod2 * eHod2) - (sigmaFit * sigmaFit)));
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           //sigmaFit = trackfit->IntegralError(0.99 * zTRD1, 1.01 * zTRD1);
01804           //trackingPullTRD1->Fill((xTrack[0] - (trackfit->GetParameter(0) * zTRD1 + trackfit->GetParameter(1))) / TMath::Sqrt((eTRD * eTRD) - (sigmaFit * sigmaFit)));
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           //sigmaFit = trackfit->IntegralError(0.99 * zTRD2, 1.01 * zTRD2);
01808           //trackingPullTRD2->Fill((xTrack[1] - (trackfit->GetParameter(0) * zTRD2 + trackfit->GetParameter(1))) / TMath::Sqrt((eTRD * eTRD) - (sigmaFit * sigmaFit)));
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           //if (fabs((zHod2 - zHod1) / (xHTrack[1] - xHTrack[0]) * (xTrack[1] - xTrack[0])) > 7500)
01818           //printf ("opt_z: %E\n",(zHod2 - zHod1) / (xHTrack[1] - xHTrack[0]) * (xTrack[1] - xTrack[0]));
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           //trackingDisplHodo1_1D->Fill( xHod1, xHod1   - (trackfit->GetParameter(0) * zHod1 + trackfit->GetParameter(1)));
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           //trackingDisplHodo2_1D->Fill( xHod2, xHod2   - (trackfit->GetParameter(0) * zHod2 + trackfit->GetParameter(1)));
01830           //if (first){
01831           trackingDisplTRD1->Fill(   xHSS[0], xTrack[0]);
01832           //trackingDisplTRD1_1D->Fill(xPRF[0], xTrack[0]);
01833           ResidualsTracking[0]->Fill(xTrack[0]);
01834           trackingDisplTRD2->Fill(   xHSS[1], xTrack[1]);
01835           //trackingDisplTRD2_1D->Fill(xPRF[1], xTrack[1]);
01836           ResidualsTracking[1]->Fill(xTrack[1]);
01837           /*} else {
01838           //if (fabs(xTrack[0]) < maxD) 
01839           {
01840           trackingDisplTRD1->Fill(   xHSS[0], xTrack[0]);
01841           //trackingDisplTRD1_1D->Fill(xPRF[0], xTrack[0]);
01842           ResidualsTracking[0]->Fill(xTrack[0]);
01843           }
01844           //if (fabs(xTrack[1]) < maxD) 
01845           {
01846           trackingDisplTRD2->Fill(   xHSS[1], xTrack[1]);
01847           //trackingDisplTRD2_1D->Fill(xPRF[1], xTrack[1]);
01848           ResidualsTracking[1]->Fill(xTrack[1]);
01849           }
01850           }
01851           */
01852           //if (fabs(d[0]) != 0.0 && fabs(d[1]) != 0.0)
01853           //if ((fabs(d[0]) > 0.15 && fabs(d[1]) > 0.15)) // should work to exclude overshoot at two strips (vertical and diagonal)
01854           //if (fabs(d[0]) > 0.0 && fabs(d[1]) > 0.0)
01855           {
01856             usedEvents3++;
01857             //if ((padMax[0] > 0 && padMax[1] > 0) && (padMax[0] < NUM_SPADIC_CHA-1 && padMax[1] < NUM_SPADIC_CHA-1)) 
01858             //if (padMax[0] == padMax[1]) // will not work for extrem aligned cases
01859             { // avoid diagonal cut on first and last pad
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                   //[0]*sin([1]*x+[2])+[3]*x+[4]
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               //if (!(delta != delta) && fabs(delta) < 6.5){
01882               //if (fabs(delta) < maxD)
01883               {
01884                 //Displacement_Charge[0]->Fill(d[0],Q[0][0]+Q[0][1]+Q[0][2]);
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]);//d[0]);
01888                 Displacement_1D[1]->Fill(x[1]);//d[0]);
01889                 //Displacement[0]->Fill(d[0],delta);
01890                 Alignment_2D[0]->Fill(x[0],delta);  
01891                 //Alignment[0]->Fill(x[0],delta);
01892                 if (padMax[0] > 1 && padMax[0] < NUM_SPADIC_CHA-2){
01893                   //if(padMax[0] == 5)
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                 if (!fast){
01905                 delta = (x[1]-x[0]);
01906                 if (!useFitAlignment){
01907                 if (NULL != AlignmentComp[1]){
01908                 delta -= AlignmentComp[1]->GetBinContent(AlignmentComp[1]->FindBin(x[1]));
01909                 }
01910                 } else {
01911                 if (useCombinedFit){
01912                 delta -= (f0[1] * TMath::Sin(f1[1] * x[1] + f2[1]) + (f3[1] * x[1] + f4[1]));
01913                 } else {
01914                 delta -= (m[1]*x[1]+b[1]);
01915                 if(useSinFit)
01916                 delta -= (ad[1] * TMath::Sin(fd[1] * d[1] + pd[1]));
01917                 }
01918                 }
01919                 //if (!(delta != delta) && fabs(delta) < 6.5){
01920                 if (fabs(delta) < 6.5){
01921                 //Displacement_Charge[1]->Fill(d[1],Q[1][0]+Q[1][1]+Q[1][2]);
01922                 Displacement_Charge[1]->Fill(d[1],Q[1][1]);
01923                 Displacement_2D[1]->Fill(d[1],delta);
01924                 Displacement_1D[1]->Fill(x[1]);//d[1]);
01925                 Displacement[1]->Fill(d[1],delta);
01926                 Alignment_2D[1]->Fill(x[1],delta);  
01927                 Alignment[1]->Fill(x[1],delta);
01928                 if (padMax[1] > 1 && padMax[1] < NUM_SPADIC_CHA-2)
01929                 //if(padMax[1] == 5)
01930                 Residuals[1]->Fill(delta);
01931                 }
01932                 }*/
01933               {
01934                 /*
01935                 //:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
01936                 if (fTracking->GetN() > 0){
01937                 //if (debug) printf("    ERROR:: %i\n",fTracking->GetN());
01938                 for (Int_t j = 0; j < fTracking->GetN(); j++)
01939                 fTracking->RemovePoint(j);
01940                 }
01941 
01942                 fTracking->SetPoint(0,zHod1,xHod1);
01943                 fTracking->SetPointError(0,0,1);
01944                 //fTracking->SetPoint(1,zTRD2,xPRF[0]);
01945                 //fTracking->SetPointError(1,0,30);
01946                 //fTracking->SetPoint(2,zTRD2,xPRF[1]);
01947                 //fTracking->SetPointError(2,0,30);
01948                 //if (useHod2)
01949                 {
01950                 fTracking->SetPoint(1,zHod2,xHod2);
01951                 fTracking->SetPointError(1,0,1);
01952                 }
01953                 fTracking->Fit("trackfit","Q0");
01954                 */
01955                 //:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
01956                 //delta = (xPRF[0] - CalcTrackingCompensation( xPRF[0], xPRF[1], trackfit, zTRD1, zTRD2));
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                 //if (!(delta != delta) && fabs(delta) < 6.5){
01972                 //if (fabs(delta) < maxD)
01973                 {
01974                   //Displacement_Charge[1]->Fill(d[1],Q[1][0]+Q[1][1]+Q[1][2]);
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]);//d[1]);
01978                   DisplacementPRF_1D[1]->Fill(xPRF[1]);//d[1]);
01979                   //Displacement[1]->Fill(dPRF[0],delta);
01980                   Alignment_2D[1]->Fill(xPRF[0],delta);  
01981                   //Alignment[1]->Fill(xPRF[0],delta);
01982                   if (padMax[0] > 1 && padMax[0] < NUM_SPADIC_CHA-2){
01983                     //if(padMax[1] == 5)
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               //if (!(delta != delta) && fabs(delta) < 6.5){        
02011               //if (fabs(delta) < maxD)
02012               {
02013                 //DisplacementSimple_Charge[0]->Fill(ds[0],Q[0][0]+Q[0][1]+Q[0][2]);
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]);//ds[0]);
02017                 DisplacementSimple_1D[1]->Fill(xs[1]);//ds[0]);
02018                 //DisplacementSimple[0]->Fill(ds[0],delta);
02019                 AlignmentSimple_2D[0]->Fill(xs[0],delta);
02020                 //AlignmentSimple[0]->Fill(xs[0],delta);
02021                 if (padMax[0] > 1 && padMax[0] < NUM_SPADIC_CHA-2){
02022                   //if(padMax[0] == 5)
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                 if if (!fast) {
02034                 delta = (xs[1]-xs[0]);
02035                 if (!useFitAlignment){
02036                 if (NULL != sAlignmentComp[1]){
02037                 delta -= sAlignmentComp[1]->GetBinContent(sAlignmentComp[1]->FindBin(xs[1]));
02038                 }
02039                 } else {
02040                 if (useCombinedFit){
02041                 delta -= (s0[1] * TMath::Sin(s1[1] * xs[1] + s2[1]) + (s3[1] * xs[1] + s4[1]));
02042                 } else {
02043                 delta -= (ms[1]*xs[1]+bs[1]);
02044                 if(useSinFit)
02045                 delta -= (ads[1] * TMath::Sin(fds[1] * ds[1] + pds[1]));
02046                 }
02047                 }
02048                 //if (!(delta != delta) && fabs(delta) < 6.5){
02049                 if (fabs(delta) < 6.5){
02050                 //DisplacementSimple_Charge[1]->Fill(ds[1],Q[1][0]+Q[1][1]+Q[1][2]);
02051                 DisplacementSimple_Charge[1]->Fill(ds[1],Q[1][1]);
02052                 DisplacementSimple_2D[1]->Fill(ds[1],delta);
02053                 DisplacementSimple_1D[1]->Fill(xs[1]);//ds[1]);
02054                 DisplacementSimple[1]->Fill(ds[1],delta);
02055                 AlignmentSimple_2D[1]->Fill(xs[1],delta);
02056                 AlignmentSimple[1]->Fill(xs[1],delta);  
02057                 if (padMax[1] > 1 && padMax[1] < NUM_SPADIC_CHA-2)
02058                 //if(padMax[1] == 5)
02059                 ResidualsSimple[1]->Fill(delta);
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                 //if (!(delta != delta) && fabs(delta) < 6.5){
02079                 //if (fabs(delta) < maxD)
02080                 {
02081                   //DisplacementSimple_Charge[1]->Fill(ds[1],Q[1][0]+Q[1][1]+Q[1][2]);
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]);//ds[1]);
02085                   DisplacementHSS_1D[1]->Fill(xHSS[1]);//ds[1]);
02086                   //DisplacementSimple[1]->Fill(dHSS[0],delta);
02087                   AlignmentSimple_2D[1]->Fill(xHSS[0],delta);
02088                   //AlignmentSimple[1]->Fill(xHSS[0],delta);  
02089                   if (padMax[0] > 1 && padMax[0] < NUM_SPADIC_CHA-2){
02090                     //if(padMax[1] == 5)
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           //else
02104           //cout << d[0] << " " << d[1] << endl;
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   //printf("   RealTime=%f seconds,  CpuTime=%f seconds\n",rtime,ctime);
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)/*/TMath::Sqrt(2.)*/, gfit->GetParError(2)/*/TMath::Sqrt(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)/*/TMath::Sqrt(2.)*/, gfit->GetParError(2)/*/TMath::Sqrt(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)/*/TMath::Sqrt(2.)*/, gfit->GetParError(2)/*/TMath::Sqrt(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)/*/TMath::Sqrt(2.)*/, gfit->GetParError(2)/*/TMath::Sqrt(2.)*/);
02207   cout << "Tracking H2 " << name << endl << endl;
02208 
02209   if (output->IsOpen()){
02210     output->cd();
02211     /*
02212       if (first)
02213       title = "";
02214       else if (second)
02215       title = "_second";
02216       else if (third)
02217       title = "_third";
02218       TCanvas *results = new TCanvas(TString("big")+title,TString("big")+title,2*800,1*600);
02219       results->Divide(2,1);
02220       TCanvas *results1 = new TCanvas(TString("small")+title,TString("small")+title,1*800,1*600);
02221       results1->Divide(1,1);
02222       TCanvas *results2 = new TCanvas(TString("hugh")+title,TString("hugh")+title,2*800,2*600);
02223       results2->Divide(2,2);
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       //clusterSize[sid]->Scale(1./Float_t(clusterSize[sid]->GetEntries()));
02300       //clusterSize[sid]->GetYaxis()->SetRangeUser(0,1);
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       //FillProfile(AlignmentComp_2D, AlignmentComp);
02309       //FillProfile(sAlignmentComp_2D, sAlignmentComp);
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       //noiseDistribution[sid]->Scale(1./Float_t(noiseDistribution[sid]->GetEntries()));
02322       //noiseDistribution[sid]->GetYaxis()->SetRangeUser(0,1);
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       //TBox(Double_t x1, Double_t y1, Double_t x2, Double_t y2)
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     //cout << name << endl;
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     //cout << name << endl;
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     //cout << name << endl;
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     //cout << name << endl;
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     //mathiesonFit->SetParameter(0,);
02622     //mathiesonFit->SetParameter(1,);
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       lPRF1.SetNColumns(2);
02662       lPRF1.SetFillStyle(0);
02663       lPRF1.SetTextSize(0.035);
02664       lPRF1.SetLineStyle(0);
02665       lPRF1.SetLineColor(0);
02666 
02667       lPRF1.AddEntry(mathiesonFit,"Fit:","l");
02668       lPRF1.AddEntry(mathieson,"Theory:","l");
02669    
02670       name.Form("K_{3}=%.2f",-0.245 * (mathiesonFit->GetParameter(0)/mathiesonFit->GetParameter(2)) + (-20.19*(mathiesonFit->GetParameter(1)/mathiesonFit->GetParameter(2))+0.85));
02671       lPRF1.AddEntry((TObject*)0,name,"");
02672       name.Form("K_{3}=%.2f",K3);
02673       lPRF1.AddEntry((TObject*)0,name,"");
02674    
02675       name.Form("h=%.2fmm",mathiesonFit->GetParameter(0));
02676       lPRF1.AddEntry((TObject*)0,name,"");
02677       name.Form("h=%.2fmm",h[0]);
02678       lPRF1.AddEntry((TObject*)0,name,"");
02679    
02680       name.Form("r_{a}=%.2f#mum",mathiesonFit->GetParameter(1)*1000);
02681       lPRF1.AddEntry((TObject*)0,name,"");
02682       name.Form("r_{a}=%.2f#mum",r_a*1000);
02683       lPRF1.AddEntry((TObject*)0,name,"");
02684 
02685       name.Form("s=%.2fmm",mathiesonFit->GetParameter(2));
02686       lPRF1.AddEntry((TObject*)0,name,"");
02687       name.Form("s=%.2fmm",s);
02688       lPRF1.AddEntry((TObject*)0,name,"");
02689 
02690 
02691       name.Form("#chi^{2}/NDF=%.2f",mathiesonFit->GetChisquare()/mathiesonFit->GetNDF());
02692       lPRF1.AddEntry((TObject*)0,name,"");
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     //name.Form("K_3 = %.2f   h = %.2f\n",mathiesonFit->GetParameter(0),mathiesonFit->GetParameter(1));
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       lPRF2.SetNColumns(2);
02740       lPRF2.SetFillStyle(0);
02741       lPRF2.SetTextSize(0.035);
02742       lPRF2.SetLineStyle(0);
02743       lPRF2.SetLineColor(0);
02744 
02745       lPRF2.AddEntry(mathiesonFit,"Fit:","l");
02746       lPRF2.AddEntry(mathieson,"Theory:","l");
02747 
02748       name.Form("K_{3}=%.2f",-0.245 * (mathiesonFit->GetParameter(0)/mathiesonFit->GetParameter(2)) + (-20.19*(mathiesonFit->GetParameter(1)/mathiesonFit->GetParameter(2))+0.85));
02749       lPRF2.AddEntry((TObject*)0,name,"");
02750       name.Form("K_{3}=%.2f",K3);
02751       lPRF2.AddEntry((TObject*)0,name,"");
02752  
02753       name.Form("h=%.2fmm",mathiesonFit->GetParameter(0));
02754       lPRF2.AddEntry((TObject*)0,name,"");
02755       name.Form("h=%.2fmm",h[0]);
02756       lPRF2.AddEntry((TObject*)0,name,"");
02757 
02758       name.Form("r_{a}=%.2f#mum",mathiesonFit->GetParameter(1)*1000);
02759       lPRF2.AddEntry((TObject*)0,name,"");
02760       name.Form("r_{a}=%.2f#mum",r_a*1000);
02761       lPRF2.AddEntry((TObject*)0,name,"");
02762   
02763       name.Form("s=%.2fmm",mathiesonFit->GetParameter(2));
02764       lPRF2.AddEntry((TObject*)0,name,"");
02765       name.Form("s=%.2fmm",s);
02766       lPRF2.AddEntry((TObject*)0,name,"");
02767  
02768 
02769       name.Form("#chi^{2}/NDF=%.2f",mathiesonFit->GetChisquare()/mathiesonFit->GetNDF());
02770       lPRF2.AddEntry((TObject*)0,name,"");
02771       /*
02772       name.Form("Theo.: K_{3}=%.2f; h=%.2f\n",K3,h[0]);
02773       lPRF2.AddEntry(mathieson,name,"l");
02774       name.Form("       r_{a}=%.2f; s=%.2f\n",r_a,s);
02775       lPRF1.AddEntry((TObject*)0,name,"");
02776       name.Form("Fit: K_{3}=%.2f; h=%.2f;\n",-0.245 * (mathiesonFit->GetParameter(0)/mathiesonFit->GetParameter(2)) + (-20.19*(mathiesonFit->GetParameter(1)/mathiesonFit->GetParameter(2))+0.85),mathiesonFit->GetParameter(0));
02777       //-0.098*mathiesonFit->GetParameter(0)+0.7,mathiesonFit->GetParameter(0));
02778       lPRF2.AddEntry(mathiesonFit,name,"l");
02779       name.Form("     r_{a}=%.2f; s=%.2f\n",mathiesonFit->GetParameter(1),mathiesonFit->GetParameter(2));
02780       lPRF2.AddEntry((TObject*)0,name,"");
02781       name.Form("#Chi^{2}/NDF=%.2f\n",mathiesonFit->GetChisquare()/mathiesonFit->GetNDF());
02782       lPRF2.AddEntry((TObject*)0,name,"");
02783       //name.Form("Fit: K_{3}=%.2f; h=%.2f; #Chi^{2}/NDF=%.2f\n",-0.098*mathiesonFit->GetParameter(0)+0.7,mathiesonFit->GetParameter(0),mathiesonFit->GetChisquare()/mathiesonFit->GetNDF());
02784       //lPRF2.AddEntry(mathiesonFit,name,"l");
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     //vertical.Draw("same");
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     //averageSignal_2D[0]->GetYaxis()->SetRangeUser(-20,256);
02874     averageSignal_2D[0]->DrawCopy("colz");
02875     results->cd(2)->SetLogz(1);
02876     //averageSignal_2D[1]->GetYaxis()->SetRangeUser(-20,256);
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     //averageNoise_2D[0]->GetYaxis()->SetRangeUser(-20,256);
02884     averageNoise_2D[0]->DrawCopy("colz");
02885     results->cd(2)->SetLogz(1);
02886     //averageNoise_2D[1]->GetYaxis()->SetRangeUser(-20,256);
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     //Displacement_1D[0]->DrawCopy("AXIS"); 
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     //Displacement_1D[1]->DrawCopy("AXIS"); 
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   //l7->Draw("same");
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   //cout << "Residuals[0] " << name << endl;
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   //l7->Draw("same");
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   //cout << "ResidualsSimple[0] "<< name << endl;
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   //l7->Draw("same");
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   //cout << "Residuals[1] " << name << endl;
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   //l7->Draw("same");
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   //cout << "ResidualsSimple[1] " << name << endl;
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   //mathiesonFit->SetParameter(0,);
03134   //mathiesonFit->SetParameter(1,);
03135   prfProfile[0]->Fit("mathiesonFit","0RQ");
03136   //printf("K_3 = %.2f   h = %.2f  ChiSq/NDF = %.2f\n",-0.098*mathiesonFit->GetParameter(0)+0.7,mathiesonFit->GetParameter(0),mathiesonFit->GetChisquare()/mathiesonFit->GetNDF());
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   //printf("K_3 = %.2f   h = %.2f  ChiSq/NDF = %.2f\n",-0.098*mathiesonFit->GetParameter(0)+0.7,mathiesonFit->GetParameter(0),mathiesonFit->GetChisquare()/mathiesonFit->GetNDF());
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 }

Generated on Tue Dec 10 2013 04:52:18 for ROCsoft by  doxygen 1.7.1