#include "TChain.h"
#include "TTree.h"
#include "TStyle.h"
#include "TH2F.h"
#include "TProfile.h"
#include "TCanvas.h"
#include "AliAnalysisTask.h"
#include "AliAnalysisManager.h"
#include "AliESDEvent.h"
#include "AliESDInputHandler.h"
#include "AliAnalysisTaskVtXY.h"
#include "AliESDVertex.h"
#include "AliVertexerTracks.h"
ClassImp(AliAnalysisTaskVtXY)
AliAnalysisTaskVtXY::AliAnalysisTaskVtXY(const char *name)
: AliAnalysisTask(name, ""),
fESD(0),
fList(0),
fHistVtx(0),
fHistVty(0)
{
DefineInput(0, TChain::Class());
DefineOutput(0, TList::Class());
}
void AliAnalysisTaskVtXY::ConnectInputData(Option_t *)
{
TTree* tree = dynamic_cast<TTree*> (GetInputData(0));
if (!tree) {
Printf("ERROR: Could not read chain from input slot 0");
} else {
AliESDInputHandler *esdH = dynamic_cast<AliESDInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
if (!esdH) {
Printf("ERROR: Could not get ESDInputHandler");
} else
fESD = esdH->GetEvent();
}
}
void AliAnalysisTaskVtXY::CreateOutputObjects()
{
fHistVtx = new TProfile("fHistVtx","Xvert-RMS vs sigmaX(NC)",100,0.,0.05,-1.,1.,"s");
fHistVty = new TProfile("fHistVty","Yvert-RMS vs sigmaY(NC)",100,0.,0.05,-1.,1.,"s");
fHistVtx->GetXaxis()->SetTitle("sigmaX(NContributors)");
fHistVtx->GetYaxis()->SetTitle("Xv-av&spread");
fHistVty->GetXaxis()->SetTitle("sigmaY(NContributors)");
fHistVty->GetYaxis()->SetTitle("Yv-av&spread");
fHistVtx->SetMarkerStyle(kFullCircle);
fHistVty->SetMarkerStyle(kOpenCircle);
fList = new TList();
fList->Add(fHistVtx);
fList->Add(fHistVty);
}
void AliAnalysisTaskVtXY::Exec(Option_t *)
{
if (!fESD) {
Printf("ERROR: fESD not available");
return;
}
Printf("There are %d tracks in this event", fESD->GetNumberOfTracks());
Int_t Ngood = 0;
for (Int_t iTracks = 0; iTracks < fESD->GetNumberOfTracks(); iTracks++) {
AliESDtrack* track = fESD->GetTrack(iTracks);
if (!track) {
Printf("ERROR: Could not receive track %d", iTracks);
continue;
}
Ngood++;
}
AliVertexerTracks vertexer(fESD->GetMagneticField());
vertexer.SetITSMode();
AliESDVertex *vertex = vertexer.FindPrimaryVertex(fESD);
Double_t ESDvtx[3] ={999.,999.,9999.};
Double_t XRes,YRes ;
Double_t sig[3];
if (!vertex) {
Printf("ERROR: vertex not available");
return;
}
if(!vertex->GetStatus()){
Printf("WARNING: vertexer has failed");
return;
}
TString vtitle = vertex->GetTitle();
if(!vtitle.Contains("VertexerTracksNoConstraint")){
Printf("WARNING: not VertexerTracksNoConstraint");
return;
}
ULong64_t TrigMask=0;
TrigMask = fESD->GetTriggerMask();
if(TrigMask==0){
Printf("Trigger Mask = 0");
}
if(vertex){
vertex->GetXYZ(ESDvtx);
XRes = vertex->GetXRes();
YRes = vertex->GetYRes();
vertex->GetSigmaXYZ(sig);
fHistVtx->Fill(XRes,ESDvtx[0]);
fHistVty->Fill(YRes,ESDvtx[1]);
PostData(0,fList);
}
}
void AliAnalysisTaskVtXY::Terminate(Option_t *)
{
fList = dynamic_cast<TList*>(GetOutputData(0));
if(!fList){
Printf("ERROR: fList not available");
return;
}
fHistVtx = (TProfile *)fList->At(0);
fHistVty = (TProfile *)fList->At(1);
TCanvas *c1 = new TCanvas("AliAnalysisTaskVtXY","Vtx analysis",10,10,800,800);
c1->SetFillColor(10); c1->SetHighLightColor(10);
c1->Divide(1,2);
c1->cd(1);
fHistVtx->DrawCopy("");
c1->cd(2);
fHistVty->DrawCopy("");
Double_t spread = 0.;
Double_t content = 0.;
Double_t entries = 0.;
Double_t error = 0.;
TH1D * hsx = new TH1D("hsx","Xvtx spreads",100,0.,0.050);
for(Int_t i=0; i<100; i++){
spread = fHistVtx->GetBinError(i);
content = fHistVtx->GetBinContent(i);
entries = fHistVtx->GetBinEntries(i);
error = 0.;
if(entries<10){content = 0.; spread = 0.;}
if(entries>0){error = 0.0005 + spread/TMath::Sqrt(entries);}
hsx->SetBinContent(i,spread);
hsx->SetBinError(i,error);
}
hsx->GetXaxis()->SetTitle("sigma-Xvert");
hsx->GetYaxis()->SetTitle("RMS(Xv) [cm]");
hsx->GetYaxis()->SetTitleOffset(-0.3);
hsx->GetYaxis()->SetRangeUser(0.,0.15);
hsx->SetMarkerColor(3);
hsx->SetMarkerStyle(20);
new TCanvas("cx","",50,50,800,800);
gStyle->SetOptFit(111);
TPad *px = new TPad("px","",0,0,1,1);
px->Draw();
px->cd();
px->SetFillColor(42);
px->SetFrameFillColor(10);
hsx->Fit("pol3","R","",0.001,0.02);
hsx->Draw();
TH1D * hsy = new TH1D("hsy","Yvtx spreads",100,0.,0.050);
for(Int_t i=0; i<100; i++){
spread = fHistVty->GetBinError(i);
content = fHistVty->GetBinContent(i);
entries = fHistVty->GetBinEntries(i);
error = 0.;
if(entries<10){content = 0.; spread = 0.;}
if(entries>0){error = 0.0005 + spread/TMath::Sqrt(entries);}
hsy->SetBinContent(i,spread);
hsy->SetBinError(i,error);
}
hsy->GetXaxis()->SetTitle("sigma-Yvert");
hsy->GetYaxis()->SetTitle("RMS(Yv) [cm]");
hsy->GetYaxis()->SetTitleOffset(-0.3);
hsy->GetYaxis()->SetRangeUser(0.,0.15);
hsy->SetMarkerColor(2);
hsy->SetMarkerStyle(20);
new TCanvas("cy","",100,100,800,800);
TPad *py = new TPad("py","",0,0,1,1);
py->Draw();
py->cd();
py->SetFillColor(42);
py->SetFrameFillColor(10);
hsy->Fit("pol3","R","",0.001,0.02);
hsy->Draw();
}
AliAnalysisTaskVtXY.cxx:1 AliAnalysisTaskVtXY.cxx:2 AliAnalysisTaskVtXY.cxx:3 AliAnalysisTaskVtXY.cxx:4 AliAnalysisTaskVtXY.cxx:5 AliAnalysisTaskVtXY.cxx:6 AliAnalysisTaskVtXY.cxx:7 AliAnalysisTaskVtXY.cxx:8 AliAnalysisTaskVtXY.cxx:9 AliAnalysisTaskVtXY.cxx:10 AliAnalysisTaskVtXY.cxx:11 AliAnalysisTaskVtXY.cxx:12 AliAnalysisTaskVtXY.cxx:13 AliAnalysisTaskVtXY.cxx:14 AliAnalysisTaskVtXY.cxx:15 AliAnalysisTaskVtXY.cxx:16 AliAnalysisTaskVtXY.cxx:17 AliAnalysisTaskVtXY.cxx:18 AliAnalysisTaskVtXY.cxx:19 AliAnalysisTaskVtXY.cxx:20 AliAnalysisTaskVtXY.cxx:21 AliAnalysisTaskVtXY.cxx:22 AliAnalysisTaskVtXY.cxx:23 AliAnalysisTaskVtXY.cxx:24 AliAnalysisTaskVtXY.cxx:25 AliAnalysisTaskVtXY.cxx:26 AliAnalysisTaskVtXY.cxx:27 AliAnalysisTaskVtXY.cxx:28 AliAnalysisTaskVtXY.cxx:29 AliAnalysisTaskVtXY.cxx:30 AliAnalysisTaskVtXY.cxx:31 AliAnalysisTaskVtXY.cxx:32 AliAnalysisTaskVtXY.cxx:33 AliAnalysisTaskVtXY.cxx:34 AliAnalysisTaskVtXY.cxx:35 AliAnalysisTaskVtXY.cxx:36 AliAnalysisTaskVtXY.cxx:37 AliAnalysisTaskVtXY.cxx:38 AliAnalysisTaskVtXY.cxx:39 AliAnalysisTaskVtXY.cxx:40 AliAnalysisTaskVtXY.cxx:41 AliAnalysisTaskVtXY.cxx:42 AliAnalysisTaskVtXY.cxx:43 AliAnalysisTaskVtXY.cxx:44 AliAnalysisTaskVtXY.cxx:45 AliAnalysisTaskVtXY.cxx:46 AliAnalysisTaskVtXY.cxx:47 AliAnalysisTaskVtXY.cxx:48 AliAnalysisTaskVtXY.cxx:49 AliAnalysisTaskVtXY.cxx:50 AliAnalysisTaskVtXY.cxx:51 AliAnalysisTaskVtXY.cxx:52 AliAnalysisTaskVtXY.cxx:53 AliAnalysisTaskVtXY.cxx:54 AliAnalysisTaskVtXY.cxx:55 AliAnalysisTaskVtXY.cxx:56 AliAnalysisTaskVtXY.cxx:57 AliAnalysisTaskVtXY.cxx:58 AliAnalysisTaskVtXY.cxx:59 AliAnalysisTaskVtXY.cxx:60 AliAnalysisTaskVtXY.cxx:61 AliAnalysisTaskVtXY.cxx:62 AliAnalysisTaskVtXY.cxx:63 AliAnalysisTaskVtXY.cxx:64 AliAnalysisTaskVtXY.cxx:65 AliAnalysisTaskVtXY.cxx:66 AliAnalysisTaskVtXY.cxx:67 AliAnalysisTaskVtXY.cxx:68 AliAnalysisTaskVtXY.cxx:69 AliAnalysisTaskVtXY.cxx:70 AliAnalysisTaskVtXY.cxx:71 AliAnalysisTaskVtXY.cxx:72 AliAnalysisTaskVtXY.cxx:73 AliAnalysisTaskVtXY.cxx:74 AliAnalysisTaskVtXY.cxx:75 AliAnalysisTaskVtXY.cxx:76 AliAnalysisTaskVtXY.cxx:77 AliAnalysisTaskVtXY.cxx:78 AliAnalysisTaskVtXY.cxx:79 AliAnalysisTaskVtXY.cxx:80 AliAnalysisTaskVtXY.cxx:81 AliAnalysisTaskVtXY.cxx:82 AliAnalysisTaskVtXY.cxx:83 AliAnalysisTaskVtXY.cxx:84 AliAnalysisTaskVtXY.cxx:85 AliAnalysisTaskVtXY.cxx:86 AliAnalysisTaskVtXY.cxx:87 AliAnalysisTaskVtXY.cxx:88 AliAnalysisTaskVtXY.cxx:89 AliAnalysisTaskVtXY.cxx:90 AliAnalysisTaskVtXY.cxx:91 AliAnalysisTaskVtXY.cxx:92 AliAnalysisTaskVtXY.cxx:93 AliAnalysisTaskVtXY.cxx:94 AliAnalysisTaskVtXY.cxx:95 AliAnalysisTaskVtXY.cxx:96 AliAnalysisTaskVtXY.cxx:97 AliAnalysisTaskVtXY.cxx:98 AliAnalysisTaskVtXY.cxx:99 AliAnalysisTaskVtXY.cxx:100 AliAnalysisTaskVtXY.cxx:101 AliAnalysisTaskVtXY.cxx:102 AliAnalysisTaskVtXY.cxx:103 AliAnalysisTaskVtXY.cxx:104 AliAnalysisTaskVtXY.cxx:105 AliAnalysisTaskVtXY.cxx:106 AliAnalysisTaskVtXY.cxx:107 AliAnalysisTaskVtXY.cxx:108 AliAnalysisTaskVtXY.cxx:109 AliAnalysisTaskVtXY.cxx:110 AliAnalysisTaskVtXY.cxx:111 AliAnalysisTaskVtXY.cxx:112 AliAnalysisTaskVtXY.cxx:113 AliAnalysisTaskVtXY.cxx:114 AliAnalysisTaskVtXY.cxx:115 AliAnalysisTaskVtXY.cxx:116 AliAnalysisTaskVtXY.cxx:117 AliAnalysisTaskVtXY.cxx:118 AliAnalysisTaskVtXY.cxx:119 AliAnalysisTaskVtXY.cxx:120 AliAnalysisTaskVtXY.cxx:121 AliAnalysisTaskVtXY.cxx:122 AliAnalysisTaskVtXY.cxx:123 AliAnalysisTaskVtXY.cxx:124 AliAnalysisTaskVtXY.cxx:125 AliAnalysisTaskVtXY.cxx:126 AliAnalysisTaskVtXY.cxx:127 AliAnalysisTaskVtXY.cxx:128 AliAnalysisTaskVtXY.cxx:129 AliAnalysisTaskVtXY.cxx:130 AliAnalysisTaskVtXY.cxx:131 AliAnalysisTaskVtXY.cxx:132 AliAnalysisTaskVtXY.cxx:133 AliAnalysisTaskVtXY.cxx:134 AliAnalysisTaskVtXY.cxx:135 AliAnalysisTaskVtXY.cxx:136 AliAnalysisTaskVtXY.cxx:137 AliAnalysisTaskVtXY.cxx:138 AliAnalysisTaskVtXY.cxx:139 AliAnalysisTaskVtXY.cxx:140 AliAnalysisTaskVtXY.cxx:141 AliAnalysisTaskVtXY.cxx:142 AliAnalysisTaskVtXY.cxx:143 AliAnalysisTaskVtXY.cxx:144 AliAnalysisTaskVtXY.cxx:145 AliAnalysisTaskVtXY.cxx:146 AliAnalysisTaskVtXY.cxx:147 AliAnalysisTaskVtXY.cxx:148 AliAnalysisTaskVtXY.cxx:149 AliAnalysisTaskVtXY.cxx:150 AliAnalysisTaskVtXY.cxx:151 AliAnalysisTaskVtXY.cxx:152 AliAnalysisTaskVtXY.cxx:153 AliAnalysisTaskVtXY.cxx:154 AliAnalysisTaskVtXY.cxx:155 AliAnalysisTaskVtXY.cxx:156 AliAnalysisTaskVtXY.cxx:157 AliAnalysisTaskVtXY.cxx:158 AliAnalysisTaskVtXY.cxx:159 AliAnalysisTaskVtXY.cxx:160 AliAnalysisTaskVtXY.cxx:161 AliAnalysisTaskVtXY.cxx:162 AliAnalysisTaskVtXY.cxx:163 AliAnalysisTaskVtXY.cxx:164 AliAnalysisTaskVtXY.cxx:165 AliAnalysisTaskVtXY.cxx:166 AliAnalysisTaskVtXY.cxx:167 AliAnalysisTaskVtXY.cxx:168 AliAnalysisTaskVtXY.cxx:169 AliAnalysisTaskVtXY.cxx:170 AliAnalysisTaskVtXY.cxx:171 AliAnalysisTaskVtXY.cxx:172 AliAnalysisTaskVtXY.cxx:173 AliAnalysisTaskVtXY.cxx:174 AliAnalysisTaskVtXY.cxx:175 AliAnalysisTaskVtXY.cxx:176 AliAnalysisTaskVtXY.cxx:177 AliAnalysisTaskVtXY.cxx:178 AliAnalysisTaskVtXY.cxx:179 AliAnalysisTaskVtXY.cxx:180 AliAnalysisTaskVtXY.cxx:181 AliAnalysisTaskVtXY.cxx:182 AliAnalysisTaskVtXY.cxx:183 AliAnalysisTaskVtXY.cxx:184 AliAnalysisTaskVtXY.cxx:185 AliAnalysisTaskVtXY.cxx:186 AliAnalysisTaskVtXY.cxx:187 AliAnalysisTaskVtXY.cxx:188 AliAnalysisTaskVtXY.cxx:189 AliAnalysisTaskVtXY.cxx:190 AliAnalysisTaskVtXY.cxx:191 AliAnalysisTaskVtXY.cxx:192 AliAnalysisTaskVtXY.cxx:193 AliAnalysisTaskVtXY.cxx:194 AliAnalysisTaskVtXY.cxx:195 AliAnalysisTaskVtXY.cxx:196 AliAnalysisTaskVtXY.cxx:197 AliAnalysisTaskVtXY.cxx:198 AliAnalysisTaskVtXY.cxx:199 AliAnalysisTaskVtXY.cxx:200 AliAnalysisTaskVtXY.cxx:201 AliAnalysisTaskVtXY.cxx:202 AliAnalysisTaskVtXY.cxx:203 AliAnalysisTaskVtXY.cxx:204 AliAnalysisTaskVtXY.cxx:205 AliAnalysisTaskVtXY.cxx:206 AliAnalysisTaskVtXY.cxx:207 AliAnalysisTaskVtXY.cxx:208 AliAnalysisTaskVtXY.cxx:209 AliAnalysisTaskVtXY.cxx:210 AliAnalysisTaskVtXY.cxx:211 AliAnalysisTaskVtXY.cxx:212 AliAnalysisTaskVtXY.cxx:213 AliAnalysisTaskVtXY.cxx:214 AliAnalysisTaskVtXY.cxx:215 AliAnalysisTaskVtXY.cxx:216 AliAnalysisTaskVtXY.cxx:217 AliAnalysisTaskVtXY.cxx:218 AliAnalysisTaskVtXY.cxx:219 AliAnalysisTaskVtXY.cxx:220 AliAnalysisTaskVtXY.cxx:221 AliAnalysisTaskVtXY.cxx:222 AliAnalysisTaskVtXY.cxx:223 AliAnalysisTaskVtXY.cxx:224 AliAnalysisTaskVtXY.cxx:225 AliAnalysisTaskVtXY.cxx:226 AliAnalysisTaskVtXY.cxx:227 AliAnalysisTaskVtXY.cxx:228 AliAnalysisTaskVtXY.cxx:229 AliAnalysisTaskVtXY.cxx:230 AliAnalysisTaskVtXY.cxx:231 AliAnalysisTaskVtXY.cxx:232 AliAnalysisTaskVtXY.cxx:233 AliAnalysisTaskVtXY.cxx:234 AliAnalysisTaskVtXY.cxx:235 AliAnalysisTaskVtXY.cxx:236 AliAnalysisTaskVtXY.cxx:237 AliAnalysisTaskVtXY.cxx:238 AliAnalysisTaskVtXY.cxx:239 AliAnalysisTaskVtXY.cxx:240 AliAnalysisTaskVtXY.cxx:241 AliAnalysisTaskVtXY.cxx:242 AliAnalysisTaskVtXY.cxx:243 AliAnalysisTaskVtXY.cxx:244 AliAnalysisTaskVtXY.cxx:245 AliAnalysisTaskVtXY.cxx:246 AliAnalysisTaskVtXY.cxx:247 AliAnalysisTaskVtXY.cxx:248 AliAnalysisTaskVtXY.cxx:249