]> git.uio.no Git - u/mrichter/AliRoot.git/blame - STEER/AliITSclusterComparison.h
Added protection (E. Fragiacomo)
[u/mrichter/AliRoot.git] / STEER / AliITSclusterComparison.h
CommitLineData
ae7d73d2 1#if !defined(__CINT__) || defined(__MAKECINT__)
2#include "AliTrackReference.h"
3#endif
4
5
6class 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
55class AliITSClusterErrAnal: public TObject{
56public:
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);
68public:
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
89void 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
108Float_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
f007cb5f 133.L AliITSclusterComparison.C+
134.L AliGenInfo.C+
ae7d73d2 135
136AliITSClusterErrAnal anal;
137anal.SetIO(0);
138anal.LoadParticles();
139anal.SortReferences();
140anal.LoadClusters();
141
142
143anal.Analyze(30000000);
144
145
146anal.MakeSeeds(-3.63); >seed1.txt
147
148
149TFile f("itsclusteranal.root");
150TTree * tree= (TTree*)f.Get("itscl")
151TTree * tree2= (TTree*)f.Get("Clusters")
152
153AliComparisonDraw comp;
154comp.fTree = tree;
155
156TH1F * hpools = new TH1F("pools","pools",100,-6,6); hpools->SetLineColor(4); hpools->SetFillColor(0);
157TH1F * hpools0 = new TH1F("pools0","pools0",100,-6,6); hpools0->SetLineColor(2); hpools0->SetFillColor(0);
158
159TH1F * hsigma = new TH1F("hsigma","hsigma",1000,0,0.3)
160
161TCut cprim("cprim","fCl.fTracks[0]<110000&&fCl.fTracks[1]<110000&&fCl.fTracks[2]<110000");
162
163TCut cprim("cprim","fCl.fTracks[0]<24000&&fCl.fTracks[1]<24000&&fCl.fTracks[2]<24000");
164TCut cpt("cpt","sqrt(fRef.fPx**2+fRef.fPy**2)>0.05");
165TCut cphi("cphi","abs(fPhiL)<0.9");
166TCut ctheta("ctheta","abs(fTheta)<1.1");
167TCut cangle = cphi+ctheta;
168TCut cpools5("cpools5","abs(fPoolY)<5&&abs(fPoolZ)<5");
169TCut cpools52("cpools52","abs(fPoolY2)<5&&abs(fPoolZ2)<5");
170TCut cpools62("cpools52","sqrt(fPoolY2**2+fPoolZ2**2)<6");
171TCut cgold("cgold","abs(fCl.fNy+fCl.fNz-fTNy-fTNz)<1.5");
172TCut cback("cback","fRef.fX*fRef.fPx+fRef.fPy*fRef.fY<0");
173
174comp.fTree->Draw("fPoolY2>>pools","fStatus==1&&abs(fLayer-0.5)<0.6&&fIsPrim"+cpt+cangle+cpools62,"")
175
176comp.DrawXY("fErrType","fPoolZ2","fStatus==1&&abs(fLayer-4.5)<0.6","1",8,99.9,108,-5,5)
177
178comp.DrawXY("fCl.fType","fPoolY2","fStatus==1&&abs(fLayer-4.5)<0.6&&fIsPrim","1",4,102.9,106.1,-5,5)
179comp.DrawXY("abs(fCl.fChargeRatio)","fPoolY2","fStatus==1&&abs(fLayer-4.5)<0.6&&fIsPrim","1",4,0.0,1,-5,5)
180
181TProfile prof1("prof1","prof1",30,0.1,1); prof1.SetLineColor(2);
182TProfile prof2("prof2","prof2",30,0.1,1); prof2.SetLineColor(3);
183
184comp.fTree->Draw("fNormQ/fExpectedQ:fBeta2>>prof1","fStatus==1&&fCl.fLayer>1&&fNormQ/fExpectedQ<1.5&&fCl.fNz<4&&abs(fPDG)==211&&fIsPrim")
185comp.fTree->Draw("fNormQ/fExpectedQ:fBeta2>>prof2","fStatus==1&&fCl.fLayer>1&&fNormQ/fExpectedQ<1.5&&fCl.fNz<4&&abs(fPDG)!=211&&fIsPrim")
186
187prof1->Draw();prof2->Draw("same");
188
189
190TH1F * hdeltam = new TH1F("hdeltam" ,"hdeltam",100,-3,10); hdeltam->SetLineColor(4); hdeltam->SetFillColor(0);
191TH1F * hdelta0 = new TH1F("hdelta0" ,"hdelta0",100,-3,10); hdelta0->SetLineColor(2); hdelta0->SetFillColor(0);
192
193
194
195*/