28 #include <TClonesArray.h>
32 #include "AliAnalysisManager.h"
33 #include "AliAODHandler.h"
34 #include "AliAODEvent.h"
35 #include "AliAODVertex.h"
36 #include "AliAODTrack.h"
39 #include "AliAnalysisTaskSE.h"
99 DefineOutput(1,TList::Class());
101 DefineOutput(2,TH1F::Class());
130 if(fDebug > 1) printf(
"AnalysisTaskSEBkgLikeSignD0::Init() \n");
132 gROOT->LoadMacro(
"ConfigVertexingHF.C");
146 if(fDebug > 1) printf(
"AnalysisTaskSEBkgLikeSignD0::UserCreateOutputObjects() \n");
152 fHistMassD0 =
new TH1F(
"fHistMassD0",
"D0 invariant mass; M [GeV]; Entries",200,1.765,1.965);
157 fHistMassLS =
new TH1F(
"fHistMassLS",
"Like sign pairs invariant mass; M [GeV]; Entries",200,1.765,1.965);
162 fHistCtsD0 =
new TH1F(
"fHistCtsD0",
"D0 cosine of decay angle; Cos#Theta*; Entries",200,-1.,1.);
167 fHistCtsLS =
new TH1F(
"fHistCtsLS",
"Like sign pairs cosine of decay angle; Cos#Theta*; Entries",200,-1.,1.);
172 fHistCtsLSpos =
new TH1F(
"fHistCtsLSpos",
"Like sign ++ pairs cosine of decay angle; Cos#Theta*; Entries",200,-1.,1.);
177 fHistCtsLSneg =
new TH1F(
"fHistCtsLSneg",
"Like sign -- pairs cosine of decay angle; Cos#Theta*; Entries",200,-1.,1.);
182 fHistCPtaD0 =
new TH1F(
"fHistCPtaD0",
"D0 cosine of pointing angle; Cos#Theta_{point}; Entries",200,0,1.);
187 fHistCPtaLS =
new TH1F(
"fHistCPtaLS",
"Like sign pairs cosine of pointing angle; Cos#Theta_{point}; Entries",200,0,1.);
192 fHistd0d0D0 =
new TH1F(
"fHistd0d0D0",
"D0 product of impact parameters; d0xd0 [#mu m^{2}]; Entries",200,-100000.,100000.);
197 fHistd0d0LS =
new TH1F(
"fHistd0d0LS",
"Like sign pairs product of impact parameters; d0xd0 [#mu m^{2}]; Entries",200,-100000.,100000.);
202 fHistDCAD0 =
new TH1F(
"fHistDCAD0",
"D0 distance of closest approach; dca [10^{2}#mu m]; Entries",100,0.,5.);
207 fHistDCALS =
new TH1F(
"fHistDCALS",
"Like sign pairs distance of closest approach; dca [10^{2}#mu m]; Entries",100,0.,5.);
212 fNentries=
new TH1F(
"nentriesLS",
"Look at the number of entries! it is = to the number of AODs", 2,1.,2.);
225 TClonesArray *arrayD0toKpi = 0;
226 TClonesArray *arrayLikeSign = 0;
228 if(!aod && AODEvent() && IsStandardAOD()) {
234 AliAODHandler* aodHandler = (AliAODHandler*)
235 ((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler());
236 if(aodHandler->GetExtensions()) {
237 AliAODExtension *ext = (AliAODExtension*)aodHandler->GetExtensions()->FindObject(
"AliAOD.VertexingHF.root");
240 arrayD0toKpi=(TClonesArray*)aodFromExt->GetList()->FindObject(
"D0toKpi");
242 arrayLikeSign=(TClonesArray*)aodFromExt->GetList()->FindObject(
"LikeSign2Prong");
246 arrayD0toKpi=(TClonesArray*)aod->GetList()->FindObject(
"D0toKpi");
248 arrayLikeSign=(TClonesArray*)aod->GetList()->FindObject(
"LikeSign2Prong");
252 if(!aod || !arrayD0toKpi) {
253 printf(
"AliAnalysisTaskSEBkgLikeSignD0::UserExec: D0toKpi branch not found!\n");
257 printf(
"AliAnalysisTaskSEBkgLikeSignD0::UserExec: LikeSign2Prong branch not found!\n");
263 if(!aod->GetPrimaryVertex() || TMath::Abs(aod->GetMagneticField())<0.001)
return;
267 AliAODVertex *vtx1 = (AliAODVertex*)aod->GetPrimaryVertex();
270 Int_t trkIDtoEntry[100000];
271 for(
Int_t it=0;it<aod->GetNumberOfTracks();it++) {
272 AliAODTrack *track =
dynamic_cast<AliAODTrack*
>(aod->GetTrack(it));
273 if(!track) AliFatal(
"Not a standard AOD");
274 trkIDtoEntry[track->GetID()]=it;
282 Int_t nPosPairs=0,nNegPairs=0;
283 Int_t nLikeSign = arrayLikeSign->GetEntriesFast();
284 if(fDebug>1) printf(
"+++\n+++Number of like sign pairs ---> %d \n+++\n", nLikeSign);
286 for(
Int_t iLikeSign = 0; iLikeSign < nLikeSign; iLikeSign++) {
325 if(fDebug>1) printf(
"------------ N. of positive pairs in Event ----- %d \n", nPosPairs);
326 if(fDebug>1) printf(
"------------ N. of negative pairs in Event ----- %d \n", nNegPairs);
332 Int_t nD0toKpi = arrayD0toKpi->GetEntriesFast();
333 if(fDebug>1) printf(
"Number of like D0 -> Kpi candidates ---> %d \n", nD0toKpi);
335 for (
Int_t iD0toKpi = 0; iD0toKpi < nD0toKpi; iD0toKpi++) {
364 if(fDebug > 1) printf(
"AnalysisTaskSEBkgLikeSignD0: Terminate() \n");
368 printf(
"ERROR: fOutput not available\n");
TH1F * fNentries
Vertexer heavy flavour (used to pass the cuts)
TH1F * fHistCPtaD0
! Cosine of pointing angle
TH1F * fHistd0d0D0
! Product of impact parameters
void UnsetOwnPrimaryVtx()
Double_t InvMassD0() const
Double_t Prodd0d0() const
TH1F * fHistDCAD0
! Distance of closest approach
TH1F * fHistMassD0
! output histograms
Double_t CosThetaStarD0bar() const
angle of K
Double_t fLsNormalization
normalization
AliAODVertex * GetOwnPrimaryVtx() const
TH1F * fHistCtsD0
! Cosine of decay angle
virtual ~AliAnalysisTaskSEBkgLikeSignD0()
Double_t InvMassD0bar() const
TH1F * fHistDCALS
! like-sign
AliAnalysisVertexingHF * fVHF
virtual void UserCreateOutputObjects()
Implementation of interface methods.
void SetOwnPrimaryVtx(const AliAODVertex *vtx)
virtual void Terminate(Option_t *option)
ClassImp(AliAnalysisTaskCRC) AliAnalysisTaskCRC
virtual void UserExec(Option_t *option)
TList * fOutput
! list send on output slot 0
Double_t CosPointingAngle() const
Double_t CosThetaStarD0() const
AliAnalysisTaskSEBkgLikeSignD0()