]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Hadron Correlation: Correlate charged partcle only when it is leading, add few histog...
authorgconesab <gconesab@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 30 Jun 2010 00:17:12 +0000 (00:17 +0000)
committergconesab <gconesab@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 30 Jun 2010 00:17:12 +0000 (00:17 +0000)
AliIsolationCut: Allow to isolate with tracks and clusters or only with tracks or only with clusters
AliNeutralMesonSelection: Avoid the selection via de opening angle if requested (Yaxian)

PWG4/PartCorrBase/AliIsolationCut.cxx
PWG4/PartCorrBase/AliIsolationCut.h
PWG4/PartCorrBase/AliNeutralMesonSelection.cxx
PWG4/PartCorrBase/AliNeutralMesonSelection.h
PWG4/PartCorrDep/AliAnaParticleHadronCorrelation.cxx
PWG4/PartCorrDep/AliAnaParticleHadronCorrelation.h
PWG4/PartCorrDep/AliAnaParticleIsolation.cxx

index e436d03baf20f808345e9144830cc9efc6b818a5..503293deac3ebb717133ae3948b1ec06a90bb9c3 100755 (executable)
@@ -42,7 +42,7 @@ ClassImp(AliIsolationCut)
 //____________________________________________________________________________
   AliIsolationCut::AliIsolationCut() : 
     TObject(),
-    fConeSize(0.),fPtThreshold(0.), fPtFraction(0.), fICMethod(0)
+    fConeSize(0.),fPtThreshold(0.), fPtFraction(0.), fICMethod(0),fPartInCone(0)
  
 {
   //default ctor
@@ -98,7 +98,9 @@ TString AliIsolationCut::GetICParametersList()
   parList+=onePar ;
   sprintf(onePar,"fICMethod=%d (isolation cut case) \n",fICMethod) ;
   parList+=onePar ;
-  
+  sprintf(onePar,"fPartInCone=%d \n",fPartInCone) ;
+  parList+=onePar ;
+
   return parList; 
 }
 
@@ -107,11 +109,11 @@ void AliIsolationCut::InitParameters()
 {
   //Initialize the parameters of the analysis.
   
-  fConeSize          = 0.4 ; 
-  fPtThreshold       = 1. ; 
-  fPtFraction        = 0.1 ; 
-  
-  fICMethod = kPtThresIC; // 0 pt threshol method, 1 cone pt sum method
+  fConeSize    = 0.4 ; 
+  fPtThreshold = 1. ; 
+  fPtFraction  = 0.1 ; 
+  fPartInCone  = kNeutralAndCharged;
+  fICMethod    = kPtThresIC; // 0 pt threshol method, 1 cone pt sum method
   
 }
 
