fApplySPDDeadPbPb2011(kFALSE),
fRemoveTrackletOutliers(kFALSE),
fCutOnzVertexSPD(0),
-fKinkReject(kFALSE)
+fKinkReject(kFALSE),
+fUseTrackSelectionWithFilterBits(kTRUE),
+fUseEventsWithOnlySPDVertex(kFALSE)
{
//
// Default Constructor
fApplySPDDeadPbPb2011(source.fApplySPDDeadPbPb2011),
fRemoveTrackletOutliers(source.fRemoveTrackletOutliers),
fCutOnzVertexSPD(source.fCutOnzVertexSPD),
- fKinkReject(source.fKinkReject)
+ fKinkReject(source.fKinkReject),
+ fUseTrackSelectionWithFilterBits(source.fUseTrackSelectionWithFilterBits),
+ fUseEventsWithOnlySPDVertex(source.fUseEventsWithOnlySPDVertex)
{
//
// Copy constructor
fRemoveTrackletOutliers=source.fRemoveTrackletOutliers;
fCutOnzVertexSPD=source.fCutOnzVertexSPD;
fKinkReject=source.fKinkReject;
+ fUseTrackSelectionWithFilterBits=source.fUseTrackSelectionWithFilterBits;
+ fUseEventsWithOnlySPDVertex=source.fUseEventsWithOnlySPDVertex;
if(source.GetTrackCuts()) {delete fTrackCuts; fTrackCuts=new AliESDtrackCuts(*(source.GetTrackCuts()));}
if(source.fPtBinLimits) SetPtBins(source.fnPtBinLimits,source.fPtBinLimits);
fEvRejectionBits+=1<<kNoVertex;
}else{
TString title=vertex->GetTitle();
- if(title.Contains("Z") && fMinVtxType>1){
- accept=kFALSE;
- fEvRejectionBits+=1<<kNoVertex;
- }
- else if(title.Contains("3D") && fMinVtxType>2){
- accept=kFALSE;
- fEvRejectionBits+=1<<kNoVertex;
+ if(!fUseEventsWithOnlySPDVertex){
+ if(title.Contains("Z") && fMinVtxType>1){
+ accept=kFALSE;
+ fEvRejectionBits+=1<<kNoVertex;
+ }
+ else if(title.Contains("3D") && fMinVtxType>2){
+ accept=kFALSE;
+ fEvRejectionBits+=1<<kNoVertex;
+ }
}
if(vertex->GetNContributors()<fMinVtxContr){
accept=kFALSE;
void SetUsePID(Bool_t flag=kTRUE) {fUsePID=flag; return;}
void SetUseAOD049(Bool_t flag=kTRUE) {fUseAOD049=flag; return;}
void SetKinkRejection(Bool_t flag=kTRUE) {fKinkReject=flag; return;}
+ void SetUseEventsWithOnlySPDVertex(Bool_t flag=kTRUE){
+ fUseEventsWithOnlySPDVertex=flag; return;}
+ void SetUseTrackSelectionWithFilterBits(Bool_t flag=kTRUE){
+ fUseTrackSelectionWithFilterBits=flag; return;}
void SetUseCentrality(Int_t flag=1); // see enum below
void SetPidHF(AliAODPidHF* pidObj) {
if(fPidHF) delete fPidHF;
Bool_t GetIsUsePID() const {return fUsePID;}
Bool_t GetUseAOD049() const {return fUseAOD049;}
Bool_t GetUseKinkRejection() const {return fKinkReject;}
+ Bool_t GetUseEventsWithOnlySPDVertex() const{return fUseEventsWithOnlySPDVertex;}
+ Bool_t GetUseTrackSelectionWithFilterBits() const{return fUseTrackSelectionWithFilterBits;}
Bool_t GetIsPrimaryWithoutDaughters() const {return fRemoveDaughtersFromPrimary;}
Bool_t GetOptPileUp() const {return fOptPileup;}
Int_t GetUseCentrality() const {return fUseCentrality;}
Bool_t fRemoveTrackletOutliers; // flag to apply cut on tracklets vs. centrality for 2011 data
Int_t fCutOnzVertexSPD; // cut on zSPD vertex to remove outliers in centrality vs. tracklets (0=no cut, 1= cut at 12 cm, 2= cut on difference to z of vtx tracks
Bool_t fKinkReject; // flag to reject kink daughters
+ Bool_t fUseTrackSelectionWithFilterBits; // flag to enable/disable the check on filter bits
+ Bool_t fUseEventsWithOnlySPDVertex; // flag to enable/disable the usage of events with only SPD vertex
- ClassDef(AliRDHFCuts,25); // base class for cuts on AOD reconstructed heavy-flavour decays
+ ClassDef(AliRDHFCuts,26); // base class for cuts on AOD reconstructed heavy-flavour decays
};
#endif
if(ptD<fMinPtCand) return 0;
if(ptD>fMaxPtCand) return 0;
- if(d->HasBadDaughters()) return 0;
+ if(fUseTrackSelectionWithFilterBits && d->HasBadDaughters()) return 0;
// returnvalue: 0 not sel, 1 only D0, 2 only D0bar, 3 both
Int_t returnvaluePID=3;
if(ptD<fMinPtCand) return 0;
if(ptD>fMaxPtCand) return 0;
- if(d->HasBadDaughters()) return 0;
+ if(fUseTrackSelectionWithFilterBits && d->HasBadDaughters()) return 0;
// selection on daughter tracks
if(selectionLevel==AliRDHFCuts::kAll ||
return 0;
}
- if(dd->HasBadDaughters()) return 0;
+ if(fUseTrackSelectionWithFilterBits && dd->HasBadDaughters()) return 0;
AliAODTrack *b = (AliAODTrack*)d->GetBachelor();
if(fTrackCutsSoftPi && fTrackCutsSoftPi->GetRequireTPCRefit()){
if(pt<fMinPtCand) return 0;
if(pt>fMaxPtCand) return 0;
- if(d->HasBadDaughters()) return 0;
+ if(fUseTrackSelectionWithFilterBits && d->HasBadDaughters()) return 0;
// selection on candidate
if(selectionLevel==AliRDHFCuts::kAll ||
if(ptD<fMinPtCand) return 0;
if(ptD>fMaxPtCand) return 0;
- if(d->HasBadDaughters()) return 0;
+ if(fUseTrackSelectionWithFilterBits && d->HasBadDaughters()) return 0;
// selection on daughter tracks
return 0;
}
- if(d->HasBadDaughters()) return 0;
+ if(fUseTrackSelectionWithFilterBits && d->HasBadDaughters()) return 0;
// selection on daughter tracks
if(d->Pt()<fMinPtCand) return 0;
if(d->Pt()>fMaxPtCand) return 0;
- if(d->HasBadDaughters()) return 0;
+ if(fUseTrackSelectionWithFilterBits && d->HasBadDaughters()) return 0;
if(selectionLevel==AliRDHFCuts::kAll ||
selectionLevel==AliRDHFCuts::kCandidate||