fMaxPtCandTrackSPDFirst(0.),
fApplySPDDeadPbPb2011(kFALSE),
fRemoveTrackletOutliers(kFALSE),
+fCutOnzVertexSPD(0),
fKinkReject(kFALSE)
{
//
fMaxPtCandTrackSPDFirst(source.fMaxPtCandTrackSPDFirst),
fApplySPDDeadPbPb2011(source.fApplySPDDeadPbPb2011),
fRemoveTrackletOutliers(source.fRemoveTrackletOutliers),
+ fCutOnzVertexSPD(source.fCutOnzVertexSPD),
fKinkReject(source.fKinkReject)
{
//
fMaxPtCandTrackSPDFirst=source.fMaxPtCandTrackSPDFirst;
fApplySPDDeadPbPb2011=source.fApplySPDDeadPbPb2011;
fRemoveTrackletOutliers=source.fRemoveTrackletOutliers;
+ fCutOnzVertexSPD=source.fCutOnzVertexSPD;
fKinkReject=source.fKinkReject;
if(source.GetTrackCuts()) {delete fTrackCuts; fTrackCuts=new AliESDtrackCuts(*(source.GetTrackCuts()));}
}
}
+ if(fCutOnzVertexSPD>0){
+ const AliVVertex *vSPD = ((AliAODEvent*)event)->GetPrimaryVertexSPD();
+ if(!vSPD || (vSPD && vSPD->GetNContributors()<fMinVtxContr)){
+ accept=kFALSE;
+ fEvRejectionBits+=1<<kBadSPDVertex;
+ }else{
+ if(fCutOnzVertexSPD==1 && TMath::Abs(vSPD->GetZ())>12.) {
+ fEvRejectionBits+=1<<kZVtxSPDOutFid;
+ if(accept) fWhyRejection=6;
+ accept=kFALSE;
+ }
+ if(fCutOnzVertexSPD==2 && TMath::Abs(vSPD->GetZ()-vertex->GetZ())>0.5) {
+ fEvRejectionBits+=1<<kZVtxSPDOutFid;
+ if(accept) fWhyRejection=6;
+ accept=kFALSE;
+ }
+ }
+ }
// pile-up rejection
if(fOptPileup==kRejectPileupEvent){
cent=(Float_t)(centrality->GetCentralityPercentile("V0M"));
if(cent<0){
Int_t quality = centrality->GetQuality();
- if(quality<=1){
+ if(quality<=1){ // fQuality==1 means rejected by zVertex cut that we apply a part and we want to keep separate (Giacomo)
cent=(Float_t)centrality->GetCentralityPercentileUnchecked("V0M");
}else{
Int_t runnum=aodEvent->GetRunNumber();
enum ESelLevel {kAll,kTracks,kPID,kCandidate};
enum EPileup {kNoPileupSelection,kRejectPileupEvent,kRejectTracksFromPileupVertex};
enum ESele {kD0toKpiCuts,kD0toKpiPID,kD0fromDstarCuts,kD0fromDstarPID,kDplusCuts,kDplusPID,kDsCuts,kDsPID,kLcCuts,kLcPID,kDstarCuts,kDstarPID};
- enum ERejBits {kNotSelTrigger,kNoVertex,kTooFewVtxContrib,kZVtxOutFid,kPileupSPD,kOutsideCentrality,kPhysicsSelection};
+ enum ERejBits {kNotSelTrigger,kNoVertex,kTooFewVtxContrib,kZVtxOutFid,kPileupSPD,kOutsideCentrality,kPhysicsSelection,kBadSPDVertex,kZVtxSPDOutFid};
AliRDHFCuts(const Char_t* name="RDHFCuts", const Char_t* title="");
virtual ~AliRDHFCuts();
fUseOnlyOneTrigger=kTRUE;
}
void SetRemoveTrackletOutliers(Bool_t opt) {fRemoveTrackletOutliers=opt;}
+ void SetCutOnzVertexSPD(Int_t opt) {
+ if(opt>=0 && opt<=2) fCutOnzVertexSPD=opt;
+ else AliError("Wrong option for cut on zVertexSPD");
+ }
void SetTriggerClass(TString trclass0, TString trclass1="") {fTriggerClass[0]=trclass0; fTriggerClass[1]=trclass1;}
void ApplySPDDeadPbPb2011(){fApplySPDDeadPbPb2011=kTRUE;}
void SetVarsForOpt(Int_t nVars,Bool_t *forOpt);
Double_t fMaxPtCandTrackSPDFirst; // maximum pt of the candidate for which to check if the daughters fulfill kFirst criteria
Bool_t fApplySPDDeadPbPb2011; // flag to apply SPD dead module map of PbPb2011
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
- ClassDef(AliRDHFCuts,24); // base class for cuts on AOD reconstructed heavy-flavour decays
+ ClassDef(AliRDHFCuts,25); // base class for cuts on AOD reconstructed heavy-flavour decays
};
#endif