//make new AliFLowTrack
AliFlowTrack* pTrack = NULL;
- if (rp&&poi)
- {
- pTrack = rpCuts->MakeFlowTrack();
- pTrack->TagRP(); fNumberOfRPs++;
- pTrack->TagPOI();
- }
- else
if (rp)
{
pTrack = rpCuts->MakeFlowTrack();
pTrack->TagRP(); fNumberOfRPs++;
+ if (poi) pTrack->TagPOI();
}
else
if (poi)
{
//here we have two different sources of particles, so we fill
//them independently
+ AliFlowTrack* pTrack = NULL;
//RP
Int_t numberOfRPs = 0;
if (trackletsRP) numberOfRPs = trackletsRP->GetNumberOfTracklets();
else particle = eventRP->GetTrack(i);
Bool_t rp = rpCuts->IsSelected(particle,i);
if (!rp) continue;
- AliFlowTrack* pTrack = rpCuts->MakeFlowTrack();
+ pTrack = rpCuts->MakeFlowTrack();
pTrack->TagRP(); fNumberOfRPs++;
+ AddTrack(pTrack);
}
//POI
Int_t numberOfPOIs = 0;
else particle = eventPOI->GetTrack(i);
Bool_t poi = poiCuts->IsSelected(particle,i);
if (!poi) continue;
- AliFlowTrack* pTrack = poiCuts->MakeFlowTrack();
+ pTrack = poiCuts->MakeFlowTrack();
pTrack->TagPOI();
+ AddTrack(pTrack);
}
}
}
AliFlowTrackCuts::AliFlowTrackCuts():
AliFlowTrackSimpleCuts(),
fAliESDtrackCuts(new AliESDtrackCuts()),
+ fQA(kFALSE),
fCutMCprocessType(kFALSE),
fMCprocessType(kPNoProcess),
fCutMCPID(kFALSE),
AliFlowTrackCuts::AliFlowTrackCuts(const AliFlowTrackCuts& someCuts):
AliFlowTrackSimpleCuts(someCuts),
fAliESDtrackCuts(new AliESDtrackCuts(*(someCuts.fAliESDtrackCuts))),
+ fQA(someCuts.fQA),
fCutMCprocessType(someCuts.fCutMCprocessType),
fMCprocessType(someCuts.fMCprocessType),
fCutMCPID(someCuts.fCutMCPID),
//assignment
AliFlowTrackSimpleCuts::operator=(someCuts);
*fAliESDtrackCuts=*(someCuts.fAliESDtrackCuts);
+ fQA=someCuts.fQA;
fCutMCprocessType=someCuts.fCutMCprocessType;
fMCprocessType=someCuts.fMCprocessType;
fCutMCPID=someCuts.fCutMCPID;
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
+ Bool_t pass=kTRUE;
//check the common cuts for the current particle (MC,AOD,ESD)
- if (fCutPt) {if (fTrack->Pt() < fPtMin || fTrack->Pt() >= fPtMax ) return kFALSE;}
- if (fCutEta) {if (fTrack->Eta() < fEtaMin || fTrack->Eta() >= fEtaMax ) return kFALSE;}
- if (fCutPhi) {if (fTrack->Phi() < fPhiMin || fTrack->Phi() >= fPhiMax ) return kFALSE;}
- if (fRequireCharge) {if (fTrack->Charge() == 0) return kFALSE;}
- if (fCutCharge && !isMCparticle) {if (fTrack->Charge() != fCharge) return kFALSE;}
+ if (fCutPt) {if (fTrack->Pt() < fPtMin || fTrack->Pt() >= fPtMax ) pass=kFALSE;}
+ if (fCutEta) {if (fTrack->Eta() < fEtaMin || fTrack->Eta() >= fEtaMax ) pass=kFALSE;}
+ if (fCutPhi) {if (fTrack->Phi() < fPhiMin || fTrack->Phi() >= fPhiMax ) pass=kFALSE;}
+ if (fRequireCharge) {if (fTrack->Charge() == 0) pass=kFALSE;}
+ if (fCutCharge && !isMCparticle) {if (fTrack->Charge() != fCharge) pass=kFALSE;}
if (fCutCharge && isMCparticle)
{
//in case of an MC particle the charge is stored in units of 1/3|e|
Int_t charge = TMath::Nint(fTrack->Charge()/3.0); //mc particles have charge in units of 1/3e
return (charge==fCharge);
}
- //if(fCutPID) {if (fTrack->PID() != fPID) return kFALSE;}
+ //if(fCutPID) {if (fTrack->PID() != fPID) pass=kFALSE;}
//when additionally MC info is required
- if (!PassesMCcuts()) return kFALSE;
+ if (!PassesMCcuts()) pass=kFALSE;
//check all else for ESDs using aliesdtrackcuts
- if (esdTrack && (fParamType!=kMC) ) return fAliESDtrackCuts->IsSelected(static_cast<AliESDtrack*>(fTrack));
+ if (esdTrack && (fParamType!=kMC) )
+ if (!fAliESDtrackCuts->IsSelected(static_cast<AliESDtrack*>(fTrack))) pass=kFALSE;
- return kTRUE; //true by default, if we didn't set any cuts
+ return pass; //true by default, if we didn't set any cuts
}
//-----------------------------------------------------------------------
}
return "unknown";
}
+
+//-----------------------------------------------------------------------
+void AliFlowTrackCuts::DefineHistograms()
+{
+}
#include "AliESDtrackCuts.h"
#include "TMCProcess.h"
+class TDirectory;
class AliVParticle;
class AliMCParticle;
class AliFlowTrack;
void GetPtRange( Float_t& r1, Float_t& r2 ) const { r1=GetPtMin(); r2=GetPtMax(); }
Bool_t GetRequireCharge() const {return fRequireCharge;}
+ void SetQA(const char* dirname);
+ TDirectory* GetQA() const {return fQA;}
+
//MC stuff
void SetMCprocessType( TMCProcess t ) { fMCprocessType = t; fCutMCprocessType=kTRUE; }
TMCProcess GetMCprocessType() const { return fMCprocessType; }
Bool_t PassesMCcuts();
void HandleESDtrack(AliESDtrack* track);
void HandleVParticle(AliVParticle* track);
+ void DefineHistograms();
AliESDtrackCuts* fAliESDtrackCuts; //alianalysis cuts
+ TDirectory* fQA; //qa histograms go here
Bool_t fCutMCprocessType; //do we cut on mc process type?
TMCProcess fMCprocessType; //mc process type
Bool_t fCutMCPID; //cut on MC pid?