1 #if !defined(__CINT__) || defined(__MAKECINT__)
2 #include "AliTrackReference.h"
6 class AliITSCI: public TObject {
10 Float_t GetExpectedQ();
13 AliTrackReference fRef;
51 void Update(AliITStrackerMI*tracker);
55 class AliITSClusterErrAnal: public TObject{
57 AliITSClusterErrAnal(Char_t *chloader = "galice.root");
58 void SetIO(Int_t event);
59 Int_t Analyze(Int_t trackmax);
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);
69 AliRunLoader * fRunLoader;
70 AliLoader * fITSLoader;
73 TTree * fReferenceTree;
79 AliITStrackerMI *fTracker;
81 TObjArray *fClusters; //array of clusters
82 TObjArray fExactPoints;
83 TObjArray *fReferences;
84 TObjArray *fParticles;
85 ClassDef(AliITSClusterErrAnal,1)
89 void AliITSCI::Update(AliITStrackerMI*tracker)
95 fCharge = fP.GetPDG()->Charge();
96 //fIsPrim = (fP.GetMother(0)>0)? kFALSE :kTRUE;
97 Double_t vertex = TMath::Sqrt( fP.Vx()*fP.Vx()
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();
108 Float_t AliITSCI::GetExpectedQ()
116 Double_t p2= fPtotal*fPtotal;
117 Float_t mass = fP.GetPDG()->Mass();
118 Double_t beta2=p2/(p2 + mass*mass);
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;
127 return dE*10000000.; //normalization to ADC
128 //return dE; //normalization to ADC
133 .L AliITSclusterComparison.C+
136 AliITSClusterErrAnal anal;
138 anal.LoadParticles();
139 anal.SortReferences();
143 anal.Analyze(30000000);
146 anal.MakeSeeds(-3.63); >seed1.txt
149 TFile f("itsclusteranal.root");
150 TTree * tree= (TTree*)f.Get("itscl")
151 TTree * tree2= (TTree*)f.Get("Clusters")
153 AliComparisonDraw comp;
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);
159 TH1F * hsigma = new TH1F("hsigma","hsigma",1000,0,0.3)
161 TCut cprim("cprim","fCl.fTracks[0]<110000&&fCl.fTracks[1]<110000&&fCl.fTracks[2]<110000");
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");
174 comp.fTree->Draw("fPoolY2>>pools","fStatus==1&&abs(fLayer-0.5)<0.6&&fIsPrim"+cpt+cangle+cpools62,"")
176 comp.DrawXY("fErrType","fPoolZ2","fStatus==1&&abs(fLayer-4.5)<0.6","1",8,99.9,108,-5,5)
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)
181 TProfile prof1("prof1","prof1",30,0.1,1); prof1.SetLineColor(2);
182 TProfile prof2("prof2","prof2",30,0.1,1); prof2.SetLineColor(3);
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")
187 prof1->Draw();prof2->Draw("same");
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);