]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
- FF task: switch for analysis of jets with max track
authorkleinb <kleinb@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sat, 4 Feb 2012 12:08:36 +0000 (12:08 +0000)
committerkleinb <kleinb@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sat, 4 Feb 2012 12:08:36 +0000 (12:08 +0000)
- jetChem task: same swtich
- AliFragmentationFunctionCorrections : coverity
(O. Busch)

PWGJE/AliAnalysisTaskFragmentationFunction.cxx
PWGJE/AliAnalysisTaskFragmentationFunction.h
PWGJE/AliAnalysisTaskJetChem.cxx
PWGJE/AliFragmentationFunctionCorrections.cxx
PWGJE/macros/AddTaskFragmentationFunction.C

index b70bc81fe780ffb581e8aa9eb98ca33957071389..28540a876a91b5a1de52dddbaece41fa2748b3df 100644 (file)
@@ -95,6 +95,8 @@ AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction()
    ,fDiJetCDFCut(0)
    ,fDiJetKindBins(0)
    ,fFFRadius(0)
+   ,fFFMaxTrackPt(-1)
+   ,fFFMinnTracks(0)
    ,fFFBckgRadius(0)
    ,fBckgMode(0)
    ,fIJMode(0)
@@ -397,6 +399,8 @@ AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction(const
   ,fDiJetCDFCut(0)
   ,fDiJetKindBins(0)
   ,fFFRadius(0)
+  ,fFFMaxTrackPt(-1)
+  ,fFFMinnTracks(0)
   ,fFFBckgRadius(0)
   ,fBckgMode(0)
   ,fIJMode(0)
@@ -703,6 +707,8 @@ AliAnalysisTaskFragmentationFunction::AliAnalysisTaskFragmentationFunction(const
   ,fDiJetCDFCut(copy.fDiJetCDFCut)
   ,fDiJetKindBins(copy.fDiJetKindBins)
   ,fFFRadius(copy.fFFRadius)
+  ,fFFMaxTrackPt(copy.fFFMaxTrackPt)
+  ,fFFMinnTracks(copy.fFFMinnTracks)
   ,fFFBckgRadius(copy.fFFBckgRadius)
   ,fBckgMode(copy.fBckgMode)
   ,fIJMode(copy.fIJMode)
@@ -1010,6 +1016,8 @@ AliAnalysisTaskFragmentationFunction& AliAnalysisTaskFragmentationFunction::oper
     fDiJetCDFCut                  = o.fDiJetCDFCut;
     fDiJetKindBins                = o.fDiJetKindBins;
     fFFRadius                     = o.fFFRadius;
+    fFFMaxTrackPt                 = o.fFFMaxTrackPt;
+    fFFMinnTracks                 = o.fFFMinnTracks;
     fFFBckgRadius                 = o.fFFBckgRadius;
     fBckgMode                     = o.fBckgMode;
     fIJMode                       = o.fIJMode;
@@ -3815,18 +3823,26 @@ void AliAnalysisTaskFragmentationFunction::UserExec(Option_t *)
        // get tracks in jet
        TList* jettracklist = new TList();
        Double_t sumPt      = 0.;
+       Bool_t isBadJet     = kFALSE;
        Float_t leadTrackPt = 0.;
        TLorentzVector* leadTrackV = new TLorentzVector();
 
+
        if(GetFFRadius()<=0){
-         GetJetTracksTrackrefs(jettracklist, jet);
+         GetJetTracksTrackrefs(jettracklist, jet, GetFFMaxTrackPt(), isBadJet);
        } else {
          if(fUseEmbeddedJetAxis){
-           if(embeddedJet) GetJetTracksPointing(fTracksRecCuts, jettracklist, embeddedJet, GetFFRadius(), sumPt);
+           if(embeddedJet) GetJetTracksPointing(fTracksRecCuts, jettracklist, embeddedJet, GetFFRadius(), sumPt, GetFFMaxTrackPt(), isBadJet);
          }
-         else              GetJetTracksPointing(fTracksRecCuts, jettracklist, jet, GetFFRadius(), sumPt);
+         else              GetJetTracksPointing(fTracksRecCuts, jettracklist, jet, GetFFRadius(), sumPt, GetFFMaxTrackPt(), isBadJet);
        }
        
+       if(GetFFMinNTracks()>0 && jettracklist->GetSize()<=GetFFMinNTracks()) isBadJet = kTRUE;
+
+       std::cout<<" here, isBadJet "<<isBadJet<<std::endl;
+       
+       if(isBadJet) continue; 
+
 
        if(ptFractionEmbedded>=fCutFractionPtEmbedded){ // if no embedding: ptFraction = cutFraction = 0
          
@@ -3938,15 +3954,19 @@ void AliAnalysisTaskFragmentationFunction::UserExec(Option_t *)
        
        TList* jettracklist = new TList();
        Double_t sumPt      = 0.;
+       Bool_t isBadJet     = kFALSE;
        Float_t leadTrackPt = 0.;
        TLorentzVector* leadTrackV = new TLorentzVector();
        
        if(GetFFRadius()<=0){
-         GetJetTracksTrackrefs(jettracklist, jet);
+         GetJetTracksTrackrefs(jettracklist, jet, GetFFMaxTrackPt(), isBadJet);
        } else {
-         GetJetTracksPointing(fTracksGen, jettracklist, jet, GetFFRadius(), sumPt);
+         GetJetTracksPointing(fTracksGen, jettracklist, jet, GetFFRadius(), sumPt, GetFFMaxTrackPt(), isBadJet);
        }
        
+       if(GetFFMinNTracks()>0 && jettracklist->GetSize()<=GetFFMinNTracks()) isBadJet = kTRUE;;
+       if(isBadJet) continue; 
+
        for(Int_t it=0; it<jettracklist->GetSize(); ++it){
          
          AliVParticle*   trackVP = dynamic_cast<AliVParticle*>(jettracklist->At(it));
@@ -4034,73 +4054,83 @@ void AliAnalysisTaskFragmentationFunction::UserExec(Option_t *)
                if(fDJMode&1){
                  TList* jettracklist1 = new TList();
                  Double_t sumPt1      = 0.;
+                 Bool_t isBadJet1     = kFALSE;
                  Float_t leadTrackPt1 = 0;
                  
+
                  TList* jettracklist2 = new TList();
                  Double_t sumPt2      = 0.;
+                 Bool_t isBadJet2     = kFALSE;
                  Float_t leadTrackPt2 = 0;
                  
                  if(GetFFRadius()<=0)
                    {
-                     GetJetTracksTrackrefs(jettracklist1, jet1);
-                     GetJetTracksTrackrefs(jettracklist2, jet2);
+                     GetJetTracksTrackrefs(jettracklist1, jet1, GetFFMaxTrackPt(), isBadJet1);
+                     GetJetTracksTrackrefs(jettracklist2, jet2, GetFFMaxTrackPt(), isBadJet2);
                    }
                  else
                    {
-                     GetJetTracksPointing(fTracksRecCuts, jettracklist1, jet1, GetFFRadius(), sumPt1);
-                     GetJetTracksPointing(fTracksRecCuts, jettracklist2, jet2, GetFFRadius(), sumPt2);
+                     GetJetTracksPointing(fTracksRecCuts, jettracklist1, jet1, GetFFRadius(), sumPt1, GetFFMaxTrackPt(), isBadJet1);
+                     GetJetTracksPointing(fTracksRecCuts, jettracklist2, jet2, GetFFRadius(), sumPt2, GetFFMaxTrackPt(), isBadJet2);
                    }
                  
-                 Int_t nTracks = jettracklist1->GetSize(); 
-                 if (jettracklist1->GetSize() < jettracklist2->GetSize()) nTracks = jettracklist2->GetSize();
+
+                 if(GetFFMinNTracks()>0 && jettracklist1->GetSize()<=GetFFMinNTracks()) isBadJet1 = kTRUE;
+                 if(GetFFMinNTracks()>0 && jettracklist1->GetSize()<=GetFFMinNTracks()) isBadJet2 = kTRUE;
+
+                 if(!(isBadJet1 || isBadJet2)){ // good jets
+
+                   Int_t nTracks = jettracklist1->GetSize(); 
+                   if (jettracklist1->GetSize() < jettracklist2->GetSize()) nTracks = jettracklist2->GetSize();
                  
-                 for(Int_t it=0; it<nTracks; ++it)
-                   {
-                     if (it < jettracklist1->GetSize())
-                       { 
-                         AliVParticle *vp = (dynamic_cast<AliVParticle*> (jettracklist1->At(it)));
-                         Float_t trackPt1 = (vp?vp->Pt():0);
-                         Float_t jetPt1   = jet1->Pt();
-                         
-                         Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
+                   for(Int_t it=0; it<nTracks; ++it)
+                     {
+                       if (it < jettracklist1->GetSize())
+                         
+                           AliVParticle *vp = (dynamic_cast<AliVParticle*> (jettracklist1->At(it)));
+                           Float_t trackPt1 = (vp?vp->Pt():0);
+                           Float_t jetPt1   = jet1->Pt();
+                           
+                           Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
                          
-                         fFFDiJetHistosRecCuts->FillDiJetFF(1, trackPt1, jetPt1, jetBin, incrementJetPt);
-                         fFFDiJetHistosRecCuts->FillDiJetFF(0, trackPt1, jetPt1, jetBin, incrementJetPt);
-                         
-                         if (it == 0)
-                           {
-                             leadTrackPt1 = trackPt1;
-                             
-                             fFFDiJetHistosRecLeadingTrack->FillDiJetFF(1, leadTrackPt1, jetPt1, jetBin, kTRUE); 
-                             fFFDiJetHistosRecLeadingTrack->FillDiJetFF(0, leadTrackPt1, jetPt1, jetBin, kTRUE); 
-                           }
-                         
-                         fFFDiJetHistosRecLeading->FillDiJetFF(1, trackPt1, leadTrackPt1, jetBin, incrementJetPt); 
-                         fFFDiJetHistosRecLeading->FillDiJetFF(0, trackPt1, leadTrackPt1, jetBin, incrementJetPt); 
-                       }
-                     
-                     if (it < jettracklist2->GetSize())
-                       { 
-                         Float_t trackPt2   = ((AliVParticle*)(jettracklist2->At(it)))->Pt();
-                         Float_t jetPt2     = jet2->Pt();
-                         
-                         Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
-                         
-                         fFFDiJetHistosRecCuts->FillDiJetFF(2, trackPt2, jetPt2, jetBin, incrementJetPt);
-                         fFFDiJetHistosRecCuts->FillDiJetFF(0, trackPt2, jetPt2, jetBin, incrementJetPt);
-                         
-                         if (it == 0)
-                           {
-                             leadTrackPt2 = trackPt2;
-                             
-                             fFFDiJetHistosRecLeadingTrack->FillDiJetFF(2, leadTrackPt2, jetPt2, jetBin, kTRUE);
-                             fFFDiJetHistosRecLeadingTrack->FillDiJetFF(0, leadTrackPt2, jetPt2, jetBin, kTRUE);
-                           }
-                         
-                         fFFDiJetHistosRecLeading->FillDiJetFF(2, trackPt2, leadTrackPt2, jetBin, incrementJetPt);
-                         fFFDiJetHistosRecLeading->FillDiJetFF(0, trackPt2, leadTrackPt2, jetBin, incrementJetPt);
-                       }
-                   } // End loop on tracks
+                           fFFDiJetHistosRecCuts->FillDiJetFF(1, trackPt1, jetPt1, jetBin, incrementJetPt);
+                           fFFDiJetHistosRecCuts->FillDiJetFF(0, trackPt1, jetPt1, jetBin, incrementJetPt);
+                           
+                           if (it == 0)
+                             {
+                               leadTrackPt1 = trackPt1;
+                               
+                               fFFDiJetHistosRecLeadingTrack->FillDiJetFF(1, leadTrackPt1, jetPt1, jetBin, kTRUE); 
+                               fFFDiJetHistosRecLeadingTrack->FillDiJetFF(0, leadTrackPt1, jetPt1, jetBin, kTRUE); 
+                             }
+                           
+                           fFFDiJetHistosRecLeading->FillDiJetFF(1, trackPt1, leadTrackPt1, jetBin, incrementJetPt); 
+                           fFFDiJetHistosRecLeading->FillDiJetFF(0, trackPt1, leadTrackPt1, jetBin, incrementJetPt); 
+                         }
+                       
+                       if (it < jettracklist2->GetSize())
+                         { 
+                           Float_t trackPt2   = ((AliVParticle*)(jettracklist2->At(it)))->Pt();
+                           Float_t jetPt2     = jet2->Pt();
+                           
+                           Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
+                           
+                           fFFDiJetHistosRecCuts->FillDiJetFF(2, trackPt2, jetPt2, jetBin, incrementJetPt);
+                           fFFDiJetHistosRecCuts->FillDiJetFF(0, trackPt2, jetPt2, jetBin, incrementJetPt);
+                           
+                           if (it == 0)
+                             {
+                               leadTrackPt2 = trackPt2;
+                               
+                               fFFDiJetHistosRecLeadingTrack->FillDiJetFF(2, leadTrackPt2, jetPt2, jetBin, kTRUE);
+                               fFFDiJetHistosRecLeadingTrack->FillDiJetFF(0, leadTrackPt2, jetPt2, jetBin, kTRUE);
+                             }
+                           
+                           fFFDiJetHistosRecLeading->FillDiJetFF(2, trackPt2, leadTrackPt2, jetBin, incrementJetPt);
+                           fFFDiJetHistosRecLeading->FillDiJetFF(0, trackPt2, leadTrackPt2, jetBin, incrementJetPt);
+                         }
+                     } // End loop on tracks
+                 }
                  
                  delete jettracklist1;
                  delete jettracklist2;
@@ -4163,73 +4193,82 @@ void AliAnalysisTaskFragmentationFunction::UserExec(Option_t *)
                if(fDJMode&1){
                  TList* jettracklist1 = new TList();
                  Double_t sumPt1 = 0.;
+                 Bool_t isBadJet1     = kFALSE;
                  Float_t leadTrackPt1 = 0.;
-                 
+
                  TList* jettracklist2 = new TList();
                  Double_t sumPt2 = 0.;
+                 Bool_t isBadJet2     = kFALSE;
                  Float_t leadTrackPt2 = 0.;
                  
                  if(GetFFRadius()<=0)
                    {
-                     GetJetTracksTrackrefs(jettracklist1, jet1);
-                     GetJetTracksTrackrefs(jettracklist2, jet2);
+                     GetJetTracksTrackrefs(jettracklist1, jet1, GetFFMaxTrackPt(), isBadJet1);
+                     GetJetTracksTrackrefs(jettracklist2, jet2, GetFFMaxTrackPt(), isBadJet2);
                    }
                  else
                    {
-                     GetJetTracksPointing(fTracksGen, jettracklist1, jet1, GetFFRadius(), sumPt1);
-                     GetJetTracksPointing(fTracksGen, jettracklist2, jet2, GetFFRadius(), sumPt2);
+                     GetJetTracksPointing(fTracksGen, jettracklist1, jet1, GetFFRadius(), sumPt1, GetFFMaxTrackPt(), isBadJet1);
+                     GetJetTracksPointing(fTracksGen, jettracklist2, jet2, GetFFRadius(), sumPt2, GetFFMaxTrackPt(), isBadJet2);
                    }
                  
-                 Int_t nTracks = jettracklist1->GetSize(); 
-                 if (jettracklist1->GetSize() < jettracklist2->GetSize()) nTracks = jettracklist2->GetSize();
                  
-                 for(Int_t it=0; it<nTracks; ++it)
-                   {
-                     if (it < jettracklist1->GetSize())
-                       { 
-                         Float_t trackPt1 = ((AliVParticle*)jettracklist1->At(it))->Pt();
-                         Float_t jetPt1 = jet1->Pt();
-                         
-                         Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
-                         
-                         fFFDiJetHistosGen->FillDiJetFF( 1, trackPt1, jetPt1, jetBin, incrementJetPt);
-                         fFFDiJetHistosGen->FillDiJetFF( 0, trackPt1, jetPt1, jetBin, incrementJetPt);
-                         
-                         if(it==0)
-                           { 
-                             leadTrackPt1 = trackPt1;
-                             
-                             fFFDiJetHistosGenLeadingTrack->FillDiJetFF( 1, leadTrackPt1, jetPt1, jetBin, kTRUE);
-                             fFFDiJetHistosGenLeadingTrack->FillDiJetFF( 0, leadTrackPt1, jetPt1, jetBin, kTRUE);
-                           }
-                         
-                         fFFDiJetHistosGenLeading->FillDiJetFF( 1, trackPt1, leadTrackPt1, jetBin, incrementJetPt);
-                         fFFDiJetHistosGenLeading->FillDiJetFF( 0, trackPt1, leadTrackPt1, jetBin, incrementJetPt);
-                       }
-                     
-                     if (it < jettracklist2->GetSize())
-                       { 
-                         Float_t trackPt2 = ((AliVParticle*)jettracklist2->At(it))->Pt();
-                         Float_t jetPt2 = jet2->Pt();
-                         
-                         Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
-                         
-                         fFFDiJetHistosGen->FillDiJetFF( 2, trackPt2, jetPt2, jetBin, incrementJetPt);
-                         fFFDiJetHistosGen->FillDiJetFF( 0, trackPt2, jetPt2, jetBin, incrementJetPt);
+                 if(GetFFMinNTracks()>0 && jettracklist1->GetSize()<=GetFFMinNTracks()) isBadJet1 = kTRUE;
+                 if(GetFFMinNTracks()>0 && jettracklist1->GetSize()<=GetFFMinNTracks()) isBadJet2 = kTRUE;
+                 
+                 if(!(isBadJet1 || isBadJet2)){ // good jets
+
+                   Int_t nTracks = jettracklist1->GetSize(); 
+                   if (jettracklist1->GetSize() < jettracklist2->GetSize()) nTracks = jettracklist2->GetSize();
+                 
+                   for(Int_t it=0; it<nTracks; ++it)
+                     {
+                       if (it < jettracklist1->GetSize())
+                         { 
+                           Float_t trackPt1 = ((AliVParticle*)jettracklist1->At(it))->Pt();
+                           Float_t jetPt1 = jet1->Pt();
+                           
+                           Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
+                           
+                           fFFDiJetHistosGen->FillDiJetFF( 1, trackPt1, jetPt1, jetBin, incrementJetPt);
+                           fFFDiJetHistosGen->FillDiJetFF( 0, trackPt1, jetPt1, jetBin, incrementJetPt);
+                           
+                           if(it==0)
+                             { 
+                               leadTrackPt1 = trackPt1;
+                               
+                               fFFDiJetHistosGenLeadingTrack->FillDiJetFF( 1, leadTrackPt1, jetPt1, jetBin, kTRUE);
+                               fFFDiJetHistosGenLeadingTrack->FillDiJetFF( 0, leadTrackPt1, jetPt1, jetBin, kTRUE);
+                             }
+                           
+                           fFFDiJetHistosGenLeading->FillDiJetFF( 1, trackPt1, leadTrackPt1, jetBin, incrementJetPt);
+                           fFFDiJetHistosGenLeading->FillDiJetFF( 0, trackPt1, leadTrackPt1, jetBin, incrementJetPt);
+                         }
+                       
+                       if (it < jettracklist2->GetSize())
+                         { 
+                           Float_t trackPt2 = ((AliVParticle*)jettracklist2->At(it))->Pt();
+                           Float_t jetPt2 = jet2->Pt();
+                           
+                           Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
+                           
+                           fFFDiJetHistosGen->FillDiJetFF( 2, trackPt2, jetPt2, jetBin, incrementJetPt);
+                           fFFDiJetHistosGen->FillDiJetFF( 0, trackPt2, jetPt2, jetBin, incrementJetPt);
                          
-                         if (it==0)
-                           { 
-                             leadTrackPt2 = trackPt2;
-                             
-                             fFFDiJetHistosGenLeadingTrack->FillDiJetFF( 2, leadTrackPt2, jetPt2, jetBin, kTRUE);
-                             fFFDiJetHistosGenLeadingTrack->FillDiJetFF( 0, leadTrackPt2, jetPt2, jetBin, kTRUE);
-                           }
+                           if (it==0)
+                             
+                               leadTrackPt2 = trackPt2;
+                               
+                               fFFDiJetHistosGenLeadingTrack->FillDiJetFF( 2, leadTrackPt2, jetPt2, jetBin, kTRUE);
+                               fFFDiJetHistosGenLeadingTrack->FillDiJetFF( 0, leadTrackPt2, jetPt2, jetBin, kTRUE);
+                             }
                          
-                         fFFDiJetHistosGenLeading->FillDiJetFF( 2, trackPt2, leadTrackPt2, jetBin, incrementJetPt);
-                         fFFDiJetHistosGenLeading->FillDiJetFF( 0, trackPt2, leadTrackPt2, jetBin, incrementJetPt);
-                       }
-                   } // End loop on tracks
-                 
+                           fFFDiJetHistosGenLeading->FillDiJetFF( 2, trackPt2, leadTrackPt2, jetBin, incrementJetPt);
+                           fFFDiJetHistosGenLeading->FillDiJetFF( 0, trackPt2, leadTrackPt2, jetBin, incrementJetPt);
+                         }
+                     } // End loop on tracks
+                 }               
+
                  delete jettracklist1;
                  delete jettracklist2;
                }
@@ -4288,21 +4327,33 @@ void AliAnalysisTaskFragmentationFunction::UserExec(Option_t *)
     for(Int_t ij=0; ij<nRecEffJets; ++ij){ 
     
       AliAODJet* jet = (AliAODJet*)(fJetsRecEff->At(ij));
+      Bool_t isBadJetGenPrim = kFALSE;
+      Bool_t isBadJetGenSec  = kFALSE;
+      Bool_t isBadJetRec     = kFALSE;
     
+
       if(ij==0){ // leading jet
        
+       // for efficiency: gen tracks from pointing with gen/rec jet
        TList* jettracklistGenPrim = new TList();
-       GetJetTracksPointing(fTracksAODMCCharged, jettracklistGenPrim, jet, GetFFRadius(), sumPtGenLeadingJetRecEff); // for efficiency: gen tracks from pointing with gen/rec jet
+       GetJetTracksPointing(fTracksAODMCCharged, jettracklistGenPrim, jet, GetFFRadius(), sumPtGenLeadingJetRecEff, GetFFMaxTrackPt(), isBadJetGenPrim); 
 
        TList* jettracklistGenSec = new TList();
-       GetJetTracksPointing(fTracksAODMCChargedSec, jettracklistGenSec, jet, GetFFRadius(), sumPtGenLeadingJetSec); // for efficiency: gen tracks from pointing with gen/rec jet
-       
+       GetJetTracksPointing(fTracksAODMCChargedSec, jettracklistGenSec, jet, GetFFRadius(), sumPtGenLeadingJetSec, GetFFMaxTrackPt(), isBadJetGenSec); 
+
+       // bin efficiency in jet pt bins using rec tracks  
        TList* jettracklistRec = new TList();
-       GetJetTracksPointing(fTracksRecCuts,jettracklistRec, jet, GetFFRadius(), sumPtRecLeadingJetRecEff); // bin efficiency in jet pt bins using rec tracks  
+       GetJetTracksPointing(fTracksRecCuts,jettracklistRec, jet, GetFFRadius(), sumPtRecLeadingJetRecEff, GetFFMaxTrackPt(), isBadJetRec); 
        
        Double_t jetEta   = jet->Eta();
        Double_t jetPhi   = TVector2::Phi_0_2pi(jet->Phi());
        
+       if(GetFFMinNTracks()>0 && jettracklistGenPrim->GetSize()<=GetFFMinNTracks()) isBadJetGenPrim = kTRUE;
+       if(GetFFMinNTracks()>0 && jettracklistGenSec->GetSize()<=GetFFMinNTracks())  isBadJetGenSec  = kTRUE;
+       if(GetFFMinNTracks()>0 && jettracklistRec->GetSize()<=GetFFMinNTracks())     isBadJetRec     = kTRUE;
+
+       if(isBadJetRec) continue;
+
        if(fQAMode&2) fQAJetHistosRecEffLeading->FillJetQA( jetEta, jetPhi, sumPtGenLeadingJetRecEff ); 
        
        if(fFFMode) FillJetTrackHistosRecGen(fFFHistosRecEffGen,fFFHistosRecEffRec,sumPtGenLeadingJetRecEff,sumPtRecLeadingJetRecEff,
@@ -4893,11 +4944,15 @@ void AliAnalysisTaskFragmentationFunction::SetProperties(TH1* h,const char* x, c
 }
 
 // ________________________________________________________________________________________________________________________________________________________
-void AliAnalysisTaskFragmentationFunction::GetJetTracksPointing(TList* inputlist, TList* outputlist, const AliAODJet* jet, const Double_t radius,Double_t& sumPt)
+void AliAnalysisTaskFragmentationFunction::GetJetTracksPointing(TList* inputlist, TList* outputlist, const AliAODJet* jet, 
+                                                               const Double_t radius, Double_t& sumPt, const Double_t maxPt, Bool_t& isBadMaxPt)
 {
   // fill list of tracks in cone around jet axis  
 
   sumPt = 0;
+  isBadMaxPt = kFALSE;
+
+  std::cout<<" enter GetJetTracksPointing, maxPt "<<maxPt<<std::endl;
 
   Double_t jetMom[3];
   jet->PxPyPz(jetMom);
@@ -4918,14 +4973,20 @@ void AliAnalysisTaskFragmentationFunction::GetJetTracksPointing(TList* inputlist
       outputlist->Add(track);
       
       sumPt += track->Pt();
+
+      if(maxPt>0 && track->Pt()>maxPt) isBadMaxPt = kTRUE;
+      if(maxPt>0 && track->Pt()>maxPt) std::cout<<" found bad jet, track pt "<<track->Pt()<<" max Pt "<<maxPt<<std::endl;
     }
   }
-  
+
+  std::cout<<" leave GetJetTracksPointing, maxPt "<<maxPt<<" isBadMaxPt "<<isBadMaxPt<<std::endl;
+
+
   outputlist->Sort();
 }
 
 // ___________________________________________________________________________________________
-void AliAnalysisTaskFragmentationFunction::GetJetTracksTrackrefs(TList* list, const AliAODJet* jet)
+void AliAnalysisTaskFragmentationFunction::GetJetTracksTrackrefs(TList* list, const AliAODJet* jet, const Double_t maxPt, Bool_t& isBadMaxPt)
 {
   // list of jet tracks from trackrefs
   
@@ -4939,6 +5000,7 @@ void AliAnalysisTaskFragmentationFunction::GetJetTracksTrackrefs(TList* list, co
       continue;
     }
         
+    if(maxPt>0 && track->Pt()>maxPt) isBadMaxPt = kTRUE;
     list->Add(track);
   }
   
index e5068cd5d9cdffe44a0c811883f960d6c1623fd0..642dc8174c713603e245ac595ad0e6502d6ef05b 100644 (file)
@@ -373,6 +373,8 @@ class AliAnalysisTaskFragmentationFunction : public AliAnalysisTaskSE {
   virtual void   SetKindSlices(Int_t slice = 1) {fDiJetKindBins = slice;}
 
   virtual void   SetFFRadius(Float_t r = 0.4) { fFFRadius = r; }
+  virtual void   SetFFMaxTrackPt(Float_t pt = -1) { fFFMaxTrackPt = pt; }
+  virtual void   SetFFMinNTracks(Int_t nTracks = 0) { fFFMinnTracks = nTracks; }
   virtual void   SetFFBckgRadius(Float_t r = 0.7) { fFFBckgRadius = r; }
   virtual void   SetBckgMode(Bool_t bg = 1) { fBckgMode = bg; }
   virtual void   SetBckgType(Int_t bg0 = 0, Int_t bg1 = 1,Int_t bg2 = 2, Int_t bg3 = 3, Int_t bg4 = 4) 
@@ -452,9 +454,11 @@ class AliAnalysisTaskFragmentationFunction : public AliAnalysisTaskSE {
   }
 
   Float_t  GetFFRadius() const { return fFFRadius; }
+  Float_t  GetFFMaxTrackPt() const { return fFFMaxTrackPt; }
+  Float_t  GetFFMinNTracks() const { return fFFMinnTracks; }
   Float_t  GetFFBckgRadius() const { return fFFBckgRadius; }
-  void    GetJetTracksTrackrefs(TList* l, const AliAODJet* j);
-  void    GetJetTracksPointing(TList* in, TList* out, const AliAODJet* j, const Double_t r, Double_t& pt);  
+  void    GetJetTracksTrackrefs(TList* l, const AliAODJet* j, const Double_t maxPt, Bool_t& isBadMaxPt);
+  void    GetJetTracksPointing(TList* in, TList* out, const AliAODJet* j, const Double_t r, Double_t& sumPt, const Double_t maxPt, Bool_t& isBadMaxPt);  
   void     GetTracksOutOfNJets(Int_t nCases, TList* in, TList* out, TList* jets, Double_t& pt);
   void     GetTracksOutOfNJetsStat(Int_t nCases, TList* in, TList* out, TList* jets, Double_t& pt, Double_t &normFactor);
   void     GetTracksTiltedwrpJetAxis(Float_t alpha, TList* inputlist, TList* outputlist, const AliAODJet* jet, Double_t radius, Double_t& sumPt);
@@ -558,6 +562,8 @@ class AliAnalysisTaskFragmentationFunction : public AliAnalysisTaskSE {
   Int_t   fDiJetKindBins;       // type of bins: invmass, etleading, emean
 
   Float_t fFFRadius;        // if radius > 0 construct FF from tracks within cone around jet axis, otherwise use trackRefs  
+  Float_t fFFMaxTrackPt;    // reject jets containing any track with pt larger than this value
+  Int_t   fFFMinnTracks;    // reject jets with less tracks than this value
   Float_t fFFBckgRadius;    // compute background outside cone of this radius around jet axes
   Bool_t  fBckgMode;        // Set background subtraction mode
   Int_t   fBckgType[5];     // Set background subtraction mode
index ffc4f9c2e474a97cfabeb61b2b500f452d1daa6a..7da235b8054ba14806485426cd2f71b25dd21cda 100644 (file)
@@ -852,24 +852,29 @@ void AliAnalysisTaskJetChem::UserExec(Option_t *)
   for(Int_t ij=0; ij<nRecJetsCuts; ++ij){
 
     AliAODJet* jet = (AliAODJet*) (fJetsRecCuts->At(ij));
-    
+    Double_t jetPt = jet->Pt();
+
     if(ij==0){ // leading jet
       
       TList* jettracklist = new TList();
       Double_t sumPt      = 0.;
+      Bool_t isBadJet     = kFALSE;
       
       if(GetFFRadius()<=0){
-       GetJetTracksTrackrefs(jettracklist, jet);
+       GetJetTracksTrackrefs(jettracklist, jet, GetFFMaxTrackPt(), isBadJet);
       } else {
-       GetJetTracksPointing(fTracksRecCuts, jettracklist, jet, GetFFRadius(), sumPt);
+       GetJetTracksPointing(fTracksRecCuts, jettracklist, jet, GetFFRadius(), sumPt, GetFFMaxTrackPt(), isBadJet);
       }
+
+      if(GetFFMinNTracks()>0 && jettracklist->GetSize() <= GetFFMinNTracks()) isBadJet = kTRUE;
+      if(isBadJet) continue; 
+
       
       for(Int_t it=0; it<jettracklist->GetSize(); ++it){
 
        AliVParticle* trackVP = dynamic_cast<AliVParticle*>(jettracklist->At(it));      
        if(!trackVP)continue;
 
-       Float_t jetPt   = jet->Pt();
        Float_t trackPt = trackVP->Pt();
        
        Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
@@ -879,20 +884,10 @@ void AliAnalysisTaskJetChem::UserExec(Option_t *)
       }
       
       delete jettracklist;
-    }
-  }
-
 
-  for(Int_t ij=0; ij<nRecJetsCuts; ++ij){ // jet loop
-
-    AliAODJet* jet = dynamic_cast<AliAODJet*>(fJetsRecCuts->At(ij));
-    if(!jet) continue;
-    
-    if(ij==0){ // leading jet
-      
-      //fQAJetHistosRecCutsLeading->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt() );
+      // ---- K0s ---- 
       
-      Float_t jetPt   = jet->Pt();
+      // fQAJetHistosRecCutsLeading->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt() );
 
       for(Int_t it=0; it<fListK0s->GetSize(); ++it){ // loop all K0s 
 
@@ -916,6 +911,7 @@ void AliAnalysisTaskJetChem::UserExec(Option_t *)
        fh1dPhiJetK0->Fill(dPhiJetK0);
 
       }
+
       if(fListK0s->GetSize() == 0){ // no K0: increment jet pt spectrum 
 
        Bool_t incrementJetPt = kTRUE;
@@ -924,10 +920,12 @@ void AliAnalysisTaskJetChem::UserExec(Option_t *)
       
 
       TList* jetConeK0list = new TList();
-      Double_t sumPt   = 0.;
-      
-      GetJetTracksPointing(fListK0s, jetConeK0list, jet, GetFFRadius(), sumPt);
+      Double_t sumPtK0     = 0.;
+      Bool_t isBadJetK0    = kFALSE; // dummy, do not use
+
+      GetJetTracksPointing(fListK0s, jetConeK0list, jet, GetFFRadius(), sumPtK0, GetFFMaxTrackPt(), isBadJetK0);
+
+
       if(fDebug>2)Printf("%s:%d nK0s total: %d, in jet cone: %d,FFRadius %f ",(char*)__FILE__,__LINE__,nK0s,jetConeK0list->GetEntries(),GetFFRadius());
       
       for(Int_t it=0; it<jetConeK0list->GetSize(); ++it){ // loop K0s in jet cone
index 70141be85416f23a40be1433330a19b00d1e7602..fac6af9380a73db64070900ffa64dd8455a928c1 100644 (file)
@@ -303,19 +303,24 @@ AliFragmentationFunctionCorrections::AliFragFuncCorrHistos::AliFragFuncCorrHisto
 }
 
 //__________________________________________________________________________________________________________________
-AliFragmentationFunctionCorrections::AliFragFuncCorrHistos::AliFragFuncCorrHistos(const AliFragFuncCorrHistos& copy)
+AliFragmentationFunctionCorrections::AliFragFuncCorrHistos::AliFragFuncCorrHistos(const AliFragmentationFunctionCorrections::AliFragFuncCorrHistos& copy)
   : TObject()
   ,fArraySize(copy.fArraySize)
-  ,fh1CorrFFTrackPt(copy.fh1CorrFFTrackPt)
-  ,fh1CorrFFZ(copy.fh1CorrFFZ)
-  ,fh1CorrFFXi(copy.fh1CorrFFXi)
+  ,fh1CorrFFTrackPt(0)
+  ,fh1CorrFFZ(0)
+  ,fh1CorrFFXi(0)
   ,fCorrLabel(copy.fCorrLabel)
 {
   // copy constructor
+
+  fh1CorrFFTrackPt = new TH1F*[copy.fArraySize];
+  fh1CorrFFZ       = new TH1F*[copy.fArraySize];
+  fh1CorrFFXi      = new TH1F*[copy.fArraySize];
+
   for(Int_t i=0; i<copy.fArraySize; i++){
-    fh1CorrFFTrackPt[i] = copy.fh1CorrFFTrackPt[i];
-    fh1CorrFFZ[i]       = copy.fh1CorrFFZ[i];
-    fh1CorrFFXi[i]      = copy.fh1CorrFFXi[i];
+    fh1CorrFFTrackPt[i] = new TH1F(*(copy.fh1CorrFFTrackPt[i]));
+    fh1CorrFFZ[i]       = new TH1F(*(copy.fh1CorrFFZ[i]));
+    fh1CorrFFXi[i]      = new TH1F(*(copy.fh1CorrFFXi[i]));
   }
 }
 
@@ -326,16 +331,46 @@ AliFragmentationFunctionCorrections::AliFragFuncCorrHistos& AliFragmentationFunc
   
   if(this!=&o){
     TObject::operator=(o);
-    fArraySize       = o.fArraySize;
+    Int_t fArraySize_new = o.fArraySize;
     fCorrLabel       = o.fCorrLabel;
  
-    for(Int_t i=0; i<o.fArraySize; i++){
-      fh1CorrFFTrackPt[i] = o.fh1CorrFFTrackPt[i];
-      fh1CorrFFZ[i]       = o.fh1CorrFFZ[i];
-      fh1CorrFFXi[i]      = o.fh1CorrFFXi[i];
+    TH1F** fh1CorrFFTrackPt_new = new TH1F*[fArraySize_new];
+    TH1F** fh1CorrFFZ_new       = new TH1F*[fArraySize_new];
+    TH1F** fh1CorrFFXi_new      = new TH1F*[fArraySize_new];
+
+    for(Int_t i=0; i<fArraySize_new; i++){
+      fh1CorrFFTrackPt_new[i] = new TH1F(*(o.fh1CorrFFTrackPt[i]));
+      fh1CorrFFZ_new[i]       = new TH1F(*(o.fh1CorrFFZ[i]));
+      fh1CorrFFXi_new[i]      = new TH1F(*(o.fh1CorrFFXi[i]));
     }
-  }
     
+    // ---
+
+    if(fArraySize){
+      for(int i=0; i<fArraySize; i++) delete fh1CorrFFTrackPt[i];
+      for(int i=0; i<fArraySize; i++) delete fh1CorrFFZ[i];
+      for(int i=0; i<fArraySize; i++) delete fh1CorrFFXi[i];          
+    }
+
+    if(fh1CorrFFTrackPt) delete[] fh1CorrFFTrackPt;
+    if(fh1CorrFFZ)       delete[] fh1CorrFFZ;
+    if(fh1CorrFFXi)      delete[] fh1CorrFFXi;
+        
+    // ---
+
+    fArraySize = fArraySize_new;
+
+    fh1CorrFFTrackPt = fh1CorrFFTrackPt_new;
+    fh1CorrFFZ       = fh1CorrFFZ_new;
+    fh1CorrFFXi      = fh1CorrFFXi_new;
+    
+    for(Int_t i=0; i<fArraySize; i++){
+      fh1CorrFFTrackPt[i] = fh1CorrFFTrackPt_new[i];
+      fh1CorrFFZ[i]       = fh1CorrFFZ_new[i];
+      fh1CorrFFXi[i]      = fh1CorrFFXi_new[i];
+    }
+  }
+  
   return *this;
 }
 
@@ -1415,12 +1450,19 @@ void AliFragmentationFunctionCorrections::UnfoldHistos(const Int_t nIter, const
     if(type == kFlagPt)      hist = fCorrFF[fNCorrectionLevels-2]->GetTrackPt(i); // level -2: before unfolding, level -1: unfolded
     else if(type == kFlagZ)  hist = fCorrFF[fNCorrectionLevels-2]->GetZ(i);       // level -2: before unfolding, level -1: unfolded
     else if(type == kFlagXi) hist = fCorrFF[fNCorrectionLevels-2]->GetXi(i);      // level -2: before unfolding, level -1: unfolded
+    else{ 
+      Printf("%s%d unknown type",(char*)__FILE__,__LINE__);
+      return;
+    }
 
     THnSparse* hnResponse = 0;
-    if(type == kFlagPt) hnResponse = fhnResponsePt[i];
+    if(type == kFlagPt)      hnResponse = fhnResponsePt[i];
     else if(type == kFlagZ)  hnResponse = fhnResponseZ[i];
     else if(type == kFlagXi) hnResponse = fhnResponseXi[i];
-
+    else{ 
+      Printf("%s%d unknown type",(char*)__FILE__,__LINE__);
+      return;
+    }
 
     TH1F* hPrior = 0;
     if(type == kFlagPt && fh1FFTrackPtPrior[i]  && ((TString(fh1FFTrackPtPrior[i]->GetName())).Length() > 0) ) hPrior = fh1FFTrackPtPrior[i];
@@ -1456,8 +1498,8 @@ void AliFragmentationFunctionCorrections::UnfoldHistos(const Int_t nIter, const
     THnSparse* hnUnfolded 
       = Unfold(hnHist,hnResponse,hnFlatEfficiency,nIter,useCorrelatedErrors,hnPrior);  
      
-    TH1F* hUnfolded = (TH1F*) hnUnfolded->Projection(0);
-    if (hist)
+    TH1F* hUnfolded = (TH1F*) hnUnfolded->Projection(0); 
+    if(hist)
       hUnfolded->SetNameTitle(hist->GetName(),hist->GetTitle());
     
     if(type == kFlagPt) fCorrFF[fNCorrectionLevels-1]->AddCorrHistos(i,hUnfolded,0,0);
@@ -1465,8 +1507,8 @@ void AliFragmentationFunctionCorrections::UnfoldHistos(const Int_t nIter, const
     if(type == kFlagXi) fCorrFF[fNCorrectionLevels-1]->AddCorrHistos(i,0,0,hUnfolded);
 
     // backfolding: apply response matrix to unfolded spectrum
-    TH1F* hBackFolded = ApplyResponse(hUnfolded,hnResponse);
-    if (hist)
+    TH1F* hBackFolded = ApplyResponse(hUnfolded,hnResponse); 
+    if(hist) 
       hBackFolded->SetNameTitle(histNameBackFolded,hist->GetTitle());
 
     if(type == kFlagPt) fh1FFTrackPtBackFolded[i] = hBackFolded;
@@ -1476,7 +1518,7 @@ void AliFragmentationFunctionCorrections::UnfoldHistos(const Int_t nIter, const
     // ratio unfolded to original histo 
     TH1F* hRatioUnfolded = (TH1F*) hUnfolded->Clone(histNameRatioFolded);
     hRatioUnfolded->Reset();
-    if (hist)
+    if (hist) 
       hRatioUnfolded->Divide(hUnfolded,hist,1,1,"B");
 
     if(type == kFlagPt) fh1FFRatioTrackPtFolded[i] = hRatioUnfolded;
index f2fee87975c3e6489de71d19e02a6e27db9d9071..0633c7f358017bb7693eb78894ed57a3a4d67278 100644 (file)
@@ -80,10 +80,13 @@ AliAnalysisTaskFragmentationFunction *AddTaskFragmentationFunctionAllCent(
        UInt_t filterMask,
         Float_t radius,
         int kBackgroundMode,
-        float PtTrackMin,
+        Int_t PtTrackMin,
         TString BrOpt="",
         TString BrOpt2="",
-        Float_t radiusBckg=0.4)
+        TString BrOpt3="",
+        Float_t radiusBckg=0.4,
+       Int_t   FFMaxTrackPt = -1,
+       Float_t FFMinNTracks = 0)
 {
 
   // adds task with  given configuration for all centralities
@@ -104,7 +107,10 @@ AliAnalysisTaskFragmentationFunction *AddTaskFragmentationFunctionAllCent(
                                      eventClass,
                                      BrOpt,
                                      BrOpt2,
-                                     radiusBckg);
+                                     BrOpt3,
+                                     radiusBckg
+                                     FFMaxTrackPt,
+                                     FFMinNTracks);
   }
   
   return ff;
@@ -121,11 +127,14 @@ AliAnalysisTaskFragmentationFunction *AddTaskFragmentationFunction(
        UInt_t filterMask,
         Float_t radius,
         int kBackgroundMode,
-        float PtTrackMin,
+        Int_t PtTrackMin,
         Int_t eventClass=0,
         TString BrOpt="",
         TString BrOpt2="",
-        Float_t radiusBckg=0.4)
+        TString BrOpt3="",
+        Float_t radiusBckg=0.4,
+       Int_t FFMaxTrackPt = -1,
+       Int_t FFMinNTracks = 0)
 {
    // Creates a fragmentation function task,
    // configures it and adds it to the analysis manager.
@@ -192,25 +201,29 @@ AliAnalysisTaskFragmentationFunction *AddTaskFragmentationFunction(
    cAdd += Form("%02d",(int)((radius+0.01)*10.));
    cAdd += Form("_B%d",(int)((kBackgroundMode)));
    cAdd += Form("_Filter%05d",filterMask);
-   cAdd += Form("_Cut%05d",(int)((PtTrackMin)));
+   cAdd += Form("_Cut%05d",PtTrackMin);
    cAdd += Form("%s",BrOpt.Data());
    cAdd += Form("%s",BrOpt2.Data());
+
    Printf("%s",cAdd.Data());
 
    TString cAddb = "";
    cAddb += Form("%02d",(int)((radiusBckg+0.01)*10.));
    cAddb += Form("_B%d",(int)((kBackgroundMode)));
    cAddb += Form("_Filter%05d",filterMask);
-   cAddb += Form("_Cut%05d",(int)((PtTrackMin)));
+   cAddb += Form("_Cut%05d",PtTrackMin);
    cAddb += Form("%s",BrOpt.Data());
    cAddb += Form("%s",BrOpt2.Data());
+
    Printf("%s",cAddb.Data());
 
    TString cAddmc = "";
    cAddmc += Form("%02d",(int)((radius+0.01)*10.));
    cAddmc += Form("_B%d",(int)((kBackgroundMode)));
    cAddmc += Form("_Filter%05d",filterMask);
-   cAddmc += Form("_Cut%05d",(int)((PtTrackMin)));
+   cAddmc += Form("_Cut%05d",PtTrackMin);
+   cAddmc += Form("%s",BrOpt3.Data());
+
    Printf("%s",cAddmc.Data());
 
 
@@ -259,23 +272,22 @@ AliAnalysisTaskFragmentationFunction *AddTaskFragmentationFunction(
   
    // Set default parameters 
    // Cut selection 
-   
-   if((int)PtTrackMin == 2000)      task->SetTrackCuts(2.0, -0.9, 0.9, 0., 2*TMath::Pi());
-   else if((int)PtTrackMin == 1000) task->SetTrackCuts(1.0, -0.9, 0.9, 0., 2*TMath::Pi());
-   else                             task->SetTrackCuts();  // default : pt > 0.150 GeV, |eta|<0.9, full phi acc
+
+   if(PtTrackMin == 150)       task->SetTrackCuts();  // default : pt > 0.150 GeV, |eta|<0.9, full phi acc
+   else if(PtTrackMin == 1000) task->SetTrackCuts(1.0, -0.9, 0.9, 0., 2*TMath::Pi());
+   else if(PtTrackMin == 2000) task->SetTrackCuts(2.0, -0.9, 0.9, 0., 2*TMath::Pi());
+   else                        task->SetTrackCuts(0.001*PtTrackMin,-0.9, 0.9, 0., 2*TMath::Pi());
 
 
-   task->SetJetCuts();         // default: jet pt > 5 GeV, |eta|<0.5, full phi acc
-   task->SetDiJetCuts();       // default: type of cut = 1 (cut in deltaPhi), deltaPhi = 0., cdf = 0.5, fraction of pt = 0.6
-   task->SetKindSlices();      // default: kindSlice = 1 (inv mass)
-   //if(radius <= 0.2) task->SetFFRadius(0.2); // R = 0.2   
-   //else              task->SetFFRadius();    // default: R = 0.4
+   task->SetJetCuts();          // default: jet pt > 5 GeV, |eta|<0.5, full phi acc
+   task->SetDiJetCuts();        // default: type of cut = 1 (cut in deltaPhi), deltaPhi = 0., cdf = 0.5, fraction of pt = 0.6
+   task->SetKindSlices();       // default: kindSlice = 1 (inv mass)
    task->SetFFRadius(radius); 
-   task->SetFFBckgRadius();    // default: R = 0.7
-   task->SetBckgSubMethod();   // default: subMethod = O, 1 = leading jet removed for rho extraction, 2 = 2 leading jets removed
-   task->SetIJMode(0);         // default: ijMode = 1
-   task->SetQAMode();          // default: qaMode = 3
-   task->SetFFMode();          // default: ffMode = 1
+   task->SetFFBckgRadius();     // default: R = 0.7
+   task->SetBckgSubMethod();    // default: subMethod = O, 1 = leading jet removed for rho extraction, 2 = 2 leading jets removed
+   task->SetIJMode(0);          // default: ijMode = 1
+   task->SetQAMode();           // default: qaMode = 3
+   task->SetFFMode();           // default: ffMode = 1
    task->SetDJMode(0);          // default: djMode = 1
    task->SetEffMode(0);         // default: effMode = 1
    task->SetPhiCorrMode(0);     // default: phiCorrMode = 1
@@ -295,18 +307,34 @@ AliAnalysisTaskFragmentationFunction *AddTaskFragmentationFunction(
    task->SetDiJetHistoBins();
    task->SetQADiJetHistoBins();
 
+   if(FFMaxTrackPt>0) task->SetFFMaxTrackPt(FFMaxTrackPt);
+   if(FFMinNTracks>0) task->SetFFMinNTracks(FFMinNTracks);
+
    mgr->AddTask(task);
 
    // Create ONLY the output containers for the data produced by the task.
    // Get and connect other common input/output containers via the manager as below
    //==============================================================================
 
-   AliAnalysisDataContainer *coutput_FragFunc = mgr->CreateContainer(
-      Form("fracfunc_%s_%s_%s_%s_cl%d", branchRecJets.Data(), branchGenJets.Data(), typeTracks.Data(), typeJets.Data(), eventClass),
-      TList::Class(),
-      AliAnalysisManager::kOutputContainer,
-      Form("%s:PWGJE_FragmentationFunction_%s_%s_%s_%s_cl%d", 
-         AliAnalysisManager::GetCommonFileName(), branchRecJets.Data(), branchGenJets. Data(), typeTracks.Data(), typeJets.Data(), eventClass));
+   TString strList(Form("fracfunc_%s_%s_%s_%s_cl%d", branchRecJets.Data(), branchGenJets.Data(), typeTracks.Data(), typeJets.Data(), eventClass));
+   
+   TString strDir(Form("%s:PWGJE_FragmentationFunction_%s_%s_%s_%s_cl%d", 
+                      AliAnalysisManager::GetCommonFileName(), branchRecJets.Data(), branchGenJets. Data(), 
+                      typeTracks.Data(), typeJets.Data(), eventClass));
+
+
+   if(FFMaxTrackPt>0){
+     strList += Form("_FFMaxPt%d", FFMaxTrackPt);
+     strDir  += Form("_FFMaxPt%d", FFMaxTrackPt);
+   }
+   if(FFMinNTracks>0){
+     strList += Form("_minNTr%d",FFMinNTracks);
+     strDir  += Form("_minNTr%d",FFMinNTracks);
+   }
+
+   AliAnalysisDataContainer *coutput_FragFunc = mgr->CreateContainer(strList,TList::Class(),
+                                                                    AliAnalysisManager::kOutputContainer,
+                                                                    strDir);
 
    mgr->ConnectInput  (task, 0, mgr->GetCommonInputContainer());
    mgr->ConnectOutput (task, 0, mgr->GetCommonOutputContainer());