32 #include "AliAnalysisTask.h" 33 #include "AliAnalysisManager.h" 35 #include "AliESDEvent.h" 36 #include "AliESDInputHandler.h" 40 #include "AliESDVertex.h" 41 #include "AliVertexerTracks.h" 56 DefineInput(0, TChain::Class());
57 DefineOutput(0, TList::Class());
67 TTree* tree =
dynamic_cast<TTree*
> (GetInputData(0));
69 Printf(
"ERROR: Could not read chain from input slot 0");
76 AliESDInputHandler *esdH =
dynamic_cast<AliESDInputHandler*
> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
79 Printf(
"ERROR: Could not get ESDInputHandler");
91 fHistVtx =
new TProfile(
"fHistVtx",
"Xvert-RMS vs sigmaX(NC)",100,0.,0.05,-1.,1.,
"s");
92 fHistVty =
new TProfile(
"fHistVty",
"Yvert-RMS vs sigmaY(NC)",100,0.,0.05,-1.,1.,
"s");
93 fHistVtx->GetXaxis()->SetTitle(
"sigmaX(NContributors)");
94 fHistVtx->GetYaxis()->SetTitle(
"Xv-av&spread");
95 fHistVty->GetXaxis()->SetTitle(
"sigmaY(NContributors)");
96 fHistVty->GetYaxis()->SetTitle(
"Yv-av&spread");
97 fHistVtx->SetMarkerStyle(kFullCircle);
98 fHistVty->SetMarkerStyle(kOpenCircle);
112 Printf(
"ERROR: fESD not available");
115 Printf(
"There are %d tracks in this event",
fESD->GetNumberOfTracks());
118 for (
Int_t iTracks = 0; iTracks <
fESD->GetNumberOfTracks(); iTracks++) {
119 AliESDtrack* track =
fESD->GetTrack(iTracks);
121 Printf(
"ERROR: Could not receive track %d", iTracks);
127 AliVertexerTracks vertexer(
fESD->GetMagneticField());
128 vertexer.SetITSMode();
129 AliESDVertex *vertex = vertexer.FindPrimaryVertex(
fESD);
133 Double_t ESDvtx[3] ={999.,999.,9999.};
138 Printf(
"ERROR: vertex not available");
142 if(!vertex->GetStatus()){
143 Printf(
"WARNING: vertexer has failed");
146 TString vtitle = vertex->GetTitle();
148 if(!vtitle.Contains(
"VertexerTracksNoConstraint")){
149 Printf(
"WARNING: not VertexerTracksNoConstraint");
152 ULong64_t TrigMask=0;
153 TrigMask =
fESD->GetTriggerMask();
156 Printf(
"Trigger Mask = 0");
160 vertex->GetXYZ(ESDvtx);
161 XRes = vertex->GetXRes();
162 YRes = vertex->GetYRes();
163 vertex->GetSigmaXYZ(sig);
176 fList =
dynamic_cast<TList*
>(GetOutputData(0));
178 Printf(
"ERROR: fList not available");
183 TCanvas *c1 =
new TCanvas(
"AliAnalysisTaskVtXY",
"Vtx analysis",10,10,800,800);
184 c1->SetFillColor(10); c1->SetHighLightColor(10);
195 TH1D * hsx =
new TH1D(
"hsx",
"Xvtx spreads",100,0.,0.050);
197 for(
Int_t i=0; i<100; i++){
199 content =
fHistVtx->GetBinContent(i);
200 entries =
fHistVtx->GetBinEntries(i);
202 if(entries<10){content = 0.; spread = 0.;}
203 if(entries>0){error = 0.0005 + spread/TMath::Sqrt(entries);}
204 hsx->SetBinContent(i,spread);
205 hsx->SetBinError(i,error);
207 hsx->GetXaxis()->SetTitle(
"sigma-Xvert");
208 hsx->GetYaxis()->SetTitle(
"RMS(Xv) [cm]");
209 hsx->GetYaxis()->SetTitleOffset(-0.3);
210 hsx->GetYaxis()->SetRangeUser(0.,0.15);
211 hsx->SetMarkerColor(3);
212 hsx->SetMarkerStyle(20);
213 new TCanvas(
"cx",
"",50,50,800,800);
214 gStyle->SetOptFit(111);
215 TPad *px =
new TPad(
"px",
"",0,0,1,1);
218 px->SetFillColor(42);
219 px->SetFrameFillColor(10);
220 hsx->Fit(
"pol3",
"R",
"",0.001,0.02);
223 TH1D * hsy =
new TH1D(
"hsy",
"Yvtx spreads",100,0.,0.050);
225 for(
Int_t i=0; i<100; i++){
227 content =
fHistVty->GetBinContent(i);
228 entries =
fHistVty->GetBinEntries(i);
230 if(entries<10){content = 0.; spread = 0.;}
231 if(entries>0){error = 0.0005 + spread/TMath::Sqrt(entries);}
232 hsy->SetBinContent(i,spread);
233 hsy->SetBinError(i,error);
235 hsy->GetXaxis()->SetTitle(
"sigma-Yvert");
236 hsy->GetYaxis()->SetTitle(
"RMS(Yv) [cm]");
237 hsy->GetYaxis()->SetTitleOffset(-0.3);
238 hsy->GetYaxis()->SetRangeUser(0.,0.15);
239 hsy->SetMarkerColor(2);
240 hsy->SetMarkerStyle(20);
241 new TCanvas(
"cy",
"",100,100,800,800);
242 TPad *py =
new TPad(
"py",
"",0,0,1,1);
245 py->SetFillColor(42);
246 py->SetFrameFillColor(10);
247 hsy->Fit(
"pol3",
"R",
"",0.001,0.02);
virtual void CreateOutputObjects()
virtual void ConnectInputData(Option_t *)
virtual void Terminate(Option_t *)
virtual void Exec(Option_t *option)