]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STEER/AliITSclusterComparison.h
Separated TOF libraries (base,rec,sim)
[u/mrichter/AliRoot.git] / STEER / AliITSclusterComparison.h
1 #if !defined(__CINT__) || defined(__MAKECINT__)
2 #include "AliTrackReference.h"
3 #endif
4
5
6 class AliITSCI: public TObject {
7   public :
8   AliITSCI(){;}
9   virtual ~AliITSCI(){;}
10   Float_t GetExpectedQ();
11   //
12   AliITSclusterV2 fCl;
13   AliTrackReference fRef;
14   TParticle fP;
15   Char_t fStatus;
16   //
17   Float_t fBeta2;
18   Float_t fVertex;
19   Int_t fNClusters;
20   Int_t   fLabPos;
21   Float_t fExpectedQ;
22   Float_t fNormQ;
23   Int_t   fPDG;
24   Int_t   fNTracks;
25   Float_t fPt;
26   Float_t fPtotal;
27   Float_t fR;
28   Float_t fCharge;
29   Bool_t  fIsPrim;
30   Double_t fDy;
31   Double_t fDz;
32   Double_t fPoolY;
33   Double_t fPoolY2;
34   Double_t fPoolZ;
35   Double_t fPoolZ2;
36   Double_t fErrY;
37   Double_t fErrZ;
38   Int_t    fErrType;
39   Double_t fPhiCl;
40   Double_t fRCl;
41   Double_t fLx;
42   Double_t fLy;
43   Double_t fGx;
44   Double_t fGy;
45   Float_t  fTNy;
46   Float_t  fTNz;
47   Float_t  fTheta;
48   Double_t fPhi;
49   Double_t fPhiL;
50   Int_t fLayer;
51   void Update(AliITStrackerMI*tracker);
52   ClassDef(AliITSCI,1)
53 };
54
55 class AliITSClusterErrAnal: public TObject{
56 public: 
57   AliITSClusterErrAnal(Char_t *chloader  = "galice.root");
58   void SetIO(Int_t event);  
59   Int_t Analyze(Int_t trackmax);
60   void LoadClusters();
61   void LoadParticles();
62   void SignDeltas( TObjArray *ClusterArray, Float_t vz);
63   void SortReferences();
64   AliITSclusterV2 * FindNearestCluster(AliITSCI * clinfo, Float_t dmax=0.5);
65   void GetNTeor(Int_t layer, Float_t theta, Float_t phi, Float_t &ny, Float_t &nz);
66   Int_t GetError(Int_t layer, const AliITSclusterV2*cl, Float_t theta, Float_t phi, Float_t expQ, Float_t &erry, Float_t &errz);
67   void MakeSeeds(Double_t zv);
68 public:
69   AliRunLoader * fRunLoader;
70   AliLoader * fITSLoader;
71   TTree * fHitTree;
72   TTree * fClusterTree;
73   TTree * fReferenceTree;
74   AliITS * fITS;
75   //
76   TTree * fTreeA;
77   TTree * fTreeB;
78   TFile * fFileA;
79   AliITStrackerMI *fTracker;
80   AliStack *fStack;
81   TObjArray *fClusters;  //array of clusters
82   TObjArray fExactPoints;
83   TObjArray *fReferences;
84   TObjArray *fParticles;
85   ClassDef(AliITSClusterErrAnal,1)
86 };
87
88
89 void AliITSCI::Update(AliITStrackerMI*tracker)
90 {
91   //
92   //
93   fPt     = fRef.Pt();
94   fR      = fRef.R();
95   fCharge = fP.GetPDG()->Charge();
96   //fIsPrim = (fP.GetMother(0)>0)? kFALSE :kTRUE;
97   Double_t vertex = TMath::Sqrt( fP.Vx()*fP.Vx()
98                                 +fP.Vy()*fP.Vy());
99   fVertex = vertex; 
100   fIsPrim = (vertex<1) ? kTRUE:kFALSE;
101   fTheta  = fRef.Pz()/fRef.Pt();
102   fPhi    =  TMath::ATan2(fRef.Py(),fRef.Px());  
103   fPDG    = fP.GetPdgCode();
104   fExpectedQ = GetExpectedQ();
105 }
106
107
108 Float_t AliITSCI::GetExpectedQ()
109 {
110   //
111   //
112   //
113   //fPtotal = fP.P();
114   fPtotal = fRef.P();
115
116   Double_t p2= fPtotal*fPtotal;
117   Float_t mass = fP.GetPDG()->Mass();
118   Double_t beta2=p2/(p2 + mass*mass);
119   fBeta2 = beta2;
120   Float_t d=0.003;
121   //  Double_t dE=0.153e-3/beta2*(log(5940*beta2/(1-beta2)) - beta2)*d;
122   //dE+=0.33e-3/(beta2)*d;
123   //if (beta2/(1-beta2)>3.5*3.5)
124   //  dE=0.153e-3/beta2*(log(3.5*5940)+0.5*log(beta2/(1-beta2)) - beta2)*d;
125   Double_t dE = 0.22*0.153e-3*(39.2-55.6*beta2+28.7*beta2*beta2+27.41/beta2)*d;
126   
127   return dE*10000000.; //normalization  to ADC
128   //return dE; //normalization  to ADC
129 }
130
131 /*
132
133 .L $ALICE_ROOT/COMPARISON/AliITSclusterComparison.C+ 
134 .L $ALICE_ROOT/COMPARISON/AliGenInfo.C+ 
135  
136 AliITSClusterErrAnal anal;
137 anal.SetIO(0); 
138 anal.LoadParticles();
139 anal.SortReferences();
140 anal.LoadClusters();
141
142
143 anal.Analyze(30000000);
144
145
146 anal.MakeSeeds(-3.63); >seed1.txt
147
148
149 TFile f("itsclusteranal.root");
150 TTree * tree= (TTree*)f.Get("itscl")
151 TTree * tree2= (TTree*)f.Get("Clusters")
152
153 AliComparisonDraw comp;
154 comp.fTree = tree;
155
156 TH1F * hpools = new TH1F("pools","pools",100,-6,6); hpools->SetLineColor(4); hpools->SetFillColor(0);
157 TH1F * hpools0 = new TH1F("pools0","pools0",100,-6,6);  hpools0->SetLineColor(2); hpools0->SetFillColor(0);
158
159 TH1F * hsigma = new TH1F("hsigma","hsigma",1000,0,0.3)
160
161 TCut cprim("cprim","fCl.fTracks[0]<110000&&fCl.fTracks[1]<110000&&fCl.fTracks[2]<110000");
162
163 TCut cprim("cprim","fCl.fTracks[0]<24000&&fCl.fTracks[1]<24000&&fCl.fTracks[2]<24000");
164 TCut cpt("cpt","sqrt(fRef.fPx**2+fRef.fPy**2)>0.05");
165 TCut cphi("cphi","abs(fPhiL)<0.9");
166 TCut ctheta("ctheta","abs(fTheta)<1.1");
167 TCut cangle = cphi+ctheta;
168 TCut cpools5("cpools5","abs(fPoolY)<5&&abs(fPoolZ)<5");
169 TCut cpools52("cpools52","abs(fPoolY2)<5&&abs(fPoolZ2)<5");
170 TCut cpools62("cpools52","sqrt(fPoolY2**2+fPoolZ2**2)<6");
171 TCut cgold("cgold","abs(fCl.fNy+fCl.fNz-fTNy-fTNz)<1.5");
172 TCut cback("cback","fRef.fX*fRef.fPx+fRef.fPy*fRef.fY<0");
173
174 comp.fTree->Draw("fPoolY2>>pools","fStatus==1&&abs(fLayer-0.5)<0.6&&fIsPrim"+cpt+cangle+cpools62,"")
175
176 comp.DrawXY("fErrType","fPoolZ2","fStatus==1&&abs(fLayer-4.5)<0.6","1",8,99.9,108,-5,5)
177
178 comp.DrawXY("fCl.fType","fPoolY2","fStatus==1&&abs(fLayer-4.5)<0.6&&fIsPrim","1",4,102.9,106.1,-5,5)
179 comp.DrawXY("abs(fCl.fChargeRatio)","fPoolY2","fStatus==1&&abs(fLayer-4.5)<0.6&&fIsPrim","1",4,0.0,1,-5,5)
180
181 TProfile prof1("prof1","prof1",30,0.1,1); prof1.SetLineColor(2);
182 TProfile prof2("prof2","prof2",30,0.1,1); prof2.SetLineColor(3);
183
184 comp.fTree->Draw("fNormQ/fExpectedQ:fBeta2>>prof1","fStatus==1&&fCl.fLayer>1&&fNormQ/fExpectedQ<1.5&&fCl.fNz<4&&abs(fPDG)==211&&fIsPrim")
185 comp.fTree->Draw("fNormQ/fExpectedQ:fBeta2>>prof2","fStatus==1&&fCl.fLayer>1&&fNormQ/fExpectedQ<1.5&&fCl.fNz<4&&abs(fPDG)!=211&&fIsPrim")
186
187 prof1->Draw();prof2->Draw("same");
188
189
190 TH1F * hdeltam   = new TH1F("hdeltam" ,"hdeltam",100,-3,10);  hdeltam->SetLineColor(4); hdeltam->SetFillColor(0);
191 TH1F * hdelta0  =  new TH1F("hdelta0" ,"hdelta0",100,-3,10);  hdelta0->SetLineColor(2); hdelta0->SetFillColor(0);
192
193
194
195 */