]>
Commit | Line | Data |
---|---|---|
ae7d73d2 | 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 | ||
f007cb5f | 133 | .L AliITSclusterComparison.C+ |
134 | .L AliGenInfo.C+ | |
ae7d73d2 | 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 | */ |