]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Rejection of centrality outliers in AOD049 (Giacomo)
authordainese <dainese@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 4 May 2011 17:33:20 +0000 (17:33 +0000)
committerdainese <dainese@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 4 May 2011 17:33:20 +0000 (17:33 +0000)
PWG3/vertexingHF/AliRDHFCuts.cxx
PWG3/vertexingHF/AliRDHFCuts.h

index e375ea64451aaa3767e9157cdb69c59d42586c66..4dd03091f112010109b9120e94a2e9d809860840 100644 (file)
@@ -64,6 +64,7 @@ fGlobalIndex(1),
 fCutsRD(0),
 fIsUpperCut(0),
 fUsePID(kFALSE),
+fUseAOD049(kFALSE),
 fPidHF(0),
 fWhyRejection(0),
 fRemoveDaughtersFromPrimary(kFALSE),
@@ -106,6 +107,7 @@ AliRDHFCuts::AliRDHFCuts(const AliRDHFCuts &source) :
   fCutsRD(0),
   fIsUpperCut(0),
   fUsePID(source.fUsePID),
+  fUseAOD049(source.fUseAOD049),
   fPidHF(0),
   fWhyRejection(source.fWhyRejection),
   fRemoveDaughtersFromPrimary(source.fRemoveDaughtersFromPrimary),
@@ -157,6 +159,7 @@ AliRDHFCuts &AliRDHFCuts::operator=(const AliRDHFCuts &source)
   fGlobalIndex=source.fGlobalIndex;
   fnVarsForOpt=source.fnVarsForOpt;
   fUsePID=source.fUsePID;
+  fUseAOD049=source.fUseAOD049;
   SetPidHF(source.GetPidHF());
   fWhyRejection=source.fWhyRejection;
   fRemoveDaughtersFromPrimary=source.fRemoveDaughtersFromPrimary;
@@ -233,7 +236,7 @@ Bool_t AliRDHFCuts::IsEventSelected(AliVEvent *event) {
   // 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) {
@@ -629,10 +632,14 @@ Float_t AliRDHFCuts::GetCutValue(Int_t iVar,Int_t iPtBin) const {
   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.;
@@ -657,6 +664,19 @@ Float_t AliRDHFCuts::GetCentrality(AliAODEvent* aodEvent,AliRDHFCuts::ECentralit
          if((quality==8||quality==9)&&isSelRun)cent=(Float_t)centrality->GetCentralityPercentileUnchecked("V0M");
        }
       }
+
+      //temporary fix for AOD049 outliers
+      if(fUseAOD049&&cent>=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) {
index 37be597dfc1097314fa880627e2d9371dfda2631..679e0cf4d7b1f3bdbb697289f0652adec735ab67 100644 (file)
@@ -60,6 +60,7 @@ class AliRDHFCuts : public AliAnalysisCuts
   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;
@@ -90,7 +91,7 @@ class AliRDHFCuts : public AliAnalysisCuts
   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;}
@@ -98,6 +99,7 @@ class AliRDHFCuts : public AliAnalysisCuts
   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;}
@@ -167,6 +169,7 @@ class AliRDHFCuts : public AliAnalysisCuts
   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
@@ -187,7 +190,7 @@ class AliRDHFCuts : public AliAnalysisCuts
   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