TNamed(),
fCutNumberOfTracks(kFALSE),
fNumberOfTracksMax(INT_MAX),
- fNumberOfTracksMin(INT_MIN)
+ fNumberOfTracksMin(INT_MIN),
+ fCutRefMult(kFALSE),
+ fRefMultMax(INT_MAX),
+ fRefMultMin(INT_MIN)
{
//constructor
}
Bool_t AliFlowEventCuts::PassesCuts(const AliVEvent *event)
{
///check if event passes cuts
- if(fCutNumberOfTracks) {if (event->GetNumberOfTracks() < fNumberOfTracksMin || event->GetNumberOfTracks() > fNumberOfTracksMax ) return kFALSE;}
+ if(fCutNumberOfTracks) {if (event->GetNumberOfTracks() < fNumberOfTracksMin || event->GetNumberOfTracks() >= fNumberOfTracksMax ) return kFALSE;}
+ if(fCutRefMult)
+ {
+ //reference multiplicity still to be defined
+ Int_t refMult = event->GetNumberOfTracks();
+ if (refMult < fRefMultMin || refMult >= fRefMultMax )
+ return kFALSE;
+ }
return kTRUE;
}
void SetNumberOfTracksMax(const Int_t value) {fNumberOfTracksMax=value;fCutNumberOfTracks=kTRUE;}
void SetNumberOfTracksMin(const Int_t value) {fNumberOfTracksMin=value;fCutNumberOfTracks=kTRUE;}
+ void SetRefMultMax(const Int_t value) {fRefMultMax=value;fCutRefMult=kTRUE;}
+ void SetRefMultMin(const Int_t value) {fRefMultMin=value;fCutRefMult=kTRUE;}
Int_t GetNumberOfTracksMax() const {return fNumberOfTracksMax;}
Int_t GetNumberOfTracksMin() const {return fNumberOfTracksMin;}
+ Int_t GetRefMultMax() const {return fRefMultMax;}
+ Int_t GetRefMultMin() const {return fRefMultMin;}
private:
- Bool_t fCutNumberOfTracks;//cut on # of tracks
+ Bool_t fCutNumberOfTracks;//cut on # of tracks
Int_t fNumberOfTracksMax; //limits
Int_t fNumberOfTracksMin; //limits
+ Bool_t fCutRefMult; //cut on refmult
+ Int_t fRefMultMax; //max refmult
+ Int_t fRefMultMin; //min refmult
ClassDef(AliFlowEventCuts,1)
};
// ESD track cuts for flow framework
//
// origin: Mikolaj Krzewicki (mikolaj.krzewicki@cern.ch)
+//
+// This class gurantees consistency of cut methods, trackparameter
+// selection (global tracks, TPC only, etc..) and parameter mixing
+// in the flow framework. Transparently handles different input types:
+// ESD, MC, AOD.
+// This class works in 2 steps: first the requested track parameters are
+// constructed (to be set by SetParamType() ), then cuts are applied.
+// the constructed track can be requested AFTER checking the cuts by
+// calling GetTrack(), in this case the cut object stays in control,
+// caller does not have to delete the track.
+// Additionally caller can request an AliFlowTrack object to be constructed
+// according the parameter mixing scenario requested by SetParamMix().
+// AliFlowTrack is made using MakeFlowTrack() method, its an 'object factory'
+// so caller needs to take care of the freshly created object.
#include <limits.h>
#include <float.h>
Bool_t AliFlowTrackCuts::PassesCuts(AliFlowTrackSimple* track)
{
//check cuts on a flowtracksimple
- if (fCleanupTrack) delete fTrack;
- fTrack = NULL;
+
+ //clean up from last iteration
+ if (fCleanupTrack) delete fTrack; fTrack = NULL;
return AliFlowTrackSimpleCuts::PassesCuts(track);
}
{
//check cuts for an ESD vparticle
+ //clean up from last iteration
+ if (fCleanupTrack) delete fTrack; fTrack=NULL;
+
Int_t mcLabel = vparticle->GetLabel();
if (fMCevent) fMCparticle = static_cast<AliMCParticle*>(fMCevent->GetTrack(mcLabel));
else fMCparticle=NULL;
void AliFlowTrackCuts::HandleVParticle(AliVParticle* track)
{
//handle the general case
- if (fCleanupTrack) delete fTrack;
switch (fParamType)
{
case kMC:
void AliFlowTrackCuts::HandleESDtrack(AliESDtrack* track)
{
//handle esd track
- if (fCleanupTrack) delete fTrack;
switch (fParamType)
{
case kESD_Global:
{
//get standard cuts
AliFlowTrackCuts* cuts = new AliFlowTrackCuts();
- cuts->SetName("standard global track cuts 2009");
+ cuts->SetName("standard TPConly cuts");
delete cuts->fAliESDtrackCuts;
cuts->fAliESDtrackCuts = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
+ cuts->SetParamType(kESD_TPConly);
return cuts;
}
cuts->SetName("standard global track cuts 2009");
delete cuts->fAliESDtrackCuts;
cuts->fAliESDtrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2009(selPrimaries);
+ cuts->SetParamType(kESD_Global);
return cuts;
}