fCutsRD(0),
fIsUpperCut(0),
fUsePID(kFALSE),
+fUseAOD049(kFALSE),
fPidHF(0),
fWhyRejection(0),
fRemoveDaughtersFromPrimary(kFALSE),
fCutsRD(0),
fIsUpperCut(0),
fUsePID(source.fUsePID),
+ fUseAOD049(source.fUseAOD049),
fPidHF(0),
fWhyRejection(source.fWhyRejection),
fRemoveDaughtersFromPrimary(source.fRemoveDaughtersFromPrimary),
fGlobalIndex=source.fGlobalIndex;
fnVarsForOpt=source.fnVarsForOpt;
fUsePID=source.fUsePID;
+ fUseAOD049=source.fUseAOD049;
SetPidHF(source.GetPidHF());
fWhyRejection=source.fWhyRejection;
fRemoveDaughtersFromPrimary=source.fRemoveDaughtersFromPrimary;
// check if it's MC
Bool_t isMC=kFALSE;
TClonesArray *mcArray = (TClonesArray*)((AliAODEvent*)event)->GetList()->FindObject(AliAODMCParticle::StdBranchName());
- if(mcArray) isMC=kTRUE;
+ if(mcArray) {isMC=kTRUE;fUseAOD049=kFALSE;}
// settings for the TPC dE/dx BB parameterization
if(fPidHF) {
return fCutsRD[GetGlobalIndex(iVar,iPtBin)];
}
//-------------------------------------------------------------------
-Float_t AliRDHFCuts::GetCentrality(AliAODEvent* aodEvent,AliRDHFCuts::ECentrality estimator) const {
+Float_t AliRDHFCuts::GetCentrality(AliAODEvent* aodEvent,AliRDHFCuts::ECentrality estimator) {
//
// Get centrality percentile
//
+
+ TClonesArray *mcArray = (TClonesArray*)((AliAODEvent*)aodEvent)->GetList()->FindObject(AliAODMCParticle::StdBranchName());
+ if(mcArray) {fUseAOD049=kFALSE;}
+
AliAODHeader *header=aodEvent->GetHeader();
AliCentrality *centrality=header->GetCentralityP();
Float_t cent=-999.;
if((quality==8||quality==9)&&isSelRun)cent=(Float_t)centrality->GetCentralityPercentileUnchecked("V0M");
}
}
+
+ //temporary fix for AOD049 outliers
+ if(fUseAOD049&¢>=0){
+ Float_t v0=0;
+ AliAODVZERO* aodV0 = aodEvent->GetVZEROData();
+ v0+=aodV0->GetMTotV0A();
+ v0+=aodV0->GetMTotV0C();
+ if(cent==0&&v0<19500)return -1;//filtering issue
+ Float_t tkl = (Float_t)(aodEvent->GetTracklets()->GetNumberOfTracklets());
+ Float_t val= 1.30552 + 0.147931 * v0;
+ Float_t tklSigma[101]={176.644, 156.401, 153.789, 153.015, 142.476, 137.951, 136.127, 129.852, 127.436, 124.86, 120.788, 115.611, 113.172, 110.496, 109.127, 104.421, 102.479, 99.9766, 97.5152, 94.0654, 92.4602, 89.3364, 87.1342, 83.3497, 82.6216, 81.1084, 78.0793, 76.1234, 72.9434, 72.1334, 68.0056, 68.2755, 66.0376, 62.9666, 62.4274, 59.65, 58.3776, 56.6361, 54.5184, 53.4224, 51.932, 50.8922, 48.2848, 47.912, 46.5717, 43.4114, 43.2083, 41.3065, 40.1863, 38.5255, 37.2851, 37.5396, 34.4949, 33.8366, 31.8043, 31.7412, 30.8392, 30.0274, 28.8793, 27.6398, 26.6488, 25.0183, 25.1489, 24.4185, 22.9107, 21.2002, 21.6977, 20.1242, 20.4963, 19.0235, 19.298, 17.4103, 16.868, 15.2939, 15.2939, 16.0295, 14.186, 14.186, 15.2173, 12.9504, 12.9504, 12.9504, 15.264, 12.3674, 12.3674, 12.3674, 12.3674, 12.3674, 18.3811, 13.7544, 13.7544, 13.7544, 13.7544, 13.7544, 13.7544, 13.7544, 13.7544, 13.7544, 13.7544, 13.7544, 13.7544};
+ if ( TMath::Abs(tkl-val) > 6.*tklSigma[(Int_t)cent] )return -1;//outlier
+ }
}
else {
if (estimator==kCentTRK) {
void AddTrackCuts(const AliESDtrackCuts *cuts)
{delete fTrackCuts; fTrackCuts=new AliESDtrackCuts(*cuts); return;}
void SetUsePID(Bool_t flag=kTRUE) {fUsePID=flag; return;}
+ void SetUseAOD049(Bool_t flag=kTRUE) {fUseAOD049=flag; return;}
void SetUseCentrality(Int_t flag=1); // see enum below
void SetPidHF(AliAODPidHF* pidObj) {
if(fPidHF) delete fPidHF;
Float_t GetCutValue(Int_t iVar,Int_t iPtBin) const;
Double_t GetMaxVtxZ() const {return fMaxVtxZ;}
Float_t GetCentrality(AliAODEvent* aodEvent){return GetCentrality(aodEvent,(AliRDHFCuts::ECentrality)fUseCentrality);}
- Float_t GetCentrality(AliAODEvent* aodEvent, AliRDHFCuts::ECentrality estimator) const;
+ Float_t GetCentrality(AliAODEvent* aodEvent, AliRDHFCuts::ECentrality estimator);
Bool_t *GetIsUpperCut() const {return fIsUpperCut;}
AliESDtrackCuts *GetTrackCuts() const {return fTrackCuts;}
virtual AliESDtrackCuts *GetTrackCutsSoftPi() const {return 0;}
Int_t GetGlobalIndex(Int_t iVar,Int_t iPtBin) const;
void GetVarPtIndex(Int_t iGlob, Int_t& iVar, Int_t& iPtBin) const;
Bool_t GetIsUsePID() const {return fUsePID;}
+ Bool_t GetUseAOD049() const {return fUseAOD049;}
Bool_t GetIsPrimaryWithoutDaughters() const {return fRemoveDaughtersFromPrimary;}
Bool_t GetOptPileUp() const {return fOptPileup;}
Int_t GetUseCentrality() const {return fUseCentrality;}
Float_t *fCutsRD; //[fGlobalIndex] the cuts values
Bool_t *fIsUpperCut; //[fnVars] use > or < to select
Bool_t fUsePID; // enable PID usage (off by default)
+ Bool_t fUseAOD049; // enable AOD049 centrality cleanup
AliAODPidHF *fPidHF; // PID for heavy flavours manager
Int_t fWhyRejection; // used to code the step at which candidate was rejected
Bool_t fRemoveDaughtersFromPrimary; // flag to switch on the removal of duaghters from the primary vertex computation
Double_t fMinPtCand; // minimum pt of the candidate
Double_t fMaxPtCand; // minimum pt of the candidate
- ClassDef(AliRDHFCuts,13); // base class for cuts on AOD reconstructed heavy-flavour decays
+ ClassDef(AliRDHFCuts,14); // base class for cuts on AOD reconstructed heavy-flavour decays
};
#endif