29 #include "AliAnalysisTaskSE.h"
30 #include "AliAnalysisManager.h"
32 #include "AliESDEvent.h"
33 #include "AliESDInputHandler.h"
34 #include "AliESDtrack.h"
35 #include "AliESDtrackCuts.h"
37 #include "AliAODEvent.h"
38 #include "AliAODInputHandler.h"
39 #include "AliAODTrack.h"
41 #include "AliCFManager.h"
44 #include "TObjArray.h"
66 for(
int i=0; i!=4; ++i) {
87 fCutsEvent(cutsEvent),
97 for(
int i=0; i!=4; ++i) {
113 DefineInput( 0, TChain::Class() );
114 DefineOutput( 1, TObjArray::Class() );
115 DefineOutput( 2, TList::Class() );
140 tQAEvents->SetName(
"Events");
141 tQAEvents->SetOwner();
142 fEvent =
new TH1D(
"Event",
"Number of Events", 2, 0, 2);
144 fMulti =
new TH1D(
"Multiplicity",
"Multiplicity", 180, 0, 10000);
152 TList *tQACandidates[4];
153 TList *tQADaughters[4];
154 for(
int i=0; i!=4; ++i) {
155 tQACandidates[i] =
new TList();
156 tQACandidates[i]->SetOwner();
157 tQACandidates[i]->SetName(Form(
"Candidates%d",i));
158 fMass[i] =
new TH1D( Form(
"Mass%i",i),
"Mass;M_{#pi#pi} [GeV];Counts per MeV", 180, 0.41, 0.59); tQACandidates[i]->Add(
fMass[i] );
159 fDCA[i] =
new TH1D( Form(
"DCA%i" ,i),
"DCA;[cm];Counts per 10 um", 180, 0.00, 0.18); tQACandidates[i]->Add(
fDCA[i] );
160 fDL[i] =
new TH1D( Form(
"DL%i" ,i),
"Decay Length;[cm];Counts per 0.1 mm", 180, 0.00, 1.80); tQACandidates[i]->Add(
fDL[i] );
161 fCTP[i] =
new TH1D( Form(
"CTP%i" ,i),
"Cos#theta_{p}", 180,-1.10, 1.10); tQACandidates[i]->Add(
fCTP[i] );
162 fd0d0[i] =
new TH1D( Form(
"d0d0%i",i),
"d_{0}xd_{0};[cm^{2}];Cnts 0.01 mm^{2}",180,-0.009,0.009);tQACandidates[i]->Add(
fd0d0[i] );
163 fPhi[i] =
new TH1D( Form(
"Phi%i" ,i),
"Phi;[rad];Counts per degree", 180,0,TMath::TwoPi()); tQACandidates[i]->Add(
fPhi[i] );
164 fEta[i] =
new TH1D( Form(
"Eta%i" ,i),
"Eta;;Counts per 0.04", 180,-3.60, 3.60); tQACandidates[i]->Add(
fEta[i] );
165 fPt[i] =
new TH1D( Form(
"Pt%i" ,i),
"Pt;[GeV];Counts per 0.1 GeV", 180, 0.00,18.00); tQACandidates[i]->Add(
fPt[i] );
166 tQADaughters[i] =
new TList();
167 tQADaughters[i]->SetOwner();
168 tQADaughters[i]->SetName(Form(
"Daughters%d",i));
169 fAPhi[i] =
new TH1D( Form(
"PhiBef%i",i),
"Phi prePropagation;[rad];Cnts per degree",180,0,TMath::TwoPi()); tQADaughters[i]->Add(
fAPhi[i] );
170 fAEta[i] =
new TH1D( Form(
"EtaBef%i",i),
"Eta prePropagation;;Counts per 0.04" ,180,-3.6,3.6); tQADaughters[i]->Add(
fAEta[i] );
171 fAPt[i] =
new TH1D( Form(
"PtBef%i" ,i),
"Pt prePropagation;[GeV];Counts per 0.1 GeV",180, 0, 18); tQADaughters[i]->Add(
fAPt[i] );
172 fBPhi[i] =
new TH1D( Form(
"PhiAft%i",i),
"Phi posPropagation;[rad];Cnts per degree",180,0,TMath::TwoPi()); tQADaughters[i]->Add(
fBPhi[i] );
173 fBPhi[i] =
new TH1D( Form(
"EtaAft%i",i),
"Eta posPropagation;;Counts per 0.04" ,180,-3.6,3.6); tQADaughters[i]->Add(
fBPhi[i] );
174 fBPt[i] =
new TH1D( Form(
"PtAft%i" ,i),
"Pt posPropagation;[GeV];Counts per 0.1 GeV",180, 0, 18); tQADaughters[i]->Add(
fBPt[i] );
175 tQACandidates[i]->Add(tQADaughters[i]);
176 fQAList->Add(tQACandidates[i]);
193 if( (!fESD)&&(!fAOD) )
211 gPOIselection->SetOwner();
212 int nTracks = fESD->GetNumberOfTracks();
214 for(
int i=0; i!=nTracks; ++i) {
215 AliESDtrack *ioT = fESD->GetTrack(i);
217 if( !(
fCuts->IsSelected(ioT)) )
220 for(
int j=i+1; j!=nTracks; ++j) {
221 AliESDtrack *joT = fESD->GetTrack(j);
222 if( (ioT->Charge()*joT->Charge()) > 0 )
225 if( !(
fCuts->IsSelected(joT)) )
228 AliESDtrack *iT =
new AliESDtrack(*ioT);
229 AliESDtrack *jT =
new AliESDtrack(*joT);
231 double DCA = iT->PropagateToDCA(jT,fESD->GetMagneticField());
235 vp = TVector3( (iT->Xv()+jT->Xv())/2, (iT->Yv()+jT->Yv())/2, (iT->Zv()+jT->Zv())/2 );
236 vv = TVector3( fESD->GetPrimaryVertex()->GetX(), fESD->GetPrimaryVertex()->GetY(), fESD->GetPrimaryVertex()->GetZ() );
243 vi = TVector3( iT->Px(), iT->Py(), iT->Pz() );
244 vj = TVector3( jT->Px(), jT->Py(), jT->Pz() );
246 gCTP = TMath::Cos( vl.Angle(vs) );
248 gD0D0 = iT->GetD(vv.X(),vv.Y(),fESD->GetMagneticField())*jT->GetD(vv.X(),vv.Y(),fESD->GetMagneticField());
250 double sum12 = iT->P()*iT->P()+jT->P()*jT->P();
251 double pro12 = iT->P()*iT->P()*jT->P()*jT->P();
253 gInvMass += TMath::Power(0.13957018,2);
254 gInvMass += sqrt( TMath::Power(0.13957018,4) + TMath::Power(0.13957018,2)*(sum12) + pro12 );
255 gInvMass -= ( iT->Px()*jT->Px()+iT->Py()*jT->Py()+iT->Pz()*jT->Pz() );
257 gInvMass = sqrt(gInvMass);
267 for(
int h=0; h!=iLevel+1; ++h) {
270 fDCA[h]->Fill( DCA );
272 fCTP[h]->Fill( gCTP );
273 fd0d0[h]->Fill( gD0D0 );
274 fMass[h]->Fill( gInvMass );
275 fPhi[h]->Fill( vs.Phi()+TMath::Pi() );
276 fEta[h]->Fill( vs.Eta() );
277 fPt[h]->Fill( vs.Pt() );
279 fAPhi[h]->Fill( iT->Phi() );
280 fAEta[h]->Fill( iT->Eta() );
281 fAPt[h]->Fill( iT->Pt() );
282 fAPhi[h]->Fill( jT->Phi() );
283 fAEta[h]->Fill( jT->Eta() );
284 fAPt[h]->Fill( jT->Pt() );
285 fBPhi[h]->Fill( ioT->Phi());
286 fBPhi[h]->Fill( ioT->Eta());
287 fBPt[h]->Fill( ioT->Pt() );
288 fBPhi[h]->Fill( joT->Phi());
289 fBPhi[h]->Fill( joT->Eta());
290 fBPt[h]->Fill( joT->Pt() );
296 sTrack->
SetPt( vs.Pt() );
297 sTrack->
SetPhi( vs.Phi()+TMath::Pi() );
298 sTrack->
SetEta( vs.Eta() );
302 gPOIselection->AddLast( sTrack );
308 PostData( 1, gPOIselection );
317 gPOIselection->SetOwner();
318 int nTracks = fAOD->GetNumberOfTracks();
320 for(
int i=0; i!=fAOD->GetNumberOfV0s(); ++i) {
321 AliAODv0 *iV0 = (AliAODv0*) fAOD->GetV0(i);
322 if ( iV0->GetOnFlyStatus() )
continue;
323 if ( (iV0->ChargeProng(0)*iV0->ChargeProng(1))>0 )
continue;
325 double DCA = iV0->DcaV0Daughters();
329 vv[0] = fAOD->GetPrimaryVertex()->GetX();
330 vv[1] = fAOD->GetPrimaryVertex()->GetY();
331 vv[2] = fAOD->GetPrimaryVertex()->GetZ();
332 gDL = iV0->DecayLengthV0(vv);
335 gCTP = iV0->CosPointingAngle(vv);
337 gD0D0 = iV0->Prodd0d0();
339 double gInvMass = iV0->MassK0Short();
348 for(
int h=0; h!=iLevel+1; ++h) {
350 fDCA[h]->Fill( DCA );
352 fCTP[h]->Fill( gCTP );
353 fd0d0[h]->Fill( gD0D0 );
354 fMass[h]->Fill( gInvMass );
355 fPhi[h]->Fill( iV0->Phi() );
356 fEta[h]->Fill( iV0->Eta() );
357 fPt[h]->Fill( iV0->Pt() );
359 fAPhi[h]->Fill( ( (AliAODTrack*) iV0->GetDaughter(0) )->Phi() );
360 fAEta[h]->Fill( ( (AliAODTrack*) iV0->GetDaughter(0) )->Eta() );
361 fAPt[h]->Fill( ( (AliAODTrack*) iV0->GetDaughter(0) )->Pt() );
362 fAPhi[h]->Fill( ( (AliAODTrack*) iV0->GetDaughter(1) )->Phi() );
363 fAEta[h]->Fill( ( (AliAODTrack*) iV0->GetDaughter(1) )->Eta() );
364 fAPt[h]->Fill( ( (AliAODTrack*) iV0->GetDaughter(1) )->Pt() );
365 fBPhi[h]->Fill( iV0->PhiProng(0) );
366 fBPhi[h]->Fill( iV0->EtaProng(0) );
367 fBPt[h]->Fill( iV0->PtProng(0) );
368 fBPhi[h]->Fill( iV0->PhiProng(1) );
369 fBPhi[h]->Fill( iV0->EtaProng(1) );
370 fBPt[h]->Fill( iV0->PtProng(1) );
374 sTrack->
SetPt( iV0->Pt() );
375 sTrack->
SetPhi( iV0->Phi() );
376 sTrack->
SetEta( iV0->Eta() );
380 gPOIselection->AddLast( sTrack );
382 PostData( 1, gPOIselection );
void SetCharge(Int_t charge)
void SetEta(Double_t eta)
AliFlowEventCuts * fCutsEvent
void AddDaughter(Int_t value)
void SetMass(Double_t mass)
virtual void Terminate(Option_t *)
ClassImp(AliAnalysisTaskFlowK0Candidates) AliAnalysisTaskFlowK0Candidates
virtual void UserCreateOutputObjects()
void ReadFromAOD(const AliAODEvent *fAOD)
virtual void UserExec(Option_t *)
void SetPhi(Double_t phi)
void ReadFromESD(const AliESDEvent *fESD)
AliAnalysisTaskFlowK0Candidates()
virtual ~AliAnalysisTaskFlowK0Candidates()
virtual Bool_t IsSelected(TObject *obj, TObject *objmc)