#include "AliFlowEventCuts.h"
#include "AliFlowTrackCuts.h"
#include "AliTriggerAnalysis.h"
+#include "AliCollisionGeometry.h"
+#include "AliGenEventHeader.h"
ClassImp(AliFlowEventCuts)
fCentralityPercentileMax(100.),
fCentralityPercentileMin(0.),
fCutZDCtiming(kFALSE),
- fTrigAna()
+ fTrigAna(),
+ fCutImpactParameter(kFALSE),
+ fImpactParameterMin(0.0),
+ fImpactParameterMax(100.0)
{
//constructor
}
fCentralityPercentileMax(100.),
fCentralityPercentileMin(0.),
fCutZDCtiming(kFALSE),
- fTrigAna()
+ fTrigAna(),
+ fCutImpactParameter(kFALSE),
+ fImpactParameterMin(0.0),
+ fImpactParameterMax(100.0)
{
//constructor
}
fCentralityPercentileMax(that.fCentralityPercentileMax),
fCentralityPercentileMin(that.fCentralityPercentileMin),
fCutZDCtiming(that.fCutZDCtiming),
- fTrigAna()
+ fTrigAna(),
+ fCutImpactParameter(that.fCutImpactParameter),
+ fImpactParameterMin(that.fImpactParameterMin),
+ fImpactParameterMax(that.fImpactParameterMax)
{
if (that.fQA) DefineHistograms();
//copy constructor
}
//-----------------------------------------------------------------------
-Bool_t AliFlowEventCuts::IsSelected(TObject* obj)
+Bool_t AliFlowEventCuts::IsSelected(TObject* obj, TObject* objmc)
{
//check cuts
AliVEvent* vevent = dynamic_cast<AliVEvent*>(obj);
- if (vevent) return PassesCuts(vevent);
+ AliMCEvent* mcevent = dynamic_cast<AliMCEvent*>(objmc);
+ if (vevent) return PassesCuts(vevent,mcevent);;
return kFALSE; //when passed wrong type of object
}
//-----------------------------------------------------------------------
-Bool_t AliFlowEventCuts::PassesCuts(AliVEvent *event)
+Bool_t AliFlowEventCuts::PassesCuts(AliVEvent *event, AliMCEvent *mcevent)
{
///check if event passes cuts
const AliVVertex* pvtx=event->GetPrimaryVertex();
}
if(fCutNumberOfTracks) {if ( event->GetNumberOfTracks() < fNumberOfTracksMin ||
event->GetNumberOfTracks() >= fNumberOfTracksMax ) pass=kFALSE;}
- if(fCutRefMult&&esdevent)
+ if((fCutRefMult&&mcevent)||(fCutRefMult&&esdevent))
{
//reference multiplicity still to be defined
- Double_t refMult = RefMult(event,0x0);
+ Double_t refMult = RefMult(event,mcevent);
if (refMult < fRefMultMin || refMult >= fRefMultMax )
{
pass=kFALSE;
if (nselected) meanpt=meanpt/nselected;
if (meanpt<fMeanPtMin || meanpt >= fMeanPtMax) pass=kFALSE;
}
+
+ //impact parameter cut
+ if(fCutImpactParameter) {
+ Double_t gImpactParameter = 0.;
+ if(mcevent) {
+ AliCollisionGeometry* headerH = dynamic_cast<AliCollisionGeometry*>(dynamic_cast<AliMCEvent*>(mcevent)->GenEventHeader());
+ if(headerH)
+ gImpactParameter = headerH->ImpactParameter();
+ }
+ if ((gImpactParameter < fImpactParameterMin) || (gImpactParameter >= fImpactParameterMax ))
+ pass=kFALSE;
+ }
+
if (fQA&&pass)
{
QAafter(1)->Fill(multGlobal,multTPC);
AliFlowEventCuts& operator=(const AliFlowEventCuts& someCuts);
virtual ~AliFlowEventCuts();
- virtual Bool_t IsSelected(TObject* obj);
+ virtual Bool_t IsSelected(TObject* obj, TObject *objmc);
- Bool_t PassesCuts(AliVEvent* event);
+ Bool_t PassesCuts(AliVEvent* event, AliMCEvent *mcevent);
static AliFlowEventCuts* StandardCuts();
void SetRefMultMax(Int_t value) {fRefMultMax=value;fCutRefMult=kTRUE;}
void SetRefMultMin(Int_t value) {fRefMultMin=value;fCutRefMult=kTRUE;}
void SetRefMultRange(Int_t min, Int_t max) {fRefMultMin=min;fRefMultMax=max;fCutRefMult=kTRUE;}
+ void SetImpactParameterMax(Double_t value) {fImpactParameterMax=value;fCutImpactParameter=kTRUE;}
+ void SetImpactParameterMin(Double_t value) {fImpactParameterMin=value;fCutImpactParameter=kTRUE;}
+ void SetImpactParameterRange(Double_t min, Double_t max) {fImpactParameterMin=min;fImpactParameterMax=max;fCutImpactParameter=kTRUE;}
void SetPrimaryVertexXrange(Double_t min, Double_t max)
{fCutPrimaryVertexX=kTRUE; fPrimaryVertexXmin=min; fPrimaryVertexXmax=max;}
void SetPrimaryVertexYrange(Double_t min, Double_t max)
Float_t fCentralityPercentileMin; // min centr. perc
Bool_t fCutZDCtiming; //cut on ZDC timing
AliTriggerAnalysis fTrigAna; //trigger analysis object
+ Bool_t fCutImpactParameter; //cut on impact parameter (MC header)
+ Double_t fImpactParameterMin; // min impact parameter
+ Double_t fImpactParameterMax; // max impact parameter
ClassDef(AliFlowEventCuts,4)
};