Added setting for HF jet cuts
authorSarah <s.lapointe@cern.ch>
Thu, 3 Apr 2014 17:54:05 +0000 (19:54 +0200)
committermvl <marco.van.leeuwen@cern.ch>
Fri, 4 Apr 2014 09:13:31 +0000 (11:13 +0200)
JETAN/AliAnalysisTaskJetCluster.cxx
JETAN/AliAnalysisTaskJetCluster.h

index aac7806..e663917 100644 (file)
@@ -106,6 +106,7 @@ AliAnalysisTaskJetCluster::AliAnalysisTaskJetCluster():
   fEventSelection(kFALSE),     
   fRequireVZEROAC(kFALSE),     
   fRequireTZEROvtx(kFALSE),
+  fUseHFcuts(kFALSE),
   fFilterMask(0),
   fFilterMaskBestPt(0),
   fFilterType(0),
@@ -275,6 +276,7 @@ AliAnalysisTaskJetCluster::AliAnalysisTaskJetCluster(const char* name):
   fEventSelection(kFALSE),
   fRequireVZEROAC(kFALSE),     
   fRequireTZEROvtx(kFALSE), 
+  fUseHFcuts(kFALSE),
   fFilterMask(0),
   fFilterMaskBestPt(0),
   fFilterType(0),
@@ -1889,6 +1891,23 @@ Int_t  AliAnalysisTaskJetCluster::GetListOfTracks(TList *list,Int_t type){
          if(fDebug>10)Printf("%s:%d Not matching filter %d/%d %d/%d",(char*)__FILE__,__LINE__,it,aod->GetNumberOfTracks(),fFilterMask,tr->GetFilterMap());     
          continue;
        }
+
+       // heavy flavor jets
+       if(fFilterMask==528 && fUseHFcuts){
+          Double_t ntpcClus = tr->GetTPCNcls();
+          Double_t trPt=tr->Pt();
+         TFormula NTPCClsCut("f1NClustersTPCLinearPtDep","70.+30./20.*x");
+       
+         if (trPt <= 20. && (ntpcClus < NTPCClsCut.Eval(trPt))) continue;
+         else if (trPt > 20. && ntpcClus < 100) continue;
+
+         Int_t idtr1 = tr->GetID(); 
+         Bool_t flagSame = kFALSE;
+         AvoidDoubleCountingHF(aod, idtr1, flagSame);
+         if (flagSame) continue; 
+       }
+       // 
+
         if(fRequireITSRefit){if((tr->GetStatus()&AliESDtrack::kITSrefit)==0)continue;}
         if (fApplySharedClusterCut) {
            Double_t frac = Double_t(tr->GetTPCnclsS()) /Double_t(tr->GetTPCncls());
@@ -2090,8 +2109,22 @@ Int_t AliAnalysisTaskJetCluster::AddDaughters(TList * list, AliAODMCParticle *pa
        }                       
 return count;  
 }
+void AliAnalysisTaskJetCluster::AvoidDoubleCountingHF(AliAODEvent *aod, Int_t idtr1,  Bool_t &fFlagSameTr){
+  
+       Bool_t sametr = kFALSE;
 
+     for(int jt = 0;jt < aod->GetNumberOfTracks();++jt){
 
+       AliAODTrack *tr2 = aod->GetTrack(jt);
+       Int_t idtr2 = tr2->GetID();
+       if (idtr2>-1) continue;
+
+       idtr2=-1*idtr2;
+       if (idtr1==idtr2-1) sametr = kTRUE;
+       
+     }
+     fFlagSameTr = sametr;
+}
 
 void AliAnalysisTaskJetCluster::LoadTrPtResolutionRootFileFromOADB() {
 
index 849f837..8424bd5 100644 (file)
@@ -106,12 +106,12 @@ class AliAnalysisTaskJetCluster : public AliAnalysisTaskSE
     virtual void SetFixedEfficiency(Double_t eff) {fEfficiencyFixed = eff;}
     virtual void SetRequireT0vtx(Bool_t b = true){fRequireTZEROvtx = b;}
     virtual void SetRequireV0AC(Bool_t b = true){fRequireVZEROAC = b;}
-
+    virtual void SetUseHFcuts(Bool_t b = true){fUseHFcuts = b;}
     Double_t GetMomentumSmearing(Int_t cat, Double_t pt);
     void FitMomentumResolution();
 
 
-    // for Fast Jet
+    // for Fast Jet 
     fastjet::JetAlgorithm        GetAlgorithm()         const {return fAlgorithm;}
     fastjet::Strategy            GetStrategy()          const {return fStrategy;}
     fastjet::RecombinationScheme GetRecombScheme()      const {return fRecombScheme;}
@@ -158,6 +158,7 @@ class AliAnalysisTaskJetCluster : public AliAnalysisTaskSE
 
     Int_t GetListOfTracks(TList *list,Int_t type);
        Int_t AddDaughters(TList * list, AliAODMCParticle *part, TClonesArray * tca);
+    void AvoidDoubleCountingHF(AliAODEvent *aod, Int_t idtr1, Bool_t &fFlagSameTr);
        
     AliAODEvent     *fAOD;                // ! where we take the jets from can be input or output AOD
     AliAODExtension *fAODExtension;       // ! AOD extension in case we write a non-sdt branch to a separate file and the aod is standard
@@ -168,6 +169,7 @@ class AliAnalysisTaskJetCluster : public AliAnalysisTaskSE
     Bool_t        fEventSelection;        // use the event selection of this task, otherwise analyse all
     Bool_t        fRequireVZEROAC;        // switch to require V0 AC
     Bool_t        fRequireTZEROvtx;       // switch to require T0 vtx
+    Bool_t        fUseHFcuts;       // switch to require T0 vtx
     UInt_t        fFilterMask;            // filter bit for slecected tracks
     UInt_t        fFilterMaskBestPt;      // filter bit to mark jets with high quality leading tracks