@@ -140,7 +142,7 @@ void  AliIsolationCut::MakeIsolationCut(TObjArray * const plCTS,  TObjArray * co
   Int_t nclusterrefs = 0;
   
   //Check charged particles in cone.
-  if(plCTS){
+  if(plCTS && (fPartInCone==kOnlyCharged || fPartInCone==kNeutralAndCharged)){
     TVector3 p3;
     for(Int_t ipr = 0;ipr < plCTS->GetEntries() ; ipr ++ ){
       AliAODTrack* track = (AliAODTrack *)(plCTS->At(ipr)) ; 
@@ -174,7 +176,7 @@ void  AliIsolationCut::MakeIsolationCut(TObjArray * const plCTS,  TObjArray * co
   }//Tracks
   
   //Check neutral particles in cone.  
-  if(plNe){
+  if(plNe && (fPartInCone==kOnlyNeutral || fPartInCone==kNeutralAndCharged)){
          
        //Get vertex for photon momentum calculation
        Double_t vertex[]  = {0,0,0} ; //vertex ;
@@ -269,7 +271,7 @@ void AliIsolationCut::Print(const Option_t * opt) const
   printf("Cone Size          =     %1.2f\n", fConeSize) ; 
   printf("pT threshold       =     %2.1f\n", fPtThreshold) ;
   printf("pT fraction        =     %3.1f\n", fPtFraction) ;
-
+  printf("particle type in cone =  %d\n",fPartInCone);
   printf("    \n") ;
   
 } 
index 912521146a5ed841c717a4b535f7ab16f4d22225..81e5f0c029334f7ddb7885b122fae63d7a4b0d3b 100755 (executable)
@@ -34,24 +34,28 @@ class AliIsolationCut : public TObject {
  public: 
  
   enum type {kPtThresIC, kSumPtIC, kPtFracIC, kSumPtFracIC};
-  
-  Float_t    GetConeSize()        const {return fConeSize ; }
-  Float_t    GetPtThreshold()     const {return fPtThreshold ; }
-  Float_t    GetPtFraction()      const {return fPtFraction ; }
-  Int_t      GetICMethod()        const {return fICMethod ; }
+  enum partInCone {kNeutralAndCharged=0, kOnlyNeutral=1, kOnlyCharged=2};
+       
+  Float_t    GetConeSize()           const {return fConeSize   ;}
+  Float_t    GetPtThreshold()        const {return fPtThreshold;}
+  Float_t    GetPtFraction()         const {return fPtFraction ;}
+  Int_t      GetICMethod()           const {return fICMethod   ;}
+  Int_t      GetParticleTypeInCone() const {return fPartInCone ;}
+       
   TString    GetICParametersList() ; 
-  
+
   void MakeIsolationCut(TObjArray * const plCTS, TObjArray * const plNe, AliCaloTrackReader * const reader, 
                        const Bool_t fillAOD, AliAODPWG4ParticleCorrelation  * pCandidate, const TString aodObjArrayName,
                        Int_t &n, Int_t & nfrac, Float_t &ptsum, Bool_t & isolated) const ;  
   
   void Print(const Option_t * opt)const;
   
-  void SetConeSize(Float_t r)       {fConeSize = r ; }
-  void SetPtThreshold(Float_t pt)   {fPtThreshold = pt; }
-  void SetPtFraction(Float_t pt)    {fPtFraction = pt; }
-  void SetICMethod(Int_t i )        {fICMethod = i ; }
-  
+  void SetConeSize(Float_t r)        {fConeSize = r ; }
+  void SetPtThreshold(Float_t pt)    {fPtThreshold = pt; }
+  void SetPtFraction(Float_t pt)     {fPtFraction = pt; }
+  void SetICMethod(Int_t i )         {fICMethod = i ; }
+  void SetParticleTypeInCone(Int_t i){fPartInCone = i;}
+       
   void InitParameters();
   
   
@@ -65,8 +69,12 @@ class AliIsolationCut : public TObject {
                               // kSumPtIC: Cone pt sum method
                               // kPtFracIC:   Pt threshold, fraction of candidate pt, method
                               // kSumPtFracIC:   Cone pt sum , fraction of cone sum, method
-  
-  ClassDef(AliIsolationCut,1)
+  Int_t        fPartInCone;   // Type of particles inside cone:
+                                                         // kNeutralAndCharged, kOnlyNeutral, kOnlyCharged
+                                
+       
+       
+  ClassDef(AliIsolationCut,2)
 } ;
 
 
index 039576ba715a1e1dbbf5345df61ea04608319b14..ab866b5d8457a4ecd5abfd91811a96e9ec7ff2d4 100755 (executable)
@@ -35,7 +35,7 @@ ClassImp(AliNeutralMesonSelection)
   AliNeutralMesonSelection::AliNeutralMesonSelection() : 
     TObject(), fM(0),
     fInvMassMaxCut(0.), fInvMassMinCut(0.),
-    fAngleMaxParam(),  fKeepNeutralMesonHistos(0), 
+    fAngleMaxParam(),  fUseAngleCut(0), fKeepNeutralMesonHistos(0), 
     fhAnglePairNoCut(0), fhAnglePairOpeningAngleCut(0), 
     fhAnglePairAllCut(0), 
     fhInvMassPairNoCut(0), fhInvMassPairOpeningAngleCut(0), 
@@ -194,7 +194,7 @@ void AliNeutralMesonSelection::InitParameters()
   
   //Initialize the parameters of the analysis.
   fKeepNeutralMesonHistos = kFALSE ;
-  
+  fUseAngleCut = kFALSE;
   fAngleMaxParam.Set(4) ;
   fAngleMaxParam.AddAt(0.4,0);//={0.4,-0.25,0.025,-2e-4};
   fAngleMaxParam.AddAt(-0.25,1) ;
@@ -228,7 +228,9 @@ void AliNeutralMesonSelection::InitParameters()
 Bool_t AliNeutralMesonSelection::IsAngleInWindow(const Float_t angle,const Float_t e) const {
   //Check if the opening angle of the candidate pairs is inside 
   //our selection windowd
-
+  
+  if (!fUseAngleCut) return kTRUE; //Accept any angle
+       
   Bool_t result = kFALSE;
   Double_t max =  fAngleMaxParam.At(0)*TMath::Exp(fAngleMaxParam.At(1)*e)
     +fAngleMaxParam.At(2)+fAngleMaxParam.At(3)*e;
index 598f1b590814142405045cee57dda591d28ab4f3..0c85577d2c62f899bbfbdaca5a86c75647bbacbd 100755 (executable)
@@ -35,25 +35,28 @@ class AliNeutralMesonSelection : public TObject {
   TList * GetCreateOutputObjects();
   
   Double_t GetAngleMaxParam(Int_t i) const {return fAngleMaxParam.At(i) ; }
-  void SetAngleMaxParam(Int_t i, Double_t par){fAngleMaxParam.AddAt(par,i) ; }
+  void     SetAngleMaxParam(Int_t i, Double_t par){fAngleMaxParam.AddAt(par,i) ; }
   
   Double_t GetInvMassMaxCut() const {return fInvMassMaxCut ; }
   Double_t GetInvMassMinCut() const {return fInvMassMinCut ; }
-  void SetInvMassCutRange(Double_t invmassmin, Double_t invmassmax)
+  void     SetInvMassCutRange(Double_t invmassmin, Double_t invmassmax)
   {fInvMassMaxCut =invmassmax;  fInvMassMinCut =invmassmin;}   
   
   Double_t GetMass() const {return fM ; }
   void SetMass(Double_t m) { fM =m ; }
   
   Bool_t AreNeutralMesonSelectionHistosKept() const { return fKeepNeutralMesonHistos ; }
-  void KeepNeutralMesonSelectionHistos(Bool_t keep) { fKeepNeutralMesonHistos = keep ; }
+  void  KeepNeutralMesonSelectionHistos(Bool_t keep) { fKeepNeutralMesonHistos = keep ; }
   
   void InitParameters();       
   Bool_t IsAngleInWindow(const Float_t angle, const Float_t e) const ;
   void Print(const Option_t * opt) const;
   
   Bool_t  SelectPair(TLorentzVector particlei,  TLorentzVector particlej)  ;
-  
+       
+  void SwitchOnAngleSelection()    {fUseAngleCut = kTRUE ; }
+  void SwitchOffAngleSelection()   {fUseAngleCut = kFALSE ; }
+       
   //Histogrammes setters and getters
   
   virtual void SetHistoERangeAndNBins(Float_t min, Float_t max, Int_t n) {
@@ -98,12 +101,12 @@ class AliNeutralMesonSelection : public TObject {
   
   
  private:
-  Double_t fM ; //mass of the neutral meson
-  Double_t   fInvMassMaxCut ;  // Invariant Mass cut maximum
-  Double_t   fInvMassMinCut ;  // Invariant Masscut minimun
-  TArrayD    fAngleMaxParam ; //Max opening angle selection parameters
-  
-  Bool_t  fKeepNeutralMesonHistos ; // Keep neutral meson selection histograms
+  Double_t fM ;              // Mass of the neutral meson
+  Double_t fInvMassMaxCut ;  // Invariant Mass cut maximum
+  Double_t fInvMassMinCut ;  // Invariant Masscut minimun
+  TArrayD  fAngleMaxParam ;  // Max opening angle selection parameters
+  Bool_t   fUseAngleCut ;    // Select pairs depending on their opening angle
+  Bool_t   fKeepNeutralMesonHistos ; // Keep neutral meson selection histograms
   
   //Histograms
   TH2F * fhAnglePairNoCut  ;  //Aperture angle of decay photons, no cuts
@@ -127,7 +130,7 @@ class AliNeutralMesonSelection : public TObject {
   Float_t fHistoIMMax ;   //Maximum value of Invariant Mass histogram range
   Float_t fHistoIMMin ;   //Minimum value of Invariant Mass histogram range
   
-  ClassDef(AliNeutralMesonSelection,2)
+  ClassDef(AliNeutralMesonSelection,3)
     
     } ;
 
index a27e443aedf992b18f9cc0db92212f1fe2801884..09d70fd13df8376b9f52cca3ea3e54dbc79a543a 100755 (executable)
@@ -53,6 +53,8 @@ ClassImp(AliAnaParticleHadronCorrelation)
     AliAnaPartCorrBaseClass(),
     fDeltaPhiMaxCut(0.), fDeltaPhiMinCut(0.), fSelectIsolated(0),
     fMakeSeveralUE(0),  fUeDeltaPhiMaxCut(0.), fUeDeltaPhiMinCut(0.), 
+    fhPtLeadingCharged(0),fhPhiLeadingCharged(0),fhEtaLeadingCharged(0), 
+    fhDeltaPhiDeltaEtaCharged(0),fhDeltaPhiDeltaEtaNeutral(0),
     fhPhiCharged(0), fhPhiNeutral(0), fhEtaCharged(0), fhEtaNeutral(0), 
     fhDeltaPhiCharged(0), fhDeltaPhiNeutral(0), 
     fhDeltaEtaCharged(0), fhDeltaEtaNeutral(0),
@@ -187,6 +189,22 @@ TList *  AliAnaParticleHadronCorrelation::GetCreateOutputObjects()
   
   //Correlation with charged hadrons
   if(GetReader()->IsCTSSwitchedOn()) {
+         
+       fhPtLeadingCharged  = new TH1F ("hPtLeadingCharged","p_T distribution of leading particles", nptbins,ptmin,ptmax); 
+       fhPtLeadingCharged->SetXTitle("p_{T}^{trig} (GeV/c)");
+         
+       fhPhiLeadingCharged  = new TH2F ("hPhiLeadingCharged","#phi distribution of leading Particles",nptbins,ptmin,ptmax, nphibins,phimin,phimax); 
+       fhPhiLeadingCharged->SetYTitle("#phi (rad)");
+         
+       fhEtaLeadingCharged  = new TH2F ("hEtaLeadingCharged","#eta distribution of leading",nptbins,ptmin,ptmax, netabins,etamin,etamax); 
+       fhEtaLeadingCharged->SetYTitle("#eta ");
+         
+       fhDeltaPhiDeltaEtaCharged  = new TH2F
+         ("DeltaPhiDeltaEtaCharged","#phi_{trigger} - #phi_{h^{#pm}} vs #eta_{trigger} - #eta_{h^{#pm}}",
+          140,-2.,5.,200,-2,2); 
+       fhDeltaPhiDeltaEtaCharged->SetXTitle("#Delta #phi");
+       fhDeltaPhiDeltaEtaCharged->SetYTitle("#Delta #eta");    
+         
     fhPhiCharged  = new TH2F
       ("PhiCharged","#phi_{h^{#pm}}  vs p_{T #pm}",
        nptbins,ptmin,ptmax,nphibins,phimin,phimax); 
@@ -246,7 +264,11 @@ TList *  AliAnaParticleHadronCorrelation::GetCreateOutputObjects()
               nptbins,ptmin,ptmax,200,0.,10.); 
     fhPtHbpUeCharged->SetYTitle("ln(1/x_{E})");
     fhPtHbpUeCharged->SetXTitle("p_{T trigger}");
-
+         
+       outputContainer->Add(fhPtLeadingCharged);
+       outputContainer->Add(fhPhiLeadingCharged);
+       outputContainer->Add(fhEtaLeadingCharged);
+       outputContainer->Add(fhDeltaPhiDeltaEtaCharged);
     outputContainer->Add(fhPhiCharged) ;
     outputContainer->Add(fhEtaCharged) ;
     outputContainer->Add(fhDeltaPhiCharged) ; 
@@ -306,6 +328,12 @@ TList *  AliAnaParticleHadronCorrelation::GetCreateOutputObjects()
   //Correlation with neutral hadrons
   if(GetReader()->IsEMCALSwitchedOn() || GetReader()->IsPHOSSwitchedOn()){
     
+       fhDeltaPhiDeltaEtaNeutral  = new TH2F
+       ("DeltaPhiDeltaEtaNeutral","#phi_{trigger} - #phi_{h^{0}} vs #eta_{trigger} - #eta_{h^{0}}",
+       140,-2.,5.,200,-2,2); 
+       fhDeltaPhiDeltaEtaNeutral->SetXTitle("#Delta #phi");
+       fhDeltaPhiDeltaEtaNeutral->SetYTitle("#Delta #eta");   
+         
     fhPhiNeutral  = new TH2F
       ("PhiNeutral","#phi_{#pi^{0}}  vs p_{T #pi^{0}}",
        nptbins,ptmin,ptmax,nphibins,phimin,phimax); 
@@ -367,7 +395,7 @@ TList *  AliAnaParticleHadronCorrelation::GetCreateOutputObjects()
        fhPtHbpUeNeutral->SetXTitle("p_{T trigger}");
          
          
-   
+       outputContainer->Add(fhDeltaPhiDeltaEtaNeutral); 
     outputContainer->Add(fhPhiNeutral) ;  
     outputContainer->Add(fhEtaNeutral) ;   
     outputContainer->Add(fhDeltaPhiNeutral) ; 
@@ -504,13 +532,25 @@ void  AliAnaParticleHadronCorrelation::MakeAnalysisFillAOD()
   }
   
   //Loop on stored AOD particles, trigger
+  Double_t ptTrig    = 0.;
+  Int_t    trigIndex = -1;
   Int_t naod = GetInputAODBranch()->GetEntriesFast();
   for(Int_t iaod = 0; iaod < naod ; iaod++){
     AliAODPWG4ParticleCorrelation* particle =  (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(iaod));
-
-       //Make correlation with charged hadrons
-    if(GetReader()->IsCTSSwitchedOn() )
-      MakeChargedCorrelation(particle, GetAODCTS(),kFALSE);
+       //find the leading particles with highest momentum
+       if (particle->Pt()>ptTrig) {
+               ptTrig = particle->Pt() ;
+               trigIndex = iaod ;
+       }
+  }//Aod branch loop
+       
+  //Do correlation with leading particle
+  if(trigIndex!=-1){
+         
+   AliAODPWG4ParticleCorrelation* particle =  (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(trigIndex));
+  //Make correlation with charged hadrons
+  if(GetReader()->IsCTSSwitchedOn() )
+       MakeChargedCorrelation(particle, GetAODCTS(),kFALSE);
     
     //Make correlation with neutral pions
     //Trigger particle in PHOS, correlation with EMCAL
@@ -528,8 +568,8 @@ void  AliAnaParticleHadronCorrelation::MakeAnalysisFillAOD()
     }
   
        
-  }//Aod branch loop
-  
+  }//Correlate leading
+
   if(GetDebug() > 1) printf("AliAnaParticleHadronCorrelation::MakeAnalysisFillAOD() - End fill AODs \n");
   
 }
@@ -549,24 +589,42 @@ void  AliAnaParticleHadronCorrelation::MakeAnalysisFillHistograms()
     printf("AliAnaParticleHadronCorrelation::MakeAnalysisFillHistograms() - In particle branch aod entries %d\n", GetInputAODBranch()->GetEntriesFast());
   }
   
-  //Loop on stored AOD particles
+  //Loop on stored AOD particles, find leading
   Int_t naod = GetInputAODBranch()->GetEntriesFast();
+  Double_t ptTrig = 0.;
+  Int_t trigIndex = -1 ;
   for(Int_t iaod = 0; iaod < naod ; iaod++){     
     AliAODPWG4ParticleCorrelation* particle =  (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(iaod));
     
     //check if the particle is isolated or if we want to take the isolation into account
     if(OnlyIsolated() && !particle->IsIsolated()) continue;
-    
+       //find the leading particles with highest momentum
+       if (particle->Pt()>ptTrig) {
+               ptTrig = particle->Pt() ;
+               trigIndex = iaod ;
+       }
+  }//finish searching for trigger particle
+       
+  if(trigIndex!=-1){ //using trigger partilce to do correlations
+       AliAODPWG4ParticleCorrelation* particle =  (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(trigIndex));
+         
+       //Fill leading particle histogram   
+       fhPtLeadingCharged->Fill(particle->Pt());
+       Float_t phi = particle->Phi();
+       if(phi<0)phi+=TMath::TwoPi();
+       fhPhiLeadingCharged->Fill(particle->Pt(), phi);
+       fhEtaLeadingCharged->Fill(particle->Pt(), particle->Eta());
+         
     //Make correlation with charged hadrons
     TObjArray * reftracks   = particle->GetObjArray(GetAODObjArrayName()+"Tracks");
     if(reftracks){
-      if(GetDebug() > 1) printf("AliAnaParticleHadronCorrelation::MakeAnalysisFillHistograms() - Particle %d, In Track Refs  entries %d\n", iaod, reftracks->GetEntriesFast());
+      if(GetDebug() > 1) printf("AliAnaParticleHadronCorrelation::MakeAnalysisFillHistograms() - Particle %d, In Track Refs  entries %d\n", trigIndex, reftracks->GetEntriesFast());
       if(reftracks->GetEntriesFast() > 0) MakeChargedCorrelation(particle, reftracks,kTRUE);
     }
     
     //Make correlation with neutral pions
     if(GetOutputAODBranch() && GetOutputAODBranch()->GetEntriesFast() > 0){
-      if(GetDebug() > 1) printf("AliAnaParticleHadronCorrelation::MakeAnalysisFillHistograms() - Particle %d, In Cluster Refs entries %d\n",iaod, GetOutputAODBranch()->GetEntriesFast());      
+      if(GetDebug() > 1) printf("AliAnaParticleHadronCorrelation::MakeAnalysisFillHistograms() - Particle %d, In Cluster Refs entries %d\n",trigIndex, GetOutputAODBranch()->GetEntriesFast());      
       MakeNeutralCorrelationFillHistograms(particle);
     }
     
@@ -596,22 +654,24 @@ void  AliAnaParticleHadronCorrelation::MakeChargedCorrelation(AliAODPWG4Particle
    Double_t cosi = -100.; 
    Double_t phi  = -100. ;
    Double_t eta  = -100. ;
-   Double_t p[3];
-  
+   TVector3 p3;  
+       
    TObjArray * reftracks    =0x0;
    Int_t nrefs = 0;
        
    //Track loop, select tracks with good pt, phi and fill AODs or histograms
-   for(Int_t ipr = 0;ipr < pl->GetEntries() ; ipr ++ ){
+   for(Int_t ipr = 0;ipr < pl->GetEntriesFast() ; ipr ++ ){
      AliAODTrack * track = (AliAODTrack *) (pl->At(ipr)) ;
-     track->GetPxPyPz(p) ;
-     TLorentzVector mom(p[0],p[1],p[2],0);
-     pt   = mom.Pt();
-     px   = mom.Px();
-     py   = mom.Py();
-     eta  = mom.Eta();
-     phi  = mom.Phi() ;
-     if(phi < 0) phi+=TMath::TwoPi();
+          if(track->GetID()==aodParticle->GetTrackLabel(0)) continue ;
+          if(track->Pt()>ptTrig) continue ;
+          Double_t mom[3] = {track->Px(),track->Py(),track->Pz()};
+          p3.SetXYZ(mom[0],mom[1],mom[2]);
+          pt   = p3.Pt();
+          px   = p3.Px();
+          py   = p3.Py();
+          eta  = p3.Eta();
+          phi  = p3.Phi() ;
+          if(phi < 0) phi+=TMath::TwoPi();
      rat   = pt/ptTrig ;
      xE    = -(px*pxTrig+py*pyTrig)/(ptTrig*ptTrig);
      if(xE <0.)xE =-xE;
@@ -629,7 +689,7 @@ void  AliAnaParticleHadronCorrelation::MakeChargedCorrelation(AliAODPWG4Particle
     
      //Selection within angular range
      Float_t deltaphi = phiTrig-phi;
-     if(deltaphi<-TMath::PiOver2()) deltaphi+=TMath::TwoPi();
+     if(deltaphi< -TMath::PiOver2()) deltaphi+=TMath::TwoPi();
      if(deltaphi>3*TMath::PiOver2()) deltaphi-=TMath::TwoPi();
     
      if(GetDebug() > 2)
@@ -642,7 +702,8 @@ void  AliAnaParticleHadronCorrelation::MakeChargedCorrelation(AliAODPWG4Particle
        fhPhiCharged->Fill(pt,phi);
        fhDeltaEtaCharged->Fill(ptTrig,aodParticle->Eta()-eta);
        fhDeltaPhiCharged->Fill(ptTrig, deltaphi);
-
+       fhDeltaPhiDeltaEtaCharged->Fill(deltaphi,aodParticle->Eta()-eta);
+                
        if(GetDebug() > 2 ) printf("AliAnaParticleHadronCorrelation::MakeChargedCorrelation() - Selected charge for momentum imbalance: pt %2.2f, phi %2.2f, eta %2.2f \n",pt,phi,eta);
        
        //delta phi cut for correlation
@@ -917,7 +978,8 @@ void  AliAnaParticleHadronCorrelation::MakeNeutralCorrelationFillHistograms(AliA
     fhPhiNeutral->Fill(pt,phi);
     fhDeltaEtaNeutral->Fill(ptTrig,etaTrig-eta);
     fhDeltaPhiNeutral->Fill(ptTrig,deltaphi);
-
+       fhDeltaPhiDeltaEtaNeutral->Fill(deltaphi,etaTrig-eta);
+         
        //delta phi cut for correlation
        if( (deltaphi > fDeltaPhiMinCut) && ( deltaphi < fDeltaPhiMaxCut) ) {
         fhDeltaPhiNeutralPt->Fill(pt,deltaphi);
index 999d800006edf4d19cbc1ef3bede1001cd42e507..179ceb6c21aac36c8562e40ceac7da474eeb63bd 100755 (executable)
@@ -73,6 +73,13 @@ class AliAnaParticleHadronCorrelation : public AliAnaPartCorrBaseClass {
 
   
   //Histograms
+  //leading particles 
+  TH1F * fhPtLeadingCharged;         //! pT distribution of leading particles
+  TH2F * fhPhiLeadingCharged;        //! phi distribution vs pT of leading particles
+  TH2F * fhEtaLeadingCharged;        //! eta distribution vs pT of leading particles
+  TH2F * fhDeltaPhiDeltaEtaCharged ; //! differences of eta and phi between trigger and charged hadrons
+  TH2F * fhDeltaPhiDeltaEtaNeutral ; //! differences of eta and phi between trigger and neutral hadrons (pi0)
+       
   TH2F * fhPhiCharged  ; //! Phi distribution of charged particles
   TH2F * fhPhiNeutral   ;  //! Phi distribution of neutral particles
   TH2F * fhEtaCharged  ; //! Eta distribution of charged particles
@@ -97,8 +104,7 @@ class AliAnaParticleHadronCorrelation : public AliAnaPartCorrBaseClass {
   TH2F * fhPtHbpNeutral  ; //! Trigger particle -neutral particle momentim HBP histogram
   TH2F * fhPtHbpUeNeutral  ; //! Trigger particle -underlying neutral hadron momentim HBP histogram  
 
-
-//if several UE calculation is on, most useful for jet-jet events contribution
+  //if several UE calculation is on, most useful for jet-jet events contribution
   TH2F * fhDeltaPhiUeLeftCharged  ;  //! Difference of charged particle from underlying events phi and trigger particle  phi as function of charged particle pT
   TH2F * fhDeltaPhiUeRightCharged  ;  //! Difference of charged particle from underlying events phi and trigger particle  phi 
   TH2F * fhDeltaPhiUeLeftNeutral  ;  //! Difference of charged particle from underlying events phi and trigger particle  phi as function of neutral particle pT
@@ -113,7 +119,7 @@ class AliAnaParticleHadronCorrelation : public AliAnaPartCorrBaseClass {
   TH2F * fhPtHbpUeRightNeutral  ; //! Trigger particle -underlying neutral hadron momentim HBP histogram  
        
        
-  ClassDef(AliAnaParticleHadronCorrelation,2)
+  ClassDef(AliAnaParticleHadronCorrelation,3)
 } ;
  
 
index d20ad4b84332cddfa3c2cd4149a1e348925a559b..810d910b554737b149119f18a5ad1ce65e6c9ef7 100755 (executable)
@@ -760,8 +760,11 @@ void  AliAnaParticleIsolation::MakeAnalysisFillHistograms()
     Float_t etacluster = aod->Eta();
     //Recover reference arrays with clusters and tracks
        TObjArray * refclusters = aod->GetObjArray(GetAODObjArrayName()+"Clusters");
-    TObjArray * reftracks = aod->GetObjArray(GetAODObjArrayName()+"Tracks");
+    TObjArray * reftracks   = aod->GetObjArray(GetAODObjArrayName()+"Tracks");
   
+       //If too small or too large pt, skip
+       if(aod->Pt() < GetMinPt() || aod->Pt() > GetMaxPt() ) continue ; 
+         
     if(fMakeSeveralIC) {
       //Analysis of multiple IC at same time
       MakeSeveralICAnalysis(aod);