]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - JETAN/AliAnalysisTaskJetCluster.cxx
Fix for ESD analysis
[u/mrichter/AliRoot.git] / JETAN / AliAnalysisTaskJetCluster.cxx
index 78a0ee940963c088f685b621ab78c77cbef57acf..270b6140abd53242c739aaca74e0cefc4ef904a4 100644 (file)
@@ -118,6 +118,7 @@ AliAnalysisTaskJetCluster::AliAnalysisTaskJetCluster():
   fAvgTrials(1),
   fExternalWeight(1),
   fTrackEtaWindow(0.9),    
+  fRequireITSRefit(0),
   fRecEtaWindow(0.5),
   fTrackPtCut(0.),                                                     
   fJetOutputMinPt(0.150),
@@ -285,6 +286,7 @@ AliAnalysisTaskJetCluster::AliAnalysisTaskJetCluster(const char* name):
   fAvgTrials(1),
   fExternalWeight(1),    
   fTrackEtaWindow(0.9),    
+  fRequireITSRefit(0),
   fRecEtaWindow(0.5),
   fTrackPtCut(0.),                                                     
   fJetOutputMinPt(0.150),
@@ -907,8 +909,13 @@ void AliAnalysisTaskJetCluster::UserExec(Option_t */*option*/)
 
   //Check if information is provided detector level effects
   if(!fMomResH1 || !fMomResH2 || !fMomResH3) fUseTrPtResolutionSmearing = kFALSE;
-  if(!fhEffH1 || !fhEffH2 || !fhEffH3 )      fUseDiceEfficiency = kFALSE;
-  if(  fEfficiencyFixed < 1. )               fUseDiceEfficiency = kTRUE;  
+  if(  fEfficiencyFixed < 1. ) {
+     if (!fUseDiceEfficiency)
+       fUseDiceEfficiency = 1; // 1 is the default; 2 can be set by user
+  }
+  else {
+    if(!fhEffH1 || !fhEffH2 || !fhEffH3 )      fUseDiceEfficiency = kFALSE;
+  }
 
   Bool_t selectEvent =  false;
   Bool_t physicsSelection = true;// handled by the framework(fInputHandler->IsEventSelected()&AliVEvent::kMB)==AliVEvent::kMB;
@@ -996,6 +1003,7 @@ void AliAnalysisTaskJetCluster::UserExec(Option_t */*option*/)
 
   Int_t nT = GetListOfTracks(&recParticles,fTrackTypeRec);
   Float_t nCh = recParticles.GetEntries(); 
+  Float_t nGen=genParticles.GetEntries();
   fh1Nch->Fill(nCh);
   if(fDebug>2)Printf("%s:%d Selected Rec tracks: %d %d",(char*)__FILE__,__LINE__,nT,recParticles.GetEntries());
   nT = GetListOfTracks(&genParticles,fTrackTypeGen);
@@ -1033,6 +1041,9 @@ void AliAnalysisTaskJetCluster::UserExec(Option_t */*option*/)
       Double_t rnd = fRandom->Uniform(1.);
       if(  fEfficiencyFixed<1. ) {
        sumEff = fEfficiencyFixed;
+        if (fUseDiceEfficiency == 2) {
+           sumEff = (nCh - fEfficiencyFixed*nGen) / nCh;  // rescale eff; fEfficiencyFixed is wrt to nGen, but dicing is fraction of nCh
+        }
       } else {
 
        pT = vp->Pt();
@@ -1876,6 +1887,7 @@ 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;
        }
+        if(fRequireITSRefit){if((tr->GetStatus()&AliESDtrack::kITSrefit)==0)continue;}
        if(TMath::Abs(tr->Eta())>fTrackEtaWindow){
          if(fDebug>10)Printf("%s:%d Not matching eta %d/%d",(char*)__FILE__,__LINE__,it,aod->GetNumberOfTracks());     
          continue;
@@ -1910,6 +1922,7 @@ Int_t  AliAnalysisTaskJetCluster::GetListOfTracks(TList *list,Int_t type){
        else if(fFilterType == 1)bGood = trackAOD->IsHybridTPCConstrainedGlobal();
        else if(fFilterType == 2)bGood = trackAOD->IsHybridGlobalConstrainedGlobal();
        if((fFilterMask>0)&&((!trackAOD->TestFilterBit(fFilterMask)||(!bGood))))continue;
+        if(fRequireITSRefit){if((trackAOD->GetStatus()&AliESDtrack::kITSrefit)==0)continue;}
        if(TMath::Abs(trackAOD->Eta())>fTrackEtaWindow) continue;
        if(trackAOD->Pt()<fTrackPtCut) continue;
        if(fDebug) printf("pt extra track %.2f \n", trackAOD->Pt());
@@ -2242,3 +2255,4 @@ bool AliAnalysisTaskJetCluster::IsDMeson(int pc){
        for(int i=0;i< (int)(sizeof(bPdG)/sizeof(int));++i) if(abs(pc) == bPdG[i]) return true;
 return false;
 }
+