]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TPC/CalibMacros/CalibTime.C
doxy: TPC/CalibMacros
[u/mrichter/AliRoot.git] / TPC / CalibMacros / CalibTime.C
1 /// \file CalibTime.C
2 ///
3 /// Macro to visualize and analyze time dependent variables
4 ///
5 /// ~~~
6 /// .L $ALICE_ROOT/TPC/CalibMacros/CalibTime.C
7 ///
8 /// // 1. Init - Load libraries tools 
9 /// Init()
10 ///
11 /// // 2. Load debug streamers 
12 /// InitChains()
13 /// ~~~
14
15 gSystem->Load("libANALYSIS");
16 gSystem->Load("libSTAT");
17 gSystem->Load("libTPCcalib");
18
19 TFile f("CalibObjects.root");
20 AliTPCcalibTime *calibTime = (AliTPCcalibTime *)f->Get("TPCCalib")->FindObject("calibTime");
21
22 TPair * addPair= calibTime->GetMapDz()->FindObject(" D0SCO ");
23 THnSparse* addHist=dynamic_cast<THnSparseF*>(addPair->Value());
24
25 TGraph * gr = AliTPCcalibBase::FitSlices(addHist,2,0,100,100);
26 gr->SetMarkerColor(2);
27 gr->Draw("same*");
28 //Make Fit
29
30 AliSplineFit fit;
31 fit.SetGraph(gr)
32 fit->SetMinPoints(gr->GetN()+1);
33 fit->InitKnots(gr,2,0,0.001)
34 fit.SplineFit(0)
35 TGraph * grfit = fit.MakeGraph(gr->GetX()[0],gr->GetX()[gr->GetN()-1],50000,0);
36 gr->SetMarkerStyle(25);
37 //gr->Draw("alp");
38 grfit->SetLineColor(2);
39 grfit->Draw("lu");
40
41 //
42 // Chain Based analysis
43 //
44
45
46 TChain * chainLaser=0, *chainDz=0, *chaindEdx=0; 
47
48 void Init(){  
49   /// Load neccesary libraries
50
51   gSystem->Load("libANALYSIS");
52   gSystem->Load("libSTAT");
53   gSystem->Load("libTPCcalib");
54   gROOT->Macro("~/NimStyle.C");
55   gSystem->AddIncludePath("-I$ALICE_ROOT/TPC/macros");
56   gROOT->LoadMacro("$ALICE_ROOT/TPC/macros/AliXRDPROOFtoolkit.cxx+");
57 }
58
59 void InitChains(){  
60   AliXRDPROOFtoolkit tool;   
61   //load debug streams
62   chainLaser = tool.MakeChain("time.txt","laserInfo",0,10200);
63   chainLaser->Lookup();
64   // cosmic dZ - drfit velocity part 
65   chainDz = tool.MakeChain("time.txt","cosmicDz",0,10200);
66   chainDz->Lookup();
67   //
68   // cosmic dE - drift velocity part 
69   chaindEdx = tool.MakeChain("time.txt","cosmicdEdx",0,10200);
70   chaindEdx->Lookup();
71   //
72   // Set Alias
73   //
74   chaindEdx->SetAlias("side","(-1+(p0.fP[1]>0)*2)");
75   chaindEdx->SetAlias("der","side*(dedx0-dedx1)/(dedx0+dedx1)");
76   chaindEdx->SetAlias("derIO","side*(dedx0Out-dedx0In)/(dedx0In+dedx0Out)");
77   chaindEdx->SetAlias("dr","(1-abs(p0.fP[1]/250))");
78   chaindEdx->SetAlias("isOK","dedx0In>0&&dedx0Out>0&&dedx1In>0&&dedx1Out>0");
79   chaindEdx->SetAlias("dedxM","(dedx0+dedx1)*0.5");
80
81 }
82
83
84 void MakeTglFitCosmic(){
85   /// Fit the z correction factor
86
87   TStatToolkit toolkit;
88   Double_t chi2=0;
89   Int_t    npoints=0;
90   TVectorD fitParamC,fitParamIO;
91   TMatrixD covMatrix;  
92   //
93   // dedx delta
94   // 
95   TString fstring="";
96   fstring+="side++";
97   fstring+="p0.fP[3]++";
98   //fstring+="p0.fP[3]*dr++";
99   TString *strTheta = toolkit.FitPlane(chaindEdx,"der",fstring->Data(), "isOK", chi2,npoints,fitParamC,covMatrix);
100   chaindEdx->SetAlias("derc",strTheta.Data());
101   strTheta->Tokenize("+")->Print(); 
102   //
103   // dedx delta
104   // 
105   fstring="";
106   fstring+="side++";
107   fstring+="p0.fP[3]++";
108   //fstring+="p0.fP[3]*dr++";
109   TString *strTheta = toolkit.FitPlane(chaindEdx,"derIO",fstring->Data(), "isOK", chi2,npoints,fitParamIO,covMatrix);
110   chaindEdx->SetAlias("derIOc",strTheta.Data());
111   strTheta->Tokenize("+")->Print(); 
112   //
113   // Make Plot
114   //
115   chaindEdx->Draw("der:p0.fP[3]>>his(20,-0.5,0.5)","","prof");
116   chaindEdx->Draw("der-derc:p0.fP[3]>>hisC(20,-0.5,0.5)","","prof");
117   his->SetXTitle("tan(#theta)");
118   his->SetYTitle("(Q_{u}-Q_{d})/(Q_{u}+Q_{d})");
119   his->Draw("");
120   hisC->Draw("same");
121 }
122
123
124 void MakeTglFitCosmic(){
125   ///
126
127   TStatToolkit toolkit;
128   Double_t chi2=0;
129   Int_t    npoints=0;
130   TVectorD fitParamC,fitParamIO;
131   TMatrixD covMatrix;  
132   TString fstring="";
133   fstring="";
134   fstring+="ppit++";
135   fstring+="(trigger==1)++";
136   fstring+="(trigger==2)++";
137   fstring+="(trigger==4)++";
138   fstring+="(trigger==8)++";
139   TString *strPress = toolkit.FitPlane(chaindEdx,"(dedx0+dedx1)*0.5",fstring->Data(), "isOK", chi2,npoints,fitParamIO,covMatrix);
140   //
141   //
142   chaindEdx->SetAlias("de",strTheta.Data());
143   strTheta->Tokenize("+")->Print(); 
144
145
146 }