1 /* $Id: AliPhiCorrelationsQATask.cxx 47416 2011-02-15 13:55:09Z jgrosseo $ */
3 #include "AliPhiCorrelationsQATask.h"
10 #include <AliESDVertex.h>
11 #include <AliESDEvent.h>
12 #include <AliMCEvent.h>
14 #include <AliHeader.h>
15 #include <AliAnalysisManager.h>
16 #include <AliCentrality.h>
18 #include "AliESDtrackCuts.h"
20 ClassImp(AliPhiCorrelationsQATask)
22 AliPhiCorrelationsQATask::AliPhiCorrelationsQATask(const char* opt) :
23 AliAnalysisTaskSE("AliPhiCorrelationsQATask"),
30 fCentralityCorrelation(0),
33 fUseUncheckedCentrality(kFALSE)
36 // Constructor. Initialization of pointers
39 // Define input and output slots here
40 DefineOutput(1, TList::Class());
42 AliLog::SetClassDebugLevel("AliPhiCorrelationsQATask", AliLog::kWarning);
45 AliPhiCorrelationsQATask::~AliPhiCorrelationsQATask()
51 // histograms are in the output list and deleted when the output
52 // list is deleted by the TSelector dtor
54 if (fOutput && !AliAnalysisManager::GetAnalysisManager()->IsProofMode()) {
60 void AliPhiCorrelationsQATask::UserCreateOutputObjects()
62 // create result objects and add to output list
64 Printf("AliPhiCorrelationsQATask::CreateOutputObjects");
65 //AliLog::SetClassDebugLevel("AliPhysicsSelection", AliLog::kDebug);
70 fCentralityCorrelation = new TH2F("fCentralityCorrelation", ";v0 centr;spd centr", 100, 0, 100.001, 100, 0, 100.001);
71 fOutput->Add(fCentralityCorrelation);
73 fEsdTrackCuts = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
74 fEsdTrackCuts->SetMinNClustersTPC(70);
76 fEsdTrackCuts->SetMaxDCAToVertexZ();
77 fEsdTrackCuts->SetMaxDCAToVertexXY();
78 fEsdTrackCuts->SetDCAToVertex2D(kFALSE);
79 fEsdTrackCuts->SetName("cuts_quality_only");
80 fEsdTrackCuts->DefineHistograms();
81 fOutput->Add(fEsdTrackCuts);
83 fEsdTrackCuts2 = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
84 fEsdTrackCuts2->SetMinNClustersTPC(70);
85 fEsdTrackCuts2->SetName("cuts_quality_dca");
86 fEsdTrackCuts2->DefineHistograms();
87 fOutput->Add(fEsdTrackCuts2);
89 fGlobalTracks = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010();
90 fGlobalTracks->SetName("global_cuts");
91 fGlobalTracks->DefineHistograms();
92 fOutput->Add(fGlobalTracks);
94 fCheckITS = new AliESDtrackCuts;
95 fCheckITS->SetRequireITSRefit(kTRUE);
96 fCheckITS->SetClusterRequirementITS(AliESDtrackCuts::kSPD,
97 AliESDtrackCuts::kAny);
98 fCheckITS->SetDCAToVertex2D(kFALSE);
99 fCheckITS->SetRequireSigmaToVertex(kFALSE);
100 fCheckITS->SetName("check_its");
101 fCheckITS->DefineHistograms();
102 fOutput->Add(fCheckITS);
104 fDCAPrimaries = new TH2F("fDCAPrimaries", ";dca_xy;dca_z", 1000, -5, 5, 1000, -5, 5);
105 fDCASecondaries = (TH2F*) fDCAPrimaries->Clone("fDCASecondaries");
107 fOutput->Add(fDCAPrimaries);
108 fOutput->Add(fDCASecondaries);
111 void AliPhiCorrelationsQATask::UserExec(Option_t*)
115 //Printf("AliPhiCorrelationsQATask::UserExec");
117 AliESDEvent* esd = (AliESDEvent*) fInputEvent;
119 AliFatal("No input event");
121 // post the data already here
122 PostData(1, fOutput);
125 const AliESDVertex* vtxESD = esd->GetPrimaryVertex();
126 const AliESDVertex *vtxSPD = esd->GetPrimaryVertexSPD();
134 if (TMath::Abs(vtx[2]) > 10)
137 AliCentrality *centralityObj = esd->GetCentrality();
139 AliFatal("Centrality object is 0");
141 Float_t v0Centrality = -1;
142 Float_t spdCentrality = -1;
144 if (fUseUncheckedCentrality)
146 v0Centrality = centralityObj->GetCentralityPercentileUnchecked("V0M");
147 spdCentrality = centralityObj->GetCentralityPercentileUnchecked("CL1");
151 v0Centrality = centralityObj->GetCentralityPercentile("V0M");
152 spdCentrality = centralityObj->GetCentralityPercentile("CL1");
155 fCentralityCorrelation->Fill(v0Centrality, spdCentrality);
160 stack = fMCEvent->Stack();
162 AliFatal("Stack is 0");
167 for (Int_t i=0; i<esd->GetNumberOfTracks(); i++)
169 AliESDtrack* esdTrack = esd->GetTrack(i);
173 if (!fGlobalTracks->AcceptTrack(esdTrack))
177 if (!fEsdTrackCuts->AcceptTrack(esdTrack))
182 //if (v0Centrality < 0)
187 esdTrack->GetImpactParameters(b, bCov);
189 Bool_t primary = kTRUE;
191 primary = stack->IsPhysicalPrimary(TMath::Abs(esdTrack->GetLabel()));
194 fDCAPrimaries->Fill(b[0], b[1]);
196 fDCASecondaries->Fill(b[0], b[1]);
198 // fill histograms of second object
199 if (!fEsdTrackCuts2->AcceptTrack(esdTrack))
202 if (fCheckITS->AcceptTrack(esdTrack))
204 if (!fGlobalTracks->AcceptTrack(esdTrack))
210 // create a tpc only track
211 AliESDtrack *track = AliESDtrackCuts::GetTPCOnlyTrack(esd,esdTrack->GetID());
217 // only constrain tracks above threshold
218 AliExternalTrackParam exParam;
219 // take the B-feild from the ESD, no 3D fieldMap available at this point
220 Bool_t relate = false;
221 relate = track->RelateToVertex(vtxSPD,esd->GetMagneticField(),kVeryBig,&exParam);
226 track->Set(exParam.GetX(),exParam.GetAlpha(),exParam.GetParameter(),exParam.GetCovariance());
230 track->GetImpactParameters(b2,bCov);
232 //Printf("%.2f %.2f %.2f %.2f", b[0], b2[0], b[1], b2[1]);
237 //Printf("%.2f: %d %d tracks (out of %d)", v0Centrality, centralityObj->GetQuality(), count, esd->GetNumberOfTracks());
240 void AliPhiCorrelationsQATask::Terminate(Option_t *)
244 Printf("In AliPhiCorrelationsQATask::Terminate...");
246 fOutput = dynamic_cast<TList*> (GetOutputData(1));
249 Printf("ERROR: fOutput not available");
253 fEsdTrackCuts = dynamic_cast<AliESDtrackCuts*> (fOutput->FindObject("cuts_quality_only"));
256 Printf("ERROR: fEsdTrackCuts not available");
260 fEsdTrackCuts2 = dynamic_cast<AliESDtrackCuts*> (fOutput->FindObject("cuts_quality_dca"));
263 Printf("ERROR: fEsdTrackCuts2 not available");
267 TFile* file = TFile::Open("track_cuts.root", "RECREATE");
268 fEsdTrackCuts->SaveHistograms();
269 fEsdTrackCuts2->SaveHistograms();