fListOfCuts(0x0),
fFindVertexForDstar(kTRUE),
fFindVertexForCascades(kTRUE),
+fV0TypeForCascadeVertex(0),
fMassCutBeforeVertexing(kFALSE),
fMassCalc2(0),
fMassCalc3(0),
fListOfCuts(source.fListOfCuts),
fFindVertexForDstar(source.fFindVertexForDstar),
fFindVertexForCascades(source.fFindVertexForCascades),
+fV0TypeForCascadeVertex(source.fV0TypeForCascadeVertex),
fMassCutBeforeVertexing(source.fMassCutBeforeVertexing),
fMassCalc2(source.fMassCalc2),
fMassCalc3(source.fMassCalc3),
fListOfCuts = source.fListOfCuts;
fFindVertexForDstar = source.fFindVertexForDstar;
fFindVertexForCascades = source.fFindVertexForCascades;
+ fV0TypeForCascadeVertex = source.fV0TypeForCascadeVertex;
fMassCutBeforeVertexing = source.fMassCutBeforeVertexing;
fMassCalc2 = source.fMassCalc2;
fMassCalc3 = source.fMassCalc3;
list->Add(cutsDStartoKpipi);
}
+ //___ Check consitstency of cuts between vertexer and analysis tasks
+ Bool_t bCutsOk = CheckCutsConsistency();
+ if (bCutsOk == kFALSE) {AliFatal("AliAnalysisVertexingHF::FillListOfCuts vertexing and the analysis task cuts are not consistent!");}
+
// keep a pointer to the list
fListOfCuts = list;
if ( (!v0 || !v0->IsA()->InheritsFrom("AliAODv0") ) &&
(!esdV0 || !esdV0->IsA()->InheritsFrom("AliESDv0") ) ) continue;
+ if ( v0 && ((v0->GetOnFlyStatus() == kTRUE && fV0TypeForCascadeVertex == AliRDHFCuts::kOnlyOfflineV0s) ||
+ (v0->GetOnFlyStatus() == kFALSE && fV0TypeForCascadeVertex == AliRDHFCuts::kOnlyOnTheFlyV0s)) ) continue;
+
+ if ( esdV0 && ((esdV0->GetOnFlyStatus() == kTRUE && fV0TypeForCascadeVertex == AliRDHFCuts::kOnlyOfflineV0s) ||
+ ( esdV0->GetOnFlyStatus() == kFALSE && fV0TypeForCascadeVertex == AliRDHFCuts::kOnlyOnTheFlyV0s)) ) continue;
// Get the tracks that form the V0
// ( parameters at primary vertex )
fMassDstar=TDatabasePDG::Instance()->GetParticle(413)->Mass();
fMassJpsi=TDatabasePDG::Instance()->GetParticle(443)->Mass();
}
+//-----------------------------------------------------------------------------
+Bool_t AliAnalysisVertexingHF::CheckCutsConsistency(){
+ //
+ // Check the Vertexer and the analysts task consitstecny
+ //
+
+
+ //___ Check if the V0 type from AliRDHFCutsLctoV0 is the same as the one set in the ConfigVertexingHF.C for AliAnalysisVertexingHF
+
+
+ if ( fCutsLctoV0 && fV0TypeForCascadeVertex != fCutsLctoV0->GetV0Type())
+ {
+ printf("ERROR: V0 type doesn not match in AliAnalysisVertexingHF (%d) required in AliRDHFCutsLctoV0 (%d)\n",fV0TypeForCascadeVertex,fCutsLctoV0->GetV0Type());
+ return kFALSE;
+ }
+ return kTRUE;
+}
+//-----------------------------------------------------------------------------
+
Bool_t GetRmTrksFromPrimVtx() const {return fRmTrksFromPrimVtx;}
void SetFindVertexForDstar(Bool_t vtx=kTRUE) { fFindVertexForDstar=vtx; }
void SetFindVertexForCascades(Bool_t vtx=kTRUE) { fFindVertexForCascades=vtx; }
+
+ void SetV0TypeForCascadeVertex(Int_t type) {fV0TypeForCascadeVertex = type;}
+ Int_t GetV0TypeForCascadeVertex() { return fV0TypeForCascadeVertex;}
+
void SetRecoPrimVtxSkippingTrks()
{ fRecoPrimVtxSkippingTrks=kTRUE; fRmTrksFromPrimVtx=kFALSE;}
void UnsetRecoPrimVtxSkippingTrks()
void SetMassCutBeforeVertexing(Bool_t flag) { fMassCutBeforeVertexing=flag; }
void SetMasses();
+ Bool_t CheckCutsConsistency();
+
void SetUseKaonPIDfor3Prong(Bool_t opt=kTRUE){fUseKaonPIDfor3Prong=opt;}
void SetnSigmaTOFforKaonSel(Double_t nsl, Double_t nsh){
fnSigmaTOFKaonLow=nsl; fnSigmaTOFKaonHi=nsh;}
TList *fListOfCuts; // pointer to list of cuts for output file
Bool_t fFindVertexForDstar; // reconstruct a secondary vertex or assume it's from the primary vertex
Bool_t fFindVertexForCascades; // reconstruct a secondary vertex or assume it's from the primary vertex
+ Int_t fV0TypeForCascadeVertex; // Select which V0 type we want to use for the cascas
Bool_t fMassCutBeforeVertexing; // to go faster in PbPb
// dummies for invariant mass calculation
AliAODRecoDecay *fMassCalc2; // for 2 prong
TObjArray *twoTrackArrayV0);
//
- ClassDef(AliAnalysisVertexingHF,21); // Reconstruction of HF decay candidates
+ ClassDef(AliAnalysisVertexingHF,22); // Reconstruction of HF decay candidates
};
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,kBadSPDVertex,kZVtxSPDOutFid,kCentralityFlattening};
+ enum EV0sel {kAllV0s = 0, kOnlyOfflineV0s = 1, kOnlyOnTheFlyV0s = 2};
+
AliRDHFCuts(const Char_t* name="RDHFCuts", const Char_t* title="");
virtual ~AliRDHFCuts();
Bool_t fUseTrackSelectionWithFilterBits; // flag to enable/disable the check on filter bits
TH1F *fHistCentrDistr; // histogram with reference centrality distribution for centrality distribution flattening
- ClassDef(AliRDHFCuts,28); // base class for cuts on AOD reconstructed heavy-flavour decays
+ ClassDef(AliRDHFCuts,29); // base class for cuts on AOD reconstructed heavy-flavour decays
};
#endif
ClassImp(AliRDHFCutsLctoV0)
//--------------------------------------------------------------------------
- AliRDHFCutsLctoV0::AliRDHFCutsLctoV0(const char* name, Short_t /*v0channel*/) :
+ AliRDHFCutsLctoV0::AliRDHFCutsLctoV0(const char* name, Short_t /*v0channel*/) :
AliRDHFCuts(name),
fPidSelectionFlag(0),
fPidHFV0pos(0),
fPidHFV0neg(0),
- fV0daughtersCuts(0)
+ fV0daughtersCuts(0),
+ fV0Type(0)
{
//
// Default Constructor
//
- Int_t nvars=9;
+ const Int_t nvars=10;
SetNVars(nvars);
- TString varNames[9]={"inv. mass if K0S [GeV/c2]",
+ TString varNames[nvars]={"inv. mass if K0S [GeV/c2]",
"inv. mass if Lambda [GeV/c2]",
"inv. mass V0 if K0S [GeV/c2]",
"inv. mass V0 if Lambda [GeV/c2]",
"pT min V0-positive track [GeV/c]",
"pT min V0-negative track [GeV/c]",
"dca cascade cut [cm]",
- "dca V0 cut [cm]"};
+ "dca V0 cut [cm]",
+ "V0 type"
+ };
- Bool_t isUpperCut[9]={kTRUE,
- kTRUE,
- kTRUE,
+ Bool_t isUpperCut[nvars]={kTRUE,
+ kTRUE,
+ kTRUE,
kTRUE,
kFALSE,
kFALSE,
kFALSE,
kTRUE,
- kTRUE};
+ kTRUE,
+ kTRUE
+ };
SetVarNames(nvars,varNames,isUpperCut);
- Bool_t forOpt[9]={kFALSE,
+ Bool_t forOpt[nvars]={kFALSE,
kFALSE,
kTRUE,
kTRUE,
kTRUE,
kTRUE,
kTRUE,
- kTRUE};
- SetVarsForOpt(9,forOpt); // It was 5: why only 5? And which ones?
+ kTRUE,
+ kTRUE
+ };
+ SetVarsForOpt(nvars,forOpt); // It was 5: why only 5? And which ones?
Float_t limits[2]={0,999999999.};
SetPtBins(2,limits);
fPidSelectionFlag(0),
fPidHFV0pos(0),
fPidHFV0neg(0),
- fV0daughtersCuts(0)/*
+ fV0daughtersCuts(0),
+ fV0Type(0)
+ /*
fV0channel(source.fV0channel)*/
{
//
delete fV0daughtersCuts;
fV0daughtersCuts = new AliESDtrackCuts(*(source.fV0daughtersCuts));
- //fV0channel = source.fV0channel;
+ fV0Type = source.fV0Type;
}
AliRDHFCutsLctoV0::~AliRDHFCutsLctoV0() {
//
// // Default Destructor
- //
+ //
if (fPidHFV0pos) {
delete fPidHFV0pos;
//---------------------------------------------------------------------------
void AliRDHFCutsLctoV0::GetCutVarsForOpt(AliAODRecoDecayHF *d,Float_t *vars,Int_t nvars,Int_t *pdgdaughters) {
- //
- // Fills in vars the values of the variables
+ //
+ // Fills in vars the values of the variables
//
if (pdgdaughters[0]==-9999) return; // dummy
AliAODTrack *bachelorTrack = (AliAODTrack*)dd->GetBachelor();
AliAODv0 *v0 = (AliAODv0*)dd->Getv0();
AliAODTrack *v0positiveTrack = (AliAODTrack*)dd->Getv0PositiveTrack();
- AliAODTrack *v0negativeTrack = (AliAODTrack*)dd->Getv0NegativeTrack();
+ AliAODTrack *v0negativeTrack = (AliAODTrack*)dd->Getv0NegativeTrack();
Int_t iter=-1;
// cut on cascade mass, if K0S + p
iter++;
vars[iter]=dd->GetDCA(); // prong-to-prong DCA
}
-
+
// cut on V0 dca
if (fVarsForOpt[8]) {
iter++;
return 0;
}
+
+
// Get the V0 daughter tracks
AliAODTrack *v0positiveTrack = (AliAODTrack*)d->Getv0PositiveTrack();
- AliAODTrack *v0negativeTrack = (AliAODTrack*)d->Getv0NegativeTrack();
+ AliAODTrack *v0negativeTrack = (AliAODTrack*)d->Getv0NegativeTrack();
if (!v0positiveTrack || !v0negativeTrack ) {
AliDebug(2,"No V0 daughters' objects");
return 0;
}
- // selection on daughter tracks
- if (selectionLevel==AliRDHFCuts::kAll ||
+ // selection on daughter tracks
+ if (selectionLevel==AliRDHFCuts::kAll ||
selectionLevel==AliRDHFCuts::kTracks) {
if (fIsCandTrackSPDFirst && d->Pt()<fMaxPtCandTrackSPDFirst) {
Bool_t okK0spipi=kTRUE, okLppi=kTRUE, okLBarpip=kTRUE;
// selection on candidate
- if (selectionLevel==AliRDHFCuts::kAll ||
+ if (selectionLevel==AliRDHFCuts::kAll ||
selectionLevel==AliRDHFCuts::kCandidate) {
Double_t pt = d->Pt();
Int_t ptbin = PtBin(pt);
-
+
Double_t mLcPDG = TDatabasePDG::Instance()->GetParticle(4122)->Mass();
Double_t mk0sPDG = TDatabasePDG::Instance()->GetParticle(310)->Mass();
Double_t mLPDG = TDatabasePDG::Instance()->GetParticle(3122)->Mass();
Double_t mk0s = v0->MassK0Short();
Double_t mLck0sp = d->InvMassLctoK0sP();
- // Lambda + pi
+ // Lambda + pi
Double_t mlambda = v0->MassLambda();
Double_t malambda = v0->MassAntiLambda();
Double_t mLcLpi = d->InvMassLctoLambdaPi();
}
// cuts on the V0 mass: K0S case
- if (TMath::Abs(mk0s-mk0sPDG)>fCutsRD[GetGlobalIndex(2,ptbin)]) {
+ if (TMath::Abs(mk0s-mk0sPDG)>fCutsRD[GetGlobalIndex(2,ptbin)]) {
okK0spipi = kFALSE;
AliDebug(4,Form(" V0 mass is %2.2e and does not correspond to K0S cut",mk0s));
}
if (!okLck0sp && !okLcLpi && !okLcLBarpi) return 0;
- // cuts on the minimum pt of the tracks
+ // cuts on the minimum pt of the tracks
if (TMath::Abs(bachelorTrack->Pt()) < fCutsRD[GetGlobalIndex(4,ptbin)]) {
AliDebug(4,Form(" bachelor track Pt=%2.2e > %2.2e",bachelorTrack->Pt(),fCutsRD[GetGlobalIndex(4,ptbin)]));
return 0;
Int_t returnvaluePID = 7;
// selection on candidate
- if (selectionLevel==AliRDHFCuts::kAll ||
- //selectionLevel==AliRDHFCuts::kCandidate ||
+ if (selectionLevel==AliRDHFCuts::kAll ||
+ //selectionLevel==AliRDHFCuts::kCandidate ||
selectionLevel==AliRDHFCuts::kPID )
returnvaluePID = IsSelectedPID(d);
}
// not used
- //if ( fUseTrackSelectionWithFilterBits &&
+ //if ( fUseTrackSelectionWithFilterBits &&
//!(bachelorTrack->TestFilterMask(BIT(4))) ) return 0;
AliAODv0 *v0 = (AliAODv0*)d->Getv0();
// Get the V0 daughter tracks
AliAODTrack *v0positiveTrack = (AliAODTrack*)d->Getv0PositiveTrack();
- AliAODTrack *v0negativeTrack = (AliAODTrack*)d->Getv0NegativeTrack();
+ AliAODTrack *v0negativeTrack = (AliAODTrack*)d->Getv0NegativeTrack();
if (!v0positiveTrack || !v0negativeTrack ) {
AliDebug(2,"No V0 daughters' objects");
return 0;
}
- // selection on daughter tracks
- if (selectionLevel==AliRDHFCuts::kAll ||
+ // selection on daughter tracks
+ if (selectionLevel==AliRDHFCuts::kAll ||
selectionLevel==AliRDHFCuts::kTracks) {
if (fIsCandTrackSPDFirst && d->Pt()<fMaxPtCandTrackSPDFirst) {
Bool_t okLck0sp=kFALSE, okLcLpi=kFALSE, okLcLBarpi=kFALSE;
// selection on candidate
- if (selectionLevel==AliRDHFCuts::kAll ||
+ if (selectionLevel==AliRDHFCuts::kAll ||
selectionLevel==AliRDHFCuts::kCandidate) {
Double_t pt = d->Pt();
Double_t mk0s = v0->MassK0Short();
Double_t mLck0sp = d->InvMassLctoK0sP();
- // Lambda + pi
+ // Lambda + pi
Double_t mlambda = v0->MassLambda();
Double_t malambda = v0->MassAntiLambda();
Double_t mLcLpi = d->InvMassLctoLambdaPi();
Int_t returnvaluePID = 7;
// selection on PID
- if (selectionLevel==AliRDHFCuts::kAll ||
- //selectionLevel==AliRDHFCuts::kCandidate ||
+ if (selectionLevel==AliRDHFCuts::kAll ||
+ //selectionLevel==AliRDHFCuts::kCandidate ||
selectionLevel==AliRDHFCuts::kPID )
returnvaluePID = IsSelectedPID(d);
*/
esdTrackCuts->SetMinNClustersITS(0);//(4); // default is 5
esdTrackCuts->SetMinNClustersTPC(70);
//esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,
- // AliESDtrackCuts::kAny);
+ // AliESDtrackCuts::kAny);
// default is kBoth, otherwise kAny
esdTrackCuts->SetMinDCAToVertexXY(0.);
esdTrackCuts->SetPtRange(0.3,1.e10);
esdTrackCutsV0daughters->SetMinNClustersITS(0);//(4); // default is 5
esdTrackCutsV0daughters->SetMinNClustersTPC(70);
//esdTrackCutsV0daughters->SetClusterRequirementITS(AliESDtrackCuts::kSPD,
- // AliESDtrackCuts::kAny);
+ // AliESDtrackCuts::kAny);
// default is kBoth, otherwise kAny
esdTrackCutsV0daughters->SetMinDCAToVertexXY(0.);
esdTrackCutsV0daughters->SetPtRange(0.,1.e10);
//
// Enable all 2011 PbPb run triggers
- //
+ //
SetTriggerClass("");
ResetMaskAndEnableMBTrigger();
EnableCentralTrigger();
EnableSemiCentralTrigger();
}
+//-----------------------
+Int_t AliRDHFCutsLctoV0::GetV0Type(){
+
+ const Int_t nvars = this->GetNVars() ;
+ //Float_t *vArray =GetCuts();
+ //fV0Type = vArray[nvars-1];
+ fV0Type = (this->GetCuts())[nvars-1];
+ //this->GetCuts(vArray);
+ TString *sVarNames=GetVarNames();
+
+ if(sVarNames[nvars-1].Contains("V0 type")) return (Int_t)fV0Type;
+ else {AliInfo("AliRDHFCutsLctoV0 Last variable is not the Vo type!!!"); return -999;}
+}
/* Copyright(c) 1998-2010, ALICE Experiment at CERN, All rights reserved. *
* See cxx source for full Copyright notice */
-/* $Id$ */
+/* $Id$ */
//***********************************************************
// Class AliRDHFCutsLctoV0
#include "AliAODPidHF.h"
#include "AliRDHFCuts.h"
-class AliRDHFCutsLctoV0 : public AliRDHFCuts
+class AliRDHFCutsLctoV0 : public AliRDHFCuts
{
public:
};
AliRDHFCutsLctoV0(const char* name="CutsLctoV0", Short_t v0channel=0);
-
+
virtual ~AliRDHFCutsLctoV0();
AliRDHFCutsLctoV0(const AliRDHFCutsLctoV0& source);
- AliRDHFCutsLctoV0& operator=(const AliRDHFCutsLctoV0& source);
-
+ AliRDHFCutsLctoV0& operator=(const AliRDHFCutsLctoV0& source);
+
using AliRDHFCuts::GetCutVarsForOpt;
virtual void GetCutVarsForOpt(AliAODRecoDecayHF *d,Float_t *vars,Int_t nvars,Int_t *pdgdaughters);
using AliRDHFCuts::IsSelected;
virtual Int_t IsSelected(TObject* obj,Int_t selectionLevel);
-
+
using AliRDHFCuts::IsSelectedPID;
virtual Int_t IsSelectedPID(AliAODRecoDecayHF* obj);
void SetPidSelectionFlag(Int_t a) {fPidSelectionFlag=a;}
Int_t GetPidSelectionFlag() {return fPidSelectionFlag;}
+ Int_t GetV0Type();
+
virtual void SetStandardCutsPP2010();
virtual void SetStandardCutsPbPb2010();
virtual void SetStandardCutsPbPb2011();
AliAODPidHF *fPidHFV0pos;
AliAODPidHF *fPidHFV0neg;
AliESDtrackCuts *fV0daughtersCuts; // cuts for v0 daughters (AOD converted to ESD on the flight!)
+ Float_t fV0Type; // V0 type -- should be defined as in AliRDHFCuts.h
+
//UShort_t fV0channel;
- ClassDef(AliRDHFCutsLctoV0,3); // class for cuts on AOD reconstructed Lc->V0+bachelor
+ ClassDef(AliRDHFCutsLctoV0,4); // class for cuts on AOD reconstructed Lc->V0+bachelor
};
#endif
//vHF->SetSecVtxWithKF();
// vHF->SetCascadesOff();
vHF->SetFindVertexForCascades(kFALSE);
+ vHF->SetV0TypeForCascadeVertex(AliRDHFCuts::kAllV0s);
//--- set cuts for single-track selection
// displaced tracks
cutsDStartoKpipi->AddTrackCutsSoftPi(esdTrackCutsSoftPi);
vHF->SetCutsDStartoKpipi(cutsDStartoKpipi);
AliRDHFCutsLctoV0 *cutsLctoV0 = new AliRDHFCutsLctoV0("CutsLctoV0");
- Float_t cutsArrayLctoV0[9]={4.0,4.0,2.0,2.0,0.0,0.0,0.0,1000.,1000.};
- cutsLctoV0->SetCuts(9,cutsArrayLctoV0);
+ Float_t cutsArrayLctoV0[10]={4.0,4.0,2.0,2.0,0.0,0.0,0.0,1000.,1000.,0.0};
+ cutsLctoV0->SetCuts(10,cutsArrayLctoV0);
cutsLctoV0->AddTrackCuts(esdTrackCuts);
vHF->SetCutsLctoV0(cutsLctoV0);
//
vHF->SetCascadesOff();
vHF->SetFindVertexForCascades(kFALSE);
vHF->SetMassCutBeforeVertexing(kTRUE); // PbPb
+ vHF->SetV0TypeForCascadeVertex(AliRDHFCuts::kAllV0s);
//--- set cuts for single-track selection
// displaced tracks
//--------------------------------------------------------
AliRDHFCutsLctoV0 *cutsLctoV0 = new AliRDHFCutsLctoV0("CutsLctoV0");
- Float_t cutsArrayLctoV0[9]={4.0,4.0,2.0,2.0,0.0,0.0,0.0,1000.,1000.};
- cutsLctoV0->SetCuts(9,cutsArrayLctoV0);
+ Float_t cutsArrayLctoV0[10]={4.0,4.0,2.0,2.0,0.0,0.0,0.0,1000.,1000.,0.0};
+ cutsLctoV0->SetCuts(10,cutsArrayLctoV0);
cutsLctoV0->AddTrackCuts(esdTrackCuts);
vHF->SetCutsLctoV0(cutsLctoV0);
//
vHF->SetCascadesOff();
vHF->SetFindVertexForCascades(kFALSE);
vHF->SetMassCutBeforeVertexing(kTRUE); // PbPb
+ vHF->SetV0TypeForCascadeVertex(AliRDHFCuts::kAllV0s);
//--- set cuts for single-track selection
// displaced tracks
//--------------------------------------------------------
AliRDHFCutsLctoV0 *cutsLctoV0 = new AliRDHFCutsLctoV0("CutsLctoV0");
- Float_t cutsArrayLctoV0[9]={4.0,4.0,2.0,2.0,0.0,0.0,0.0,1000.,1000.};
- cutsLctoV0->SetCuts(9,cutsArrayLctoV0);
+ Float_t cutsArrayLctoV0[10]={4.0,4.0,2.0,2.0,0.0,0.0,0.0,1000.,1000.,0.0};
+ cutsLctoV0->SetCuts(10,cutsArrayLctoV0);
cutsLctoV0->AddTrackCuts(esdTrackCuts);
vHF->SetCutsLctoV0(cutsLctoV0);
//
vHF->SetCascadesOff();
vHF->SetFindVertexForCascades(kFALSE);
vHF->SetMassCutBeforeVertexing(kTRUE); // PbPb
-
+ vHF->SetV0TypeForCascadeVertex(AliRDHFCuts::kAllV0s);
+
//--- set cuts for single-track selection
// displaced tracks
AliESDtrackCuts *esdTrackCuts = new AliESDtrackCuts("AliESDtrackCuts","default");
//--------------------------------------------------------
AliRDHFCutsLctoV0 *cutsLctoV0 = new AliRDHFCutsLctoV0("CutsLctoV0");
- Float_t cutsArrayLctoV0[9]={4.0,4.0,2.0,2.0,0.0,0.0,0.0,1000.,1000.};
- cutsLctoV0->SetCuts(9,cutsArrayLctoV0);
+ Float_t cutsArrayLctoV0[10]={4.0,4.0,2.0,2.0,0.0,0.0,0.0,1000.,1000.,0.0};
+ cutsLctoV0->SetCuts(10,cutsArrayLctoV0);
cutsLctoV0->AddTrackCuts(esdTrackCuts);
vHF->SetCutsLctoV0(cutsLctoV0);
//
vHF->SetCascadesOff();
vHF->SetFindVertexForCascades(kFALSE);
vHF->SetMassCutBeforeVertexing(kTRUE); // PbPb
-
+ vHF->SetV0TypeForCascadeVertex(AliRDHFCuts::kAllV0s);
+
//--- set cuts for single-track selection
// displaced tracks
AliESDtrackCuts *esdTrackCuts = new AliESDtrackCuts("AliESDtrackCuts","default");
//--------------------------------------------------------
AliRDHFCutsLctoV0 *cutsLctoV0 = new AliRDHFCutsLctoV0("CutsLctoV0");
- Float_t cutsArrayLctoV0[9]={4.0,4.0,2.0,2.0,0.0,0.0,0.0,1000.,1000.};
- cutsLctoV0->SetCuts(9,cutsArrayLctoV0);
+ Float_t cutsArrayLctoV0[10]={4.0,4.0,2.0,2.0,0.0,0.0,0.0,1000.,1000.,0.0};
+ cutsLctoV0->SetCuts(10,cutsArrayLctoV0);
cutsLctoV0->AddTrackCuts(esdTrackCuts);
vHF->SetCutsLctoV0(cutsLctoV0);
//
vHF->SetCascadesOff();
vHF->SetFindVertexForCascades(kFALSE);
vHF->SetMassCutBeforeVertexing(kTRUE); // PbPb
+ vHF->SetV0TypeForCascadeVertex(AliRDHFCuts::kAllV0s);
//--- set cuts for single-track selection
// displaced tracks
//--------------------------------------------------------
AliRDHFCutsLctoV0 *cutsLctoV0 = new AliRDHFCutsLctoV0("CutsLctoV0");
- Float_t cutsArrayLctoV0[9]={4.0,4.0,2.0,2.0,0.0,0.0,0.0,1000.,1000.};
- cutsLctoV0->SetCuts(9,cutsArrayLctoV0);
+ Float_t cutsArrayLctoV0[10]={4.0,4.0,2.0,2.0,0.0,0.0,0.0,1000.,1000.,0.0};
+ cutsLctoV0->SetCuts(10,cutsArrayLctoV0);
cutsLctoV0->AddTrackCuts(esdTrackCuts);
vHF->SetCutsLctoV0(cutsLctoV0);
//
printf("Call to AliAnalysisVertexingHF parameters setting :\n");
vHF = new AliAnalysisVertexingHF();
-
+
//--- switch-off candidates finding (default: all on)
//vHF->SetD0toKpiOff();
vHF->SetJPSItoEleOff();
vHF->SetCascadesOff();
vHF->SetFindVertexForCascades(kFALSE);
vHF->SetMassCutBeforeVertexing(kTRUE); // PbPb
-
- //--- set cuts for single-track selection
- // displaced tracks
+ vHF->SetV0TypeForCascadeVertex(AliRDHFCuts::kAllV0s);
+
+ //--- set cuts for single-track selection
+ // displaced tracks
AliESDtrackCuts *esdTrackCuts = new AliESDtrackCuts("AliESDtrackCuts","default");
esdTrackCuts->SetRequireTPCRefit(kTRUE);
esdTrackCuts->SetMinNClustersTPC(70);
AliESDtrackCuts::kAny);
// |d0|>75 micron for pt<2GeV, no cut above 2
esdTrackCuts->SetMinDCAToVertexXYPtDep("0.0050*TMath::Max(0.,(1-TMath::Floor(TMath::Abs(pt)/2.)))");
- esdTrackCuts->SetMaxDCAToVertexXY(1.);
+ esdTrackCuts->SetMaxDCAToVertexXY(1.);
esdTrackCuts->SetMaxDCAToVertexZ(1.);
esdTrackCuts->SetPtRange(0.5,1.e10);
esdTrackCuts->SetEtaRange(-0.8,+0.8);
AliESDtrackCuts::kAny);
// |d0|>75 micron for pt<2GeV, no cut above 2
esdTrackCuts->SetMinDCAToVertexXYPtDep("0.0075*TMath::Max(0.,(1-TMath::Floor(TMath::Abs(pt)/2.)))");
- esdTrackCuts->SetMaxDCAToVertexXY(1.);
+ esdTrackCuts->SetMaxDCAToVertexXY(1.);
esdTrackCuts->SetMaxDCAToVertexZ(1.);
esdTrackCuts->SetPtRange(0.6,1.e10);
esdTrackCuts->SetEtaRange(-0.8,+0.8);
// D* soft pion tracks
AliESDtrackCuts *esdTrackCutsSoftPi = new AliESDtrackCuts("AliESDtrackCuts","default");
esdTrackCutsSoftPi->SetMinNClustersITS(3);
- esdTrackCutsSoftPi->SetMaxDCAToVertexXY(1.);
+ esdTrackCutsSoftPi->SetMaxDCAToVertexXY(1.);
esdTrackCutsSoftPi->SetMaxDCAToVertexZ(1.);
esdTrackCutsSoftPi->SetPtRange(0.1,1.e10);
esdTrackCutsSoftPi->SetEtaRange(-0.8,+0.8);
cutsDStartoKpipi->SetUsePID(kFALSE);
const Int_t nvars=16;
const Int_t nptbins=2;
-
+
Float_t* ptbins;
ptbins=new Float_t[nptbins+1];
ptbins[0]=0.;
ptbins[1]=5.;
ptbins[2]=999.;
-
+
cutsDStartoKpipi->SetPtBins(nptbins+1,ptbins);
-
+
Float_t** rdcutsvalmine;
rdcutsvalmine=new Float_t*[nvars];
for(Int_t iv=0;iv<nvars;iv++){
rdcutsvalmine[15][1]=0.; // NormDecayLenghtXY
cutsDStartoKpipi->SetCuts(nvars,nptbins,rdcutsvalmine);
-
+
cutsDStartoKpipi->AddTrackCuts(esdTrackCuts);
cutsDStartoKpipi->AddTrackCutsSoftPi(esdTrackCutsSoftPi);
cutsDStartoKpipi->SetMinPtCandidate(1.);
//--------------------------------------------------------
+
+
AliRDHFCutsLctoV0 *cutsLctoV0 = new AliRDHFCutsLctoV0("CutsLctoV0");
- Float_t cutsArrayLctoV0[9]={4.0,4.0,2.0,2.0,0.0,0.0,0.0,1000.,1000.};
- cutsLctoV0->SetCuts(9,cutsArrayLctoV0);
+ Float_t cutsArrayLctoV0[10]={4.0,4.0,2.0,2.0,0.0,0.0,0.0,1000.,1000.,0.0};
+ cutsLctoV0->SetCuts(10,cutsArrayLctoV0);
cutsLctoV0->AddTrackCuts(esdTrackCuts);
vHF->SetCutsLctoV0(cutsLctoV0);
- //
+ //
//--- set this if you want to reconstruct primary vertex candidate by
- // candidate using other tracks in the event (for pp, broad
+ // candidate using other tracks in the event (for pp, broad
// interaction region)
//vHF->SetRecoPrimVtxSkippingTrks();
- //--- OR set this if you want to remove the candidate daughters from
+ //--- OR set this if you want to remove the candidate daughters from
// the primary vertex, without recostructing it from scratch
//vHF->SetRmTrksFromPrimVtx();
//--- verbose
// AliLog::SetClassDebugLevel("AliAnalysisVertexingHF",2);
-
+
return vHF;
}
printf("Call to AliAnalysisVertexingHF parameters setting :\n");
vHF = new AliAnalysisVertexingHF();
-
+
//--- switch-off candidates finding (default: all on)
//vHF->SetD0toKpiOff();
vHF->SetJPSItoEleOff();
vHF->SetCascadesOff();
vHF->SetFindVertexForCascades(kFALSE);
vHF->SetMassCutBeforeVertexing(kTRUE); // PbPb
+ vHF->SetV0TypeForCascadeVertex(AliRDHFCuts::kAllV0s);
- //--- set cuts for single-track selection
- // displaced tracks
+ //--- set cuts for single-track selection
+ // displaced tracks
AliESDtrackCuts *esdTrackCuts = new AliESDtrackCuts("AliESDtrackCuts","default");
esdTrackCuts->SetRequireTPCRefit(kTRUE);
esdTrackCuts->SetMinNClustersTPC(70);
AliESDtrackCuts::kAny);
// |d0|>75 micron for pt<2GeV, no cut above 2
esdTrackCuts->SetMinDCAToVertexXYPtDep("0.0050*TMath::Max(0.,(1-TMath::Floor(TMath::Abs(pt)/2.)))");
- esdTrackCuts->SetMaxDCAToVertexXY(1.);
+ esdTrackCuts->SetMaxDCAToVertexXY(1.);
esdTrackCuts->SetMaxDCAToVertexZ(1.);
esdTrackCuts->SetPtRange(0.5,1.e10);
esdTrackCuts->SetEtaRange(-0.8,+0.8);
AliESDtrackCuts::kAny);
// |d0|>75 micron for pt<2GeV, no cut above 2
esdTrackCuts->SetMinDCAToVertexXYPtDep("0.0075*TMath::Max(0.,(1-TMath::Floor(TMath::Abs(pt)/2.)))");
- esdTrackCuts->SetMaxDCAToVertexXY(1.);
+ esdTrackCuts->SetMaxDCAToVertexXY(1.);
esdTrackCuts->SetMaxDCAToVertexZ(1.);
esdTrackCuts->SetPtRange(0.6,1.e10);
esdTrackCuts->SetEtaRange(-0.8,+0.8);
// D* soft pion tracks
AliESDtrackCuts *esdTrackCutsSoftPi = new AliESDtrackCuts("AliESDtrackCuts","default");
esdTrackCutsSoftPi->SetMinNClustersITS(3);
- esdTrackCutsSoftPi->SetMaxDCAToVertexXY(1.);
+ esdTrackCutsSoftPi->SetMaxDCAToVertexXY(1.);
esdTrackCutsSoftPi->SetMaxDCAToVertexZ(1.);
esdTrackCutsSoftPi->SetPtRange(0.1,1.e10);
esdTrackCutsSoftPi->SetEtaRange(-0.8,+0.8);
cutsDStartoKpipi->SetUsePID(kFALSE);
const Int_t nvars=16;
const Int_t nptbins=2;
-
+
Float_t* ptbins;
ptbins=new Float_t[nptbins+1];
ptbins[0]=0.;
ptbins[1]=5.;
ptbins[2]=999.;
-
+
cutsDStartoKpipi->SetPtBins(nptbins+1,ptbins);
-
+
Float_t** rdcutsvalmine;
rdcutsvalmine=new Float_t*[nvars];
for(Int_t iv=0;iv<nvars;iv++){
rdcutsvalmine[15][1]=0.; // NormDecayLenghtXY
cutsDStartoKpipi->SetCuts(nvars,nptbins,rdcutsvalmine);
-
+
cutsDStartoKpipi->AddTrackCuts(esdTrackCuts);
cutsDStartoKpipi->AddTrackCutsSoftPi(esdTrackCutsSoftPi);
cutsDStartoKpipi->SetMinPtCandidate(1.);
//--------------------------------------------------------
AliRDHFCutsLctoV0 *cutsLctoV0 = new AliRDHFCutsLctoV0("CutsLctoV0");
- Float_t cutsArrayLctoV0[9]={4.0,4.0,2.0,2.0,0.0,0.0,0.0,1000.,1000.};
- cutsLctoV0->SetCuts(9,cutsArrayLctoV0);
+ Float_t cutsArrayLctoV0[10]={4.0,4.0,2.0,2.0,0.0,0.0,0.0,1000.,1000.,0.0};
+ cutsLctoV0->SetCuts(10,cutsArrayLctoV0);
cutsLctoV0->AddTrackCuts(esdTrackCuts);
vHF->SetCutsLctoV0(cutsLctoV0);
- //
+ //
//--- set this if you want to reconstruct primary vertex candidate by
- // candidate using other tracks in the event (for pp, broad
+ // candidate using other tracks in the event (for pp, broad
// interaction region)
//vHF->SetRecoPrimVtxSkippingTrks();
- //--- OR set this if you want to remove the candidate daughters from
+ //--- OR set this if you want to remove the candidate daughters from
// the primary vertex, without recostructing it from scratch
//vHF->SetRmTrksFromPrimVtx();
//--- verbose
// AliLog::SetClassDebugLevel("AliAnalysisVertexingHF",2);
-
+
return vHF;
}
printf("Call to AliAnalysisVertexingHF parameters setting :\n");
vHF = new AliAnalysisVertexingHF();
-
+
//--- switch-off candidates finding (default: all on)
//vHF->SetD0toKpiOff();
vHF->SetJPSItoEleOff();
vHF->SetCascadesOff();
vHF->SetFindVertexForCascades(kFALSE);
vHF->SetMassCutBeforeVertexing(kTRUE); // PbPb
+ vHF->SetV0TypeForCascadeVertex(AliRDHFCuts::kAllV0s);
- //--- set cuts for single-track selection
+ //--- set cuts for single-track selection
// displaced tracks
AliESDtrackCuts *esdTrackCuts = new AliESDtrackCuts("AliESDtrackCuts","default");
esdTrackCuts->SetRequireTPCRefit(kTRUE);
// D* soft pion tracks
AliESDtrackCuts *esdTrackCutsSoftPi = new AliESDtrackCuts("AliESDtrackCuts","default");
esdTrackCutsSoftPi->SetMinNClustersITS(3);
- esdTrackCutsSoftPi->SetMaxDCAToVertexXY(1.);
+ esdTrackCutsSoftPi->SetMaxDCAToVertexXY(1.);
esdTrackCutsSoftPi->SetMaxDCAToVertexZ(1.);
esdTrackCutsSoftPi->SetPtRange(0.1,1.e10);
esdTrackCutsSoftPi->SetEtaRange(-0.8,+0.8);
AliRDHFCutsDStartoKpipi *cutsDStartoKpipi = new AliRDHFCutsDStartoKpipi("CutsDStartoKpipi");
cutsDStartoKpipi->SetUsePID(kFALSE);
-
+
const Int_t nvars=16;
const Int_t nptbins=2;
-
+
Float_t* ptbins;
ptbins=new Float_t[nptbins+1];
ptbins[0]=0.;
ptbins[1]=5.;
ptbins[2]=999.;
-
+
cutsDStartoKpipi->SetPtBins(nptbins+1,ptbins);
-
+
Float_t** rdcutsvalmine;
rdcutsvalmine=new Float_t*[nvars];
for(Int_t iv=0;iv<nvars;iv++){
rdcutsvalmine[15][1]=0.; // NormDecayLenghtXY
cutsDStartoKpipi->SetCuts(nvars,nptbins,rdcutsvalmine);
-
+
cutsDStartoKpipi->AddTrackCuts(esdTrackCuts);
cutsDStartoKpipi->AddTrackCutsSoftPi(esdTrackCutsSoftPi);
cutsDStartoKpipi->SetMinPtCandidate(1.);
//--------------------------------------------------------
AliRDHFCutsLctoV0 *cutsLctoV0 = new AliRDHFCutsLctoV0("CutsLctoV0");
- Float_t cutsArrayLctoV0[9]={4.0,4.0,2.0,2.0,0.0,0.0,0.0,1000.,1000.};
- cutsLctoV0->SetCuts(9,cutsArrayLctoV0);
+ Float_t cutsArrayLctoV0[10]={4.0,4.0,2.0,2.0,0.0,0.0,0.0,1000.,1000.,0.0};
+ cutsLctoV0->SetCuts(10,cutsArrayLctoV0);
cutsLctoV0->AddTrackCuts(esdTrackCuts);
vHF->SetCutsLctoV0(cutsLctoV0);
- //
+ //
//--- set this if you want to reconstruct primary vertex candidate by
- // candidate using other tracks in the event (for pp, broad
+ // candidate using other tracks in the event (for pp, broad
// interaction region)
//vHF->SetRecoPrimVtxSkippingTrks();
- //--- OR set this if you want to remove the candidate daughters from
+ //--- OR set this if you want to remove the candidate daughters from
// the primary vertex, without recostructing it from scratch
//vHF->SetRmTrksFromPrimVtx();
//--- verbose
// AliLog::SetClassDebugLevel("AliAnalysisVertexingHF",2);
-
+
return vHF;
}
vHF->SetCascadesOff();
vHF->SetFindVertexForCascades(kFALSE);
vHF->SetMassCutBeforeVertexing(kTRUE); // PbPb
+ vHF->SetV0TypeForCascadeVertex(AliRDHFCuts::kAllV0s);
//--- set cuts for single-track selection
// displaced tracks
//--------------------------------------------------------
AliRDHFCutsLctoV0 *cutsLctoV0 = new AliRDHFCutsLctoV0("CutsLctoV0");
- Float_t cutsArrayLctoV0[9]={4.0,4.0,2.0,2.0,0.0,0.0,0.0,1000.,1000.};
- cutsLctoV0->SetCuts(9,cutsArrayLctoV0);
+ Float_t cutsArrayLctoV0[10]={4.0,4.0,2.0,2.0,0.0,0.0,0.0,1000.,1000.,0.0};
+ cutsLctoV0->SetCuts(10,cutsArrayLctoV0);
cutsLctoV0->AddTrackCuts(esdTrackCuts);
vHF->SetCutsLctoV0(cutsLctoV0);
//
printf("Call to AliAnalysisVertexingHF parameters setting :\n");
vHF = new AliAnalysisVertexingHF();
-
+
//--- switch-off candidates finding (default: all on)
//vHF->SetD0toKpiOff();
//vHF->SetJPSItoEleOff();
//vHF->SetSecVtxWithKF();
//vHF->SetCascadesOff();
vHF->SetFindVertexForCascades(kTRUE);
-
- //--- set cuts for single-track selection
+ vHF->SetV0TypeForCascadeVertex(AliRDHFCuts::kAllV0s);
+
+ //--- set cuts for single-track selection
// displaced tracks
AliESDtrackCuts *esdTrackCuts = new AliESDtrackCuts("AliESDtrackCuts","default");
esdTrackCuts->SetRequireTPCRefit(kTRUE);
cutsDStartoKpipi->AddTrackCutsSoftPi(esdTrackCutsSoftPi);
vHF->SetCutsDStartoKpipi(cutsDStartoKpipi);
AliRDHFCutsLctoV0 *cutsLctoV0 = new AliRDHFCutsLctoV0("CutsLctoV0");
- Float_t cutsArrayLctoV0[9]={1.0,1.0,0.05,0.05,0.0,0.0,0.0,1000.,1000.};
- cutsLctoV0->SetCuts(9,cutsArrayLctoV0);
+ Float_t cutsArrayLctoV0[10]={1.0,1.0,0.05,0.05,0.0,0.0,0.0,1000.,1000.,0.0};
+ cutsLctoV0->SetCuts(10,cutsArrayLctoV0);
cutsLctoV0->AddTrackCuts(esdTrackCuts);
vHF->SetCutsLctoV0(cutsLctoV0);
- //
+ //
//--- set this if you want to reconstruct primary vertex candidate by
- // candidate using other tracks in the event (for pp, broad
+ // candidate using other tracks in the event (for pp, broad
// interaction region)
//vHF->SetRecoPrimVtxSkippingTrks();
- //--- OR set this if you want to remove the candidate daughters from
+ //--- OR set this if you want to remove the candidate daughters from
// the primary vertex, without recostructing it from scratch
//vHF->SetRmTrksFromPrimVtx();
//--- verbose
// AliLog::SetClassDebugLevel("AliAnalysisVertexingHF",2);
-
+
return vHF;
}