]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
AliAnaParticleHadronCorrelation: Remove not necessary requests for isolated AODs...
authorgconesab <gconesab@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sun, 6 Nov 2011 23:08:15 +0000 (23:08 +0000)
committergconesab <gconesab@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sun, 6 Nov 2011 23:08:15 +0000 (23:08 +0000)
AliAnaChargedParticles: Remove TH3D histograms, transform into TH2F, remove Vertex TH3 histogram. Do not get the charge of the track but set it when filling the AODs in the AOD and get if from there when filling the histograms. And cosmetics

AliAnaPhoton: Produce track-cluster matching correlation histograms when the track matching rejection is requested and not when also the shower shape PID is on

Reader: Delete the AliESDtrackCuts pointer when it is going to be set externally

PWG4/PartCorrBase/AliCaloTrackReader.h
PWG4/PartCorrDep/AliAnaChargedParticles.cxx
PWG4/PartCorrDep/AliAnaChargedParticles.h
PWG4/PartCorrDep/AliAnaParticleHadronCorrelation.cxx
PWG4/PartCorrDep/AliAnaParticleHadronCorrelation.h
PWG4/PartCorrDep/AliAnaPhoton.cxx

index f3345885a05e9b944185d713c6261703becb5616..cff75da760f97be6c8f2f4cd08de967d259193bc 100755 (executable)
@@ -30,7 +30,7 @@ class AliAODEvent;
 class AliMCEvent;
 class AliMixedEvent;
 class AliAODMCHeader;
-class AliESDtrackCuts;
+#include "AliESDtrackCuts.h"
 class AliCentrality;
 class AliTriggerAnalysis;
 class AliEventplane;
@@ -223,7 +223,8 @@ public:
   void             SetTrackFilterMask(ULong_t bit)         { fTrackFilterMask = bit    ; }             
   
   AliESDtrackCuts* GetTrackCuts()                    const { return fESDtrackCuts      ; }
-  void             SetTrackCuts(AliESDtrackCuts * cuts)    { fESDtrackCuts = cuts      ; }               
+  void             SetTrackCuts(AliESDtrackCuts * cuts)    { if(fESDtrackCuts) delete fESDtrackCuts ;
+                                                             fESDtrackCuts = cuts      ; }               
   Int_t            GetTrackMultiplicity()            const { return fTrackMult         ; }
   Float_t          GetTrackMultiplicityEtaCut()      const { return fTrackMultEtaCut   ; }
   void             SetTrackMultiplicityEtaCut(Float_t eta) { fTrackMultEtaCut = eta    ; }             
@@ -247,13 +248,12 @@ public:
   virtual void      GetVertex(Double_t vertex[3],    const Int_t evtIndex) const ;
   virtual void      FillVertexArray();
   virtual Bool_t    CheckForPrimaryVertex();
- // virtual void       GetSecondInputAODVertex(Double_t *) const {;}
   virtual Float_t   GetZvertexCut()                  const { return fZvtxCut                     ; } //cut on vertex position  
   virtual void      SetZvertexCut(Float_t zcut=10.)        { fZvtxCut=zcut                       ; } //cut on vertex position
 
-  //------------------------
+  //--------------------------
   // Centrality / Event Plane
-  //------------------------
+  //--------------------------
   virtual AliCentrality* GetCentrality()             const { return fInputEvent->GetCentrality() ; } //Look in AOD reader, different there
   virtual void     SetCentralityClass(TString name)        { fCentralityClass   = name           ; }
   virtual void     SetCentralityOpt(Int_t opt)             { fCentralityOpt     = opt            ; }
index a53d9fc4bd10e08bb8a91a0792479a3efbeb16be..e40e563b4505800a905eb837085c37ed5ce9a1d2 100755 (executable)
@@ -27,7 +27,7 @@
 // --- ROOT system ---
 #include "TParticle.h"
 #include "TH2F.h"
-#include "TH3D.h"
+
 //---- AliRoot system ----
 #include "AliAnaChargedParticles.h"
 #include "AliCaloTrackReader.h"
 
 ClassImp(AliAnaChargedParticles)
   
-//____________________________________________________________________________
+//__________________________________________________
   AliAnaChargedParticles::AliAnaChargedParticles() : 
-    AliAnaPartCorrBaseClass(),fPdg(0), fhNtracks(0),fhVertex(0), fhPt(0),fhPhi(0),fhEta(0), 
-    fhPtEtaPhiPos(0), fhPtEtaPhiNeg(0),
-    fhPtPion(0),fhPhiPion(0),fhEtaPion(0),
-    fhPtProton(0),fhPhiProton(0),fhEtaProton(0),
-    fhPtElectron(0),fhPhiElectron(0),fhEtaElectron(0),
-    fhPtKaon(0),fhPhiKaon(0),fhEtaKaon(0),
-    fhPtUnknown(0),fhPhiUnknown(0),fhEtaUnknown(0)
-      
+    AliAnaPartCorrBaseClass(),
+    fPdg(0), 
+    fhNtracks(0),   fhPt(0),
+    fhPhiNeg(0),    fhEtaNeg(0), 
+    fhPhiPos(0),    fhEtaPos(0), 
+    fhEtaPhiPos(0), fhEtaPhiNeg(0),
+    //MC
+    fhPtPion(0),    fhPhiPion(0),     fhEtaPion(0),
+    fhPtProton(0),  fhPhiProton(0),   fhEtaProton(0),
+    fhPtElectron(0),fhPhiElectron(0), fhEtaElectron(0),
+    fhPtKaon(0),    fhPhiKaon(0),     fhEtaKaon(0),
+    fhPtUnknown(0), fhPhiUnknown(0),  fhEtaUnknown(0)
 {
   //Default Ctor
 
   //Initialize parameters
   InitParameters();
-}
 
-/*
-//____________________________________________________________________________
-AliAnaChargedParticles::AliAnaChargedParticles(const AliAnaChargedParticles & ch) :   
-  AliAnaPartCorrBaseClass(ch), fPdg(ch.fPdg),  fhPt(ch.fhPt),  fhPhi(ch.fhPhi),fhEta(ch.fhEta), 
-  fhPtPion(ch. fhPtPion),fhPhiPion(ch.fhPhiPion),fhEtaPion(ch.fhEtaPion),
-  fhPtProton(ch.fhPtProton),fhPhiProton(ch.fhPhiProton),fhEtaProton(ch.fhEtaProton),
-  fhPtElectron(ch. fhPtElectron),fhPhiElectron(ch.fhPhiElectron),fhEtaElectron(ch.fhEtaElectron),
-  fhPtKaon(ch. fhPtKaon),fhPhiKaon(ch.fhPhiKaon),fhEtaKaon(ch.fhEtaKaon),
-  fhPtUnknown(ch.fhPtUnknown),fhPhiUnknown(ch.fhPhiUnknown),fhEtaUnknown(ch.fhEtaUnknown)
-  
-{
-  // cpy ctor
-  
 }
 
-//_________________________________________________________________________
-AliAnaChargedParticles & AliAnaChargedParticles::operator = (const AliAnaChargedParticles & ch)
-{
-  // assignment operator
-  
-  if(this == &ch)return *this;
-  ((AliAnaPartCorrBaseClass *)this)->operator=(ch);
-  fPdg = ch.fPdg;
-  fhPt = ch.fhPt;
-  fhPhi = ch.fhPhi;
-  fhEta = ch.fhEta;
-  
-  fhPtPion = ch. fhPtPion; fhPhiPion = ch.fhPhiPion; fhEtaPion = ch.fhEtaPion; 
-  fhPtProton = ch.fhPtProton; fhPhiProton = ch.fhPhiProton; fhEtaProton = ch.fhEtaProton; 
-  fhPtElectron = ch. fhPtElectron; fhPhiElectron = ch.fhPhiElectron; fhEtaElectron = ch.fhEtaElectron; 
-  fhPtKaon = ch. fhPtKaon; fhPhiKaon = ch.fhPhiKaon; fhEtaKaon = ch.fhEtaKaon; 
-  fhPtUnknown = ch.fhPtUnknown; fhPhiUnknown = ch.fhPhiUnknown; fhEtaUnknown = ch.fhEtaUnknown;
-
-  return *this;
-  
-}
-*/
-
-//________________________________________________________________________
+//_______________________________________________________
 TList *  AliAnaChargedParticles::GetCreateOutputObjects()
 {  
   // Create histograms to be saved in output file and 
@@ -105,49 +71,53 @@ TList *  AliAnaChargedParticles::GetCreateOutputObjects()
   TList * outputContainer = new TList() ; 
   outputContainer->SetName("ExampleHistos") ; 
   
-  Int_t nptbins  = GetHistoPtBins();
-  Int_t nphibins = GetHistoPhiBins();
-  Int_t netabins = GetHistoEtaBins();
-  Float_t ptmax  = GetHistoPtMax();
-  Float_t phimax = GetHistoPhiMax();
-  Float_t etamax = GetHistoEtaMax();
-  Float_t ptmin  = GetHistoPtMin();
-  Float_t phimin = GetHistoPhiMin();
-  Float_t etamin = GetHistoEtaMin();   
+  Int_t nptbins  = GetHistoPtBins(); Int_t nphibins = GetHistoPhiBins(); Int_t netabins = GetHistoEtaBins();
+  Float_t ptmax  = GetHistoPtMax();  Float_t phimax = GetHistoPhiMax();  Float_t etamax = GetHistoEtaMax();
+  Float_t ptmin  = GetHistoPtMin();  Float_t phimin = GetHistoPhiMin();  Float_t etamin = GetHistoEtaMin();    
 
   fhNtracks  = new TH1F ("hNtracks","# of tracks", 1000,0,1000); 
   fhNtracks->SetXTitle("# of tracks");
   outputContainer->Add(fhNtracks);
-  
-  fhVertex  = new TH3D ("Vertex","vertex position", 100,-50.,50., 100,-50.,50., 100,-50.,50.); 
-  fhVertex->SetXTitle("X");
-  fhVertex->SetYTitle("Y");
-  fhVertex->SetZTitle("Z");
-  outputContainer->Add(fhVertex);
-  
-  fhPt  = new TH1F ("hPtCharged","p_T distribution", nptbins,ptmin,ptmax); 
+    
+  fhPt  = new TH1F ("hPt","p_T distribution", nptbins,ptmin,ptmax); 
   fhPt->SetXTitle("p_{T} (GeV/c)");
   outputContainer->Add(fhPt);
   
-  fhPhi  = new TH2F ("hPhiCharged","#phi distribution",nptbins,ptmin,ptmax, nphibins,phimin,phimax); 
-  fhPhi->SetXTitle("#phi (rad)");
-  outputContainer->Add(fhPhi);
+  fhPhiNeg  = new TH2F ("hPhiNegative","#phi of negative charges distribution",
+                        nptbins,ptmin,ptmax, nphibins,phimin,phimax); 
+  fhPhiNeg->SetYTitle("#phi (rad)");
+  fhPhiNeg->SetXTitle("p_{T} (GeV/c)");
+  outputContainer->Add(fhPhiNeg);
+  
+  fhEtaNeg  = new TH2F ("hEtaNegative","#eta of negative charges distribution",
+                        nptbins,ptmin,ptmax, netabins,etamin,etamax); 
+  fhEtaNeg->SetYTitle("#eta ");
+  fhEtaNeg->SetXTitle("p_{T} (GeV/c)");
+  outputContainer->Add(fhEtaNeg);
   
-  fhEta  = new TH2F ("hEtaCharged","#eta distribution",nptbins,ptmin,ptmax, netabins,etamin,etamax); 
-  fhEta->SetXTitle("#eta ");
-  outputContainer->Add(fhEta);
+  fhPhiPos  = new TH2F ("hPhiPositive","#phi of negative charges distribution",
+                        nptbins,ptmin,ptmax, nphibins,phimin,phimax); 
+  fhPhiPos->SetYTitle("#phi (rad)");
+  fhPhiPos->SetXTitle("p_{T} (GeV/c)");
+  outputContainer->Add(fhPhiPos);
   
-  fhPtEtaPhiPos  = new TH3D ("hPtEtaPhiPos","pt/eta/phi of positive charge",nptbins,ptmin,ptmax, netabins,etamin,etamax, nphibins,phimin,phimax); 
-  fhPtEtaPhiPos->SetXTitle("p_{T}^{h^{+}} (GeV/c)");
-  fhPtEtaPhiPos->SetYTitle("#eta ");
-  fhPtEtaPhiPos->SetZTitle("#phi (rad)");  
-  outputContainer->Add(fhPtEtaPhiPos);
+  fhEtaPos  = new TH2F ("hEtaPositive","#eta of negative charges distribution",
+                        nptbins,ptmin,ptmax, netabins,etamin,etamax); 
+  fhEtaPos->SetYTitle("#eta ");
+  fhEtaPos->SetXTitle("p_{T} (GeV/c)");
+  outputContainer->Add(fhEtaPos);
   
-  fhPtEtaPhiNeg  = new TH3D ("hPtEtaPhiNeg","pt/eta/phi of negative charge",nptbins,ptmin,ptmax, netabins,etamin,etamax, nphibins,phimin,phimax); 
-  fhPtEtaPhiNeg->SetXTitle("p_{T}^{h^{-}} (GeV/c)");
-  fhPtEtaPhiNeg->SetYTitle("#eta ");
-  fhPtEtaPhiNeg->SetZTitle("#phi (rad)");  
-  outputContainer->Add(fhPtEtaPhiNeg);
+  fhEtaPhiPos  = new TH2F ("hPtEtaPhiPositive","pt/eta/phi of positive charge",netabins,etamin,etamax, nphibins,phimin,phimax); 
+  fhEtaPhiPos->SetXTitle("p_{T}^{h^{+}} (GeV/c)");
+  fhEtaPhiPos->SetYTitle("#eta ");
+  fhEtaPhiPos->SetZTitle("#phi (rad)");  
+  outputContainer->Add(fhEtaPhiPos);
+  
+  fhEtaPhiNeg  = new TH2F ("hEtaPhiNegative","eta vs phi of negative charge",netabins,etamin,etamax, nphibins,phimin,phimax); 
+  fhEtaPhiNeg->SetXTitle("p_{T}^{h^{-}} (GeV/c)");
+  fhEtaPhiNeg->SetYTitle("#eta ");
+  fhEtaPhiNeg->SetZTitle("#phi (rad)");  
+  outputContainer->Add(fhEtaPhiNeg);
   
   if(IsDataMC()){
     
@@ -217,7 +187,7 @@ TList *  AliAnaChargedParticles::GetCreateOutputObjects()
 
 }
 
-//__________________________________________________
+//___________________________________________
 void AliAnaChargedParticles::InitParameters()
 { 
   //Initialize the parameters of the analysis.
@@ -230,7 +200,7 @@ void AliAnaChargedParticles::InitParameters()
   
 }
 
-//__________________________________________________________________
+//____________________________________________________________
 void AliAnaChargedParticles::Print(const Option_t * opt) const
 {
   //Print some relevant parameters set for the analysis
@@ -246,7 +216,7 @@ void AliAnaChargedParticles::Print(const Option_t * opt) const
   
 } 
 
-//____________________________________________________________________________
+//_________________________________
 void AliAnaChargedParticles::Init()
 {  
   //Init
@@ -258,7 +228,7 @@ void AliAnaChargedParticles::Init()
   
 }
 
-//__________________________________________________________________
+//_________________________________________________
 void  AliAnaChargedParticles::MakeAnalysisFillAOD() 
 {
   //Do analysis and fill aods
@@ -282,25 +252,29 @@ void  AliAnaChargedParticles::MakeAnalysisFillAOD()
     
     //Acceptance selection
     Bool_t in =  GetFiducialCut()->IsInFiducialCut(mom,"CTS") ;
-    if(GetDebug() > 1) printf("AliAnaChargedParticles::MakeAnalysisFillAOD() - Track pt %2.2f, phi %2.2f, in fiducial cut %d\n",p3.Pt(), p3.Phi(), in);
+    if(GetDebug() > 1) 
+      printf("AliAnaChargedParticles::MakeAnalysisFillAOD() - Track pt %2.2f, phi %2.2f, in fiducial cut %d\n",p3.Pt(), p3.Phi(), in);
+
     if(p3.Pt() > GetMinPt() && in) {
       //Keep only particles identified with fPdg
       //Selection not done for the moment
       //Should be done here.
+      
+      // Mixed event
       if (GetMixedEvent()){
         evtIndex = GetMixedEvent()->EventIndex(track->GetID()) ;
-      }        
+      } 
       GetVertex(vert,evtIndex); 
-      if(TMath::Abs(vert[2])> GetZvertexCut()) return;      
+      if(TMath::Abs(vert[2])> GetZvertexCut()) return; 
+      
       AliAODPWG4Particle tr = AliAODPWG4Particle(mom[0],mom[1],mom[2],0);
       tr.SetDetector("CTS");
       tr.SetLabel(track->GetLabel());
       tr.SetTrackLabel(track->GetID(),-1);
-    //  tr.SetChargedBit(track->Charge());
-         //Input from second AOD?
-         //if(GetReader()->GetCTSTracksNormalInputEntries() <= i) tr.SetInputFileIndex(1);
+      tr.SetChargedBit(track->Charge()>0);
                
       AddAODParticle(tr);
+      
     }//selection
   }//loop
   
@@ -315,22 +289,25 @@ void  AliAnaChargedParticles::MakeAnalysisFillHistograms()
   
   //Loop on stored AODParticles
   Int_t naod = GetOutputAODBranch()->GetEntriesFast();
-  Double_t v[3] = {0,0,0}; //vertex ;
-  GetReader()->GetVertex(v);
-  fhVertex->Fill(v[0],v[1],v[2]);
-  if(TMath::Abs(v[2]) >GetZvertexCut()) return ;
+  
   fhNtracks->Fill(GetReader()->GetTrackMultiplicity()) ;
-  if(GetDebug() > 0) printf("AliAnaChargedParticles::MakeAnalysisFillHistograms() - aod branch entries %d\n", naod);
+  
+  if(GetDebug() > 0) 
+    printf("AliAnaChargedParticles::MakeAnalysisFillHistograms() - aod branch entries %d\n", naod);
+  
   for(Int_t iaod = 0; iaod < naod ; iaod++){
     AliAODPWG4Particle* tr =  (AliAODPWG4Particle*) (GetOutputAODBranch()->At(iaod));
         
     fhPt->Fill(tr->Pt());
-    fhPhi->Fill(tr->Pt(), tr->Phi());
-    fhEta->Fill(tr->Pt(), tr->Eta());
-    //for charge information
-    AliVTrack * track =  (AliVTrack*) (GetCTSTracks()->At(iaod));
-    if(track->Charge()>0)fhPtEtaPhiPos->Fill(tr->Pt(), tr->Eta(),tr->Phi());
-    if(track->Charge()<0)fhPtEtaPhiNeg->Fill(tr->Pt(), tr->Eta(),tr->Phi());
+    
+    if(tr->GetChargedBit()){
+      fhPhiPos   ->Fill(tr->Pt(), tr->Phi());
+      fhEtaPhiPos->Fill(tr->Eta(),tr->Phi());
+    }
+    else{
+      fhEtaNeg   ->Fill(tr->Pt(), tr->Eta());
+      fhEtaPhiNeg->Fill(tr->Eta(),tr->Phi());
+    }
     
     if(IsDataMC()){
       //Play with the MC stack if available            
@@ -347,33 +324,33 @@ void  AliAnaChargedParticles::MakeAnalysisFillHistograms()
         mompdg =TMath::Abs(aodmom->GetPdgCode());
       }
       
-      
       if(mompdg==211){
-        fhPtPion->Fill(tr->Pt());
+        fhPtPion ->Fill(tr->Pt());
         fhPhiPion->Fill(tr->Pt(), tr->Phi());
         fhEtaPion->Fill(tr->Pt(), tr->Eta());
       }
       else if(mompdg==2212){
-        fhPtProton->Fill(tr->Pt());
+        fhPtProton ->Fill(tr->Pt());
         fhPhiProton->Fill(tr->Pt(), tr->Phi());
         fhEtaProton->Fill(tr->Pt(), tr->Eta());
       }
       else if(mompdg==321){
-        fhPtKaon->Fill(tr->Pt());
+        fhPtKaon ->Fill(tr->Pt());
         fhPhiKaon->Fill(tr->Pt(), tr->Phi());
         fhEtaKaon->Fill(tr->Pt(), tr->Eta());
       }
       else if(mompdg==11){
-        fhPtElectron->Fill(tr->Pt());
+        fhPtElectron ->Fill(tr->Pt());
         fhPhiElectron->Fill(tr->Pt(), tr->Phi());
         fhEtaElectron->Fill(tr->Pt(), tr->Eta());
       }
       else {
         //printf("unknown pdg %d\n",mompdg);
-        fhPtUnknown->Fill(tr->Pt());
+        fhPtUnknown ->Fill(tr->Pt());
         fhPhiUnknown->Fill(tr->Pt(), tr->Phi());
         fhEtaUnknown->Fill(tr->Pt(), tr->Eta());
       }
+      
     }//Work with stack also
     
   }// aod branch loop
index 4bde457ecd9f078b6fcbf7e2182954456d9cec55..2ec0c6352a00ea445234dc83f1c47d080c13e7a1 100755 (executable)
@@ -15,7 +15,7 @@
 //-- Author: Gustavo Conesa (INFN-LNF)
 // Root system
 class TH2F; 
-class TH3D;
+
 // Analysis system
 #include "AliAnaPartCorrBaseClass.h"
  
@@ -23,7 +23,7 @@ class AliAnaChargedParticles : public AliAnaPartCorrBaseClass {
   
  public: 
   AliAnaChargedParticles() ; // default ctor
-  virtual ~AliAnaChargedParticles() {;} //virtual dtor
+  virtual ~AliAnaChargedParticles() { ; } //virtual dtor
  private:  
   AliAnaChargedParticles(const AliAnaChargedParticles & g) ; // cpy ctor
   AliAnaChargedParticles & operator = (const AliAnaChargedParticles & g) ;//cpy assignment
@@ -32,55 +32,57 @@ class AliAnaChargedParticles : public AliAnaPartCorrBaseClass {
 
   TList * GetCreateOutputObjects();
   
-  void Init();
-  void InitParameters();
-  
-  void Print(const Option_t * opt) const;
+  void    Init();
   
-  void MakeAnalysisFillAOD()  ;
+  void    InitParameters();
   
-  void MakeAnalysisFillHistograms() ; 
+  void    Print(const Option_t * opt) const;
   
-  Int_t GetPdgOfSelectedCharged() const {return fPdg ;}
-  void SelectChargedWithPdg( Int_t pdg ) {fPdg = pdg; }
+  void    MakeAnalysisFillAOD()  ;
   
-  //void Terminate();
+  void    MakeAnalysisFillHistograms() ; 
   
+  Int_t   GetPdgOfSelectedCharged()  const  { return fPdg ; }
+  void    SelectChargedWithPdg( Int_t pdg ) { fPdg = pdg  ; }
+    
  private:
   
   Int_t  fPdg ; //identified particle id
+  
   //Histograms 
-  TH1F * fhNtracks; //! track multiplicity distribution
-  TH3D * fhVertex; //! vertex distribution
-  TH1F * fhPt; //! pT distribution
-  TH2F * fhPhi; //! phi distribution vs pT
-  TH2F * fhEta; //! eta distribution vs pT
-  TH3D * fhPtEtaPhiPos; //! pT and phi distribution of positive charge  
-  TH3D * fhPtEtaPhiNeg; //! pT and phi distribution of positive charge  
+  TH1F * fhNtracks;     //! track multiplicity distribution
+  TH1F * fhPt;          //! pT distribution
+  TH2F * fhPhiNeg;      //! phi distribution vs pT, negative
+  TH2F * fhEtaNeg;      //! eta distribution vs pT, negative
+  TH2F * fhPhiPos;      //! phi distribution vs pT, positive
+  TH2F * fhEtaPos;      //! eta distribution vs pT, positive
+  TH2F * fhEtaPhiPos;   //! eta vs phi distribution of positive charge  
+  TH2F * fhEtaPhiNeg;   //! eta vs phi distribution of negative charge  
 
   //MC
-  TH1F * fhPtPion; //! pT distribution
-  TH2F * fhPhiPion; //! phi distribution vs pT
-  TH2F * fhEtaPion; //! eta distribution vs pT
+  TH1F * fhPtPion;      //! pT distribution
+  TH2F * fhPhiPion;     //! phi distribution vs pT
+  TH2F * fhEtaPion;     //! eta distribution vs pT
   
-  TH1F * fhPtProton; //! pT distribution
-  TH2F * fhPhiProton; //! phi distribution vs pT
-  TH2F * fhEtaProton; //! eta distribution vs pT
+  TH1F * fhPtProton;    //! pT distribution
+  TH2F * fhPhiProton;   //! phi distribution vs pT
+  TH2F * fhEtaProton;   //! eta distribution vs pT
   
-  TH1F * fhPtElectron; //! pT distribution
+  TH1F * fhPtElectron;  //! pT distribution
   TH2F * fhPhiElectron; //! phi distribution vs pT
   TH2F * fhEtaElectron; //! eta distribution vs pT
   
-  TH1F * fhPtKaon; //! pT distribution
-  TH2F * fhPhiKaon; //! phi distribution vs pT
-  TH2F * fhEtaKaon; //! eta distribution vs pT
+  TH1F * fhPtKaon;      //! pT distribution
+  TH2F * fhPhiKaon;     //! phi distribution vs pT
+  TH2F * fhEtaKaon;     //! eta distribution vs pT
   
-  TH1F * fhPtUnknown; //! pT distribution
-  TH2F * fhPhiUnknown; //! phi distribution vs pT
-  TH2F * fhEtaUnknown; //! eta distribution vs pT
+  TH1F * fhPtUnknown;   //! pT distribution
+  TH2F * fhPhiUnknown;  //! phi distribution vs pT
+  TH2F * fhEtaUnknown;  //! eta distribution vs pT
   
-  ClassDef(AliAnaChargedParticles,2)
-    } ;
+  ClassDef(AliAnaChargedParticles,3)
+
+} ;
 
 
 #endif //ALIANACHARGEDPARTICLES_H
index 5fd5544cceb120e8ef2328c07a1a52bba6baf963..8be17cff8c796660979ee8f8f4a09043dbe527d0 100755 (executable)
 ClassImp(AliAnaParticleHadronCorrelation)
 
 
-//____________________________________________________________________________
+//___________________________________________________________________
   AliAnaParticleHadronCorrelation::AliAnaParticleHadronCorrelation(): 
     AliAnaPartCorrBaseClass(),
-    fDeltaPhiMaxCut(0.), fDeltaPhiMinCut(0.), fSelectIsolated(0),
-    fMakeSeveralUE(0),  
-    fUeDeltaPhiMaxCut(0.), fUeDeltaPhiMinCut(0.), 
-    fPi0AODBranchName(""),fNeutralCorr(0), fPi0Trigger(0),
-    fMakeAbsoluteLeading(0), fLeadingTriggerIndex(-1),
-    fNTriggerPtBins(0),
-    fhPtLeading(0),fhPhiLeading(0),fhEtaLeading(0), 
-    fhDeltaPhiDeltaEtaCharged(0),
-    fhPhiCharged(0), fhEtaCharged(0), 
-    fhDeltaPhiCharged(0), 
-    fhDeltaEtaCharged(0), 
-    fhDeltaPhiChargedPt(0), 
-    fhDeltaPhiUeChargedPt(0), 
-    fhPtImbalanceCharged(0), 
-    fhPtImbalanceUeCharged(0),
-    fhPtImbalancePosCharged(0),fhPtImbalanceNegCharged(0),
-    fhPtHbpCharged(0), fhPtHbpUeCharged(0),
-    fhDeltaPhiUeLeftCharged(0),fhDeltaPhiUeRightCharged(0),
-    fhPtImbalanceUeLeftCharged(0),fhPtImbalanceUeRightCharged(0),
-    fhPtHbpUeLeftCharged(0),fhPtHbpUeRightCharged(0), 
-    fhPtTrigPout(0), fhPtAssocDeltaPhi(0),
-    fhPtTrigCharged(0),
-    fhTrigDeltaPhiCharged(0x0), fhTrigDeltaEtaCharged(0x0),fhTrigCorr(0x0),fhTrigUeCorr(0x0),
+    fDeltaPhiMaxCut(0.),            fDeltaPhiMinCut(0.),   
+    fSelectIsolated(0),             fMakeSeveralUE(0),              
+    fUeDeltaPhiMaxCut(0.),          fUeDeltaPhiMinCut(0.), 
+    fPi0AODBranchName(""),          fNeutralCorr(0),       
+    fPi0Trigger(0),                 fMakeAbsoluteLeading(0),        
+    fLeadingTriggerIndex(-1),       
+    fNAssocPtBins(0),               fAssocPtBinLimit(),
+    //Histograms
+    fhPtLeading(0),                 fhPhiLeading(0),       
+    fhEtaLeading(0),                fhDeltaPhiDeltaEtaCharged(0),
+    fhPhiCharged(0),                fhEtaCharged(0), 
+    fhDeltaPhiCharged(0),           fhDeltaEtaCharged(0), 
+    fhDeltaPhiChargedPt(0),         fhDeltaPhiUeChargedPt(0), 
+    fhPtImbalanceCharged(0),        fhPtImbalanceUeCharged(0),
+    fhPtImbalancePosCharged(0),     fhPtImbalanceNegCharged(0),
+    fhPtHbpCharged(0),              fhPtHbpUeCharged(0),
+    fhDeltaPhiUeLeftCharged(0),     fhDeltaPhiUeRightCharged(0),
+    fhPtImbalanceUeLeftCharged(0),  fhPtImbalanceUeRightCharged(0),
+    fhPtHbpUeLeftCharged(0),        fhPtHbpUeRightCharged(0), 
+    fhPtTrigPout(0),                fhPtTrigCharged(0),
+    fhTrigDeltaPhiCharged(0x0),     fhTrigDeltaEtaCharged(0x0),
+    fhTrigCorr(0x0),                fhTrigUeCorr(0x0),
+    fhAssocPt(0),                   fhAssocPtBkg(0),  
+    fhDeltaPhiAssocPtBin(0),        fhDeltaPhiBradAssocPtBin(0),
+    fhXEAssocPtBin(0),
     fhDeltaPhiDeltaEtaNeutral(0), 
-    fhPhiNeutral(0), fhEtaNeutral(0), 
-    fhDeltaPhiNeutral(0), fhDeltaEtaNeutral(0),
-    fhDeltaPhiNeutralPt(0),fhDeltaPhiUeNeutralPt(0), 
-    fhPtImbalanceNeutral(0),fhPtImbalanceUeNeutral(0),
-    fhPtHbpNeutral(0), fhPtHbpUeNeutral(0),
-    fhDeltaPhiUeLeftNeutral(0),fhDeltaPhiUeRightNeutral(0),
-    fhPtImbalanceUeLeftNeutral(0),fhPtImbalanceUeRightNeutral(0),
-    fhPtHbpUeLeftNeutral(0),fhPtHbpUeRightNeutral(0),
+    fhPhiNeutral(0),                fhEtaNeutral(0), 
+    fhDeltaPhiNeutral(0),           fhDeltaEtaNeutral(0),
+    fhDeltaPhiNeutralPt(0),         fhDeltaPhiUeNeutralPt(0), 
+    fhPtImbalanceNeutral(0),        fhPtImbalanceUeNeutral(0),
+    fhPtHbpNeutral(0),              fhPtHbpUeNeutral(0),
+    fhDeltaPhiUeLeftNeutral(0),     fhDeltaPhiUeRightNeutral(0),
+    fhPtImbalanceUeLeftNeutral(0),  fhPtImbalanceUeRightNeutral(0),
+    fhPtHbpUeLeftNeutral(0),        fhPtHbpUeRightNeutral(0),
     fhPtPi0DecayRatio(0),
-    fhDeltaPhiDecayCharged(0),
-    fhPtImbalanceDecayCharged(0), 
-    fhDeltaPhiDecayNeutral(0),
-    fhPtImbalanceDecayNeutral(0),
+    fhDeltaPhiDecayCharged(0),      fhPtImbalanceDecayCharged(0), 
+    fhDeltaPhiDecayNeutral(0),      fhPtImbalanceDecayNeutral(0),
     fh2phiLeadingParticle(0x0),
     fhMCLeadingCount(0),
-    fhMCEtaCharged(0),
-    fhMCPhiCharged(0), 
-    fhMCDeltaEtaCharged(0),
-    fhMCDeltaPhiCharged(0x0),
-    fhMCDeltaPhiDeltaEtaCharged(0),
-    fhMCDeltaPhiChargedPt(0),
+    fhMCEtaCharged(0),              fhMCPhiCharged(0), 
+    fhMCDeltaEtaCharged(0),         fhMCDeltaPhiCharged(0x0),
+    fhMCDeltaPhiDeltaEtaCharged(0), fhMCDeltaPhiChargedPt(0),
     fhMCPtImbalanceCharged(0),
     fhMCPtHbpCharged(0),
     fhMCPtTrigPout(0),
@@ -115,7 +112,55 @@ ClassImp(AliAnaParticleHadronCorrelation)
   InitParameters();
 }
 
-//________________________________________________________________________
+//____________________________________________________________
+TObjString* AliAnaParticleHadronCorrelation::GetAnalysisCuts()
+{
+  //Save parameters used for analysis
+  TString parList ; //this will be list of parameters used for this analysis.
+  const Int_t buffersize = 560;
+  char onePar[buffersize] ;
+  
+  snprintf(onePar,buffersize,"--- AliAnaPaticleHadronCorrelation ---\n") ;
+  parList+=onePar ;    
+  snprintf(onePar,buffersize,"Phi trigger particle-Hadron      <     %3.2f ", fDeltaPhiMaxCut) ; 
+  parList+=onePar ;
+  snprintf(onePar,buffersize,"Phi trigger particle-Hadron      >     %3.2f ", fDeltaPhiMinCut) ;
+  parList+=onePar ;
+  snprintf(onePar,buffersize,"Isolated Trigger?  %d\n", fSelectIsolated) ;
+  parList+=onePar ;
+  snprintf(onePar,buffersize,"Phi trigger particle-UeHadron    <    %3.2f ", fUeDeltaPhiMaxCut) ; 
+  parList+=onePar ;
+  snprintf(onePar,buffersize,"Phi trigger particle-UeHadron    >    %3.2f ", fUeDeltaPhiMinCut) ;
+  parList+=onePar ;
+  snprintf(onePar,buffersize,"Several UE?  %d\n", fMakeSeveralUE) ;
+  parList+=onePar ;
+  snprintf(onePar,buffersize,"Name of AOD Pi0 Branch %s ",fPi0AODBranchName.Data());
+  parList+=onePar ;
+  snprintf(onePar,buffersize,"Do Decay-hadron correlation ?  %d", fPi0Trigger) ;
+  parList+=onePar ;
+  snprintf(onePar,buffersize,"Select absolute leading for cluster triggers ?  %d\n", fMakeAbsoluteLeading) ;
+  parList+=onePar ;
+  snprintf(onePar,buffersize,"Associated particle pt bins  %d: ", fNAssocPtBins) ;
+  parList+=onePar ;
+  for (Int_t ibin = 0; ibin<fNAssocPtBins; ibin++) {
+    snprintf(onePar,buffersize,"bin %d = [%2.1f,%2.1f];", ibin, fAssocPtBinLimit[ibin], fAssocPtBinLimit[ibin+1]) ;
+  }
+  parList+=onePar ;
+  
+  //Get parameters set in base class.
+  parList += GetBaseParametersList() ;
+  
+  //Get parameters set in PID class.
+  //parList += GetCaloPID()->GetPIDParametersList() ;
+  
+  //Get parameters set in FiducialCut class (not available yet)
+  //parlist += GetFidCut()->GetFidCutParametersList() 
+  
+  return new TObjString(parList) ;  
+  
+} 
+
+//________________________________________________________________
 TList *  AliAnaParticleHadronCorrelation::GetCreateOutputObjects()
 {  
   
@@ -124,15 +169,9 @@ TList *  AliAnaParticleHadronCorrelation::GetCreateOutputObjects()
   TList * outputContainer = new TList() ; 
   outputContainer->SetName("CorrelationHistos") ; 
   
-  Int_t nptbins  = GetHistoPtBins();
-  Int_t nphibins = GetHistoPhiBins();
-  Int_t netabins = GetHistoEtaBins();
-  Float_t ptmax  = GetHistoPtMax();
-  Float_t phimax = GetHistoPhiMax();
-  Float_t etamax = GetHistoEtaMax();
-  Float_t ptmin  = GetHistoPtMin();
-  Float_t phimin = GetHistoPhiMin();
-  Float_t etamin = GetHistoEtaMin();   
+  Int_t   nptbins = GetHistoPtBins(); Int_t  nphibins = GetHistoPhiBins(); Int_t   netabins = GetHistoEtaBins();
+  Float_t ptmax   = GetHistoPtMax();  Float_t phimax  = GetHistoPhiMax();  Float_t etamax   = GetHistoEtaMax();
+  Float_t ptmin   = GetHistoPtMin();  Float_t phimin  = GetHistoPhiMin();  Float_t etamin   = GetHistoEtaMin();        
   
   fhPtLeading  = new TH1F ("hPtLeading","p_T distribution of leading particles", nptbins,ptmin,ptmax); 
   fhPtLeading->SetXTitle("p_{T}^{trig} (GeV/c)");
@@ -233,12 +272,6 @@ TList *  AliAnaParticleHadronCorrelation::GetCreateOutputObjects()
     fhPtTrigPout->SetYTitle("p_{out} (GeV/c)");
     fhPtTrigPout->SetXTitle("p_{T trigger} (GeV/c)"); 
     
-    fhPtAssocDeltaPhi  = 
-    new TH2F("fhPtAssocDeltaPhi"," charged hadrons vs. delta phi",
-             nptbins,ptmin,ptmax,140,-2.,5.); 
-    fhPtAssocDeltaPhi->SetXTitle("p_{T h^{#pm}} (GeV/c)");  
-    fhPtAssocDeltaPhi->SetYTitle("#Delta #phi (GeV/c)"); 
-    
     fhPtTrigCharged  = 
     new TH2F("PtTrigCharged","trgger and charged tracks pt distribution",
              nptbins,ptmin,ptmax,nptbins,ptmin,ptmax); 
@@ -259,15 +292,14 @@ TList *  AliAnaParticleHadronCorrelation::GetCreateOutputObjects()
     outputContainer->Add(fhPtHbpCharged) ;
     outputContainer->Add(fhPtHbpUeCharged) ;
     outputContainer->Add(fhPtTrigPout) ;
-    outputContainer->Add(fhPtAssocDeltaPhi) ;
     outputContainer->Add(fhPtTrigCharged) ;
     
     if(DoEventSelect()){ 
       Int_t nMultiBins = GetMultiBin();
       fhTrigDeltaPhiCharged = new TH2F*[nMultiBins] ;
       fhTrigDeltaEtaCharged = new TH2F*[nMultiBins] ;
-      fhTrigCorr = new TH2F*[nMultiBins];
-      fhTrigUeCorr = new TH2F*[nMultiBins];
+      fhTrigCorr            = new TH2F*[nMultiBins];
+      fhTrigUeCorr          = new TH2F*[nMultiBins];
       for(Int_t im=0; im<nMultiBins; im++){
         fhTrigDeltaPhiCharged[im]  = new TH2F 
         (Form("fhTrigDeltaPhiCharged_%d",im),Form("fhTrigDeltaPhiCharged_%d",im), nptbins,ptmin,ptmax, 140,-2.,5.); 
@@ -294,23 +326,44 @@ TList *  AliAnaParticleHadronCorrelation::GetCreateOutputObjects()
       }
     }
     
-    for(Int_t i = 0 ; i < fNTriggerPtBins ; i++){
-      fhTrigPt[i]            = new TH1F(Form("fhTrigPt%1.f_%1.f", fTriggerPtBinLimit[i], fTriggerPtBinLimit[i+1]), 
-                                        Form("fhTrigPt%1.f_%1.f", fTriggerPtBinLimit[i], fTriggerPtBinLimit[i+1]),
-                                        20, fTriggerPtBinLimit[i], fTriggerPtBinLimit[i+1]);
-      fhDphiTrigPtAssocPt[i] = new TH1F(Form("fhDphiTrigPtAssocPt%1.f_%1.f", fTriggerPtBinLimit[i], fTriggerPtBinLimit[i+1]), 
-                                        Form("fhDphiTrigPtAssocPt%1.f_%1.f", fTriggerPtBinLimit[i], fTriggerPtBinLimit[i+1]), 
-                                        288, -1.0/3.0, 5.0/3.0);
-      fhAssocPtBkg[i]        = new TH1F(Form("fhAssocPtBkg%1.f_%1.f", fTriggerPtBinLimit[i], fTriggerPtBinLimit[i+1]), 
-                                        Form("fhAssocPtBkg%1.f_%1.f", fTriggerPtBinLimit[i], fTriggerPtBinLimit[i+1]), 
-                                        600, 0., 30.0); 
-      fhXE[i]                = new TH1F(Form("fhXETrigPt%1.f_%1.f", fTriggerPtBinLimit[i], fTriggerPtBinLimit[i+1]), 
-                                        Form("fhXETrigPt%1.f_%1.f", fTriggerPtBinLimit[i], fTriggerPtBinLimit[i+1]),
-                                        50, 0.0, 2.0);
-      outputContainer->Add(fhTrigPt[i]) ;
-      outputContainer->Add(fhDphiTrigPtAssocPt[i]) ;
-      outputContainer->Add(fhAssocPtBkg[i]);
-      outputContainer->Add(fhXE[i]);
+    fhAssocPt           = new TH2F("fhAssocPt", " Trigger p_{T} vs associated hadron p_{T}",
+                                   nptbins, ptmin, ptmax,nptbins,ptmin,ptmax);
+    fhAssocPt->SetXTitle("p_{T trigger}");
+    fhAssocPt->SetYTitle("p_{T associated}");
+    outputContainer->Add(fhAssocPt) ;
+    
+    fhAssocPtBkg        = new TH2F("fhAssocPtBkg", " Trigger p_{T} vs associated hadron p_{T} from background",
+                                   nptbins, ptmin, ptmax,nptbins,ptmin,ptmax);
+    fhAssocPtBkg->SetXTitle("p_{T trigger}");
+    fhAssocPtBkg->SetYTitle("p_{T associated}");
+    outputContainer->Add(fhAssocPtBkg) ;
+    
+    fhDeltaPhiAssocPtBin     = new TH2F*[fNAssocPtBins] ;
+    fhDeltaPhiBradAssocPtBin = new TH2F*[fNAssocPtBins] ;
+    fhXEAssocPtBin           = new TH2F*[fNAssocPtBins] ;
+    for(Int_t i = 0 ; i < fNAssocPtBins ; i++){
+      fhDeltaPhiAssocPtBin[i] = new TH2F(Form("fhDeltaPhiPtAssocPt%2.1f_%2.1f", fAssocPtBinLimit[i], fAssocPtBinLimit[i+1]), 
+                                         Form("#Delta #phi vs p_{T trigger} for associated p_{T} bin [%2.1f,%2.1f]", fAssocPtBinLimit[i], fAssocPtBinLimit[i+1]), 
+                                         nptbins, ptmin, ptmax,140,-2.,5.);
+      fhDeltaPhiAssocPtBin[i]->SetXTitle("p_{T trigger}");
+      fhDeltaPhiAssocPtBin[i]->SetYTitle("#Delta #phi");
+      
+      fhDeltaPhiBradAssocPtBin[i] = new TH2F(Form("fhDeltaPhiBradPtAssocPt%2.1f_%2.1f", fAssocPtBinLimit[i], fAssocPtBinLimit[i+1]), 
+                                             Form("atan2(sin(#Delta #phi), cos(#Delta #phi))/#pi vs p_{T trigger} for associated p_{T} bin [%2.1f,%2.1f]", fAssocPtBinLimit[i], fAssocPtBinLimit[i+1]), 
+                                             nptbins, ptmin, ptmax,288, -1.0/3.0, 5.0/3.0);
+      fhDeltaPhiBradAssocPtBin[i]->SetXTitle("p_{T trigger}");
+      fhDeltaPhiBradAssocPtBin[i]->SetYTitle("atan2(sin(#Delta #phi), cos(#Delta #phi))/#pi");
+      
+      
+      fhXEAssocPtBin[i]       = new TH2F(Form("fhXEAssocPtBin%1.f_%1.f", fAssocPtBinLimit[i], fAssocPtBinLimit[i+1]), 
+                                         Form("x_[E] vs p_{T trigger} for associated p_{T} bin [%2.1f,%2.1f]", fAssocPtBinLimit[i], fAssocPtBinLimit[i+1]), 
+                                         nptbins, ptmin, ptmax,50, 0.0, 2.0);
+      fhXEAssocPtBin[i]->SetXTitle("p_{T trigger}");
+      fhXEAssocPtBin[i]->SetYTitle("x_{E}");
+      
+      outputContainer->Add(fhDeltaPhiAssocPtBin[i]) ;
+      outputContainer->Add(fhDeltaPhiBradAssocPtBin[i]) ;
+      outputContainer->Add(fhXEAssocPtBin[i]);
     }
     
     if(fPi0Trigger){
@@ -628,7 +681,7 @@ TList *  AliAnaParticleHadronCorrelation::GetCreateOutputObjects()
   
 }
 
-//____________________________________________________________________________
+//____________________________________________________
 void AliAnaParticleHadronCorrelation::InitParameters()
 {
   
@@ -648,98 +701,21 @@ void AliAnaParticleHadronCorrelation::InitParameters()
   fPi0Trigger           = kFALSE ;
   fMakeAbsoluteLeading  = kTRUE;
   
-  fNTriggerPtBins       = 6 ;
-  fTriggerPtBinLimit[0] = 4.; 
-  fTriggerPtBinLimit[1] = 5.; 
-  fTriggerPtBinLimit[2] = 6.; 
-  fTriggerPtBinLimit[3] = 7.; 
-  fTriggerPtBinLimit[4] = 8.; 
-  fTriggerPtBinLimit[5] =10.; 
-  fTriggerPtBinLimit[6] =12.;
-  fTriggerPtBinLimit[7] =15.;
-  fTriggerPtBinLimit[8] =20.;
-  fTriggerPtBinLimit[9] =25.;
-  fTriggerPtBinLimit[6] =100.;
+  fNAssocPtBins        = 7  ;
+  fAssocPtBinLimit[0]  = 2.  ; 
+  fAssocPtBinLimit[1]  = 4.  ; 
+  fAssocPtBinLimit[2]  = 6.  ; 
+  fAssocPtBinLimit[3]  = 8.  ; 
+  fAssocPtBinLimit[4]  = 10. ; 
+  fAssocPtBinLimit[5]  = 13. ; 
+  fAssocPtBinLimit[6]  = 16. ;
+  fAssocPtBinLimit[7]  = 20. ;
+  fAssocPtBinLimit[8]  = 100.;
+  fAssocPtBinLimit[9]  = 200.;
   
 }
 
-//__________________________________________________________________
-void AliAnaParticleHadronCorrelation::Print(const Option_t * opt) const
-{
-
-  //Print some relevant parameters set for the analysis
-  if(! opt)
-    return;
-  
-  printf("**** Print %s %s ****\n", GetName(), GetTitle() ) ;
-  AliAnaPartCorrBaseClass::Print(" ");
-
-  printf("Phi trigger particle-Hadron      <     %3.2f\n", fDeltaPhiMaxCut) ; 
-  printf("Phi trigger particle-Hadron      >     %3.2f\n", fDeltaPhiMinCut) ;
-  printf("Isolated Trigger?  %d\n", fSelectIsolated) ;
-  printf("Phi trigger particle-UeHadron    <    %3.2f\n", fUeDeltaPhiMaxCut) ; 
-  printf("Phi trigger particle-UeHadron    >    %3.2f\n", fUeDeltaPhiMinCut) ;
-  printf("Several UE?  %d\n", fMakeSeveralUE) ;
-  printf("Name of AOD Pi0 Branch %s \n",fPi0AODBranchName.Data());
-  printf("Do Decay-hadron correlation ?  %d\n", fPi0Trigger) ;
-  printf("Select absolute leading for cluster triggers ?  %d\n", fMakeAbsoluteLeading) ;
-  printf("Trigger pt bins  %d\n", fNTriggerPtBins) ;
-  for (Int_t ibin = 0; ibin<fNTriggerPtBins; ibin++) {
-    printf("\t bin %d = [%2.1f,%2.1f]\n", ibin, fTriggerPtBinLimit[ibin], fTriggerPtBinLimit[ibin+1]) ;
-  }
-
-} 
-
-//__________________________________________________________________
-TObjString* AliAnaParticleHadronCorrelation::GetAnalysisCuts()
-{
-  //Save parameters used for analysis
-  TString parList ; //this will be list of parameters used for this analysis.
-  const Int_t buffersize = 560;
-  char onePar[buffersize] ;
-  
-  snprintf(onePar,buffersize,"--- AliAnaPaticleHadronCorrelation ---\n") ;
-  parList+=onePar ;    
-  snprintf(onePar,buffersize,"Phi trigger particle-Hadron      <     %3.2f ", fDeltaPhiMaxCut) ; 
-  parList+=onePar ;
-  snprintf(onePar,buffersize,"Phi trigger particle-Hadron      >     %3.2f ", fDeltaPhiMinCut) ;
-  parList+=onePar ;
-  snprintf(onePar,buffersize,"Isolated Trigger?  %d\n", fSelectIsolated) ;
-  parList+=onePar ;
-  snprintf(onePar,buffersize,"Phi trigger particle-UeHadron    <    %3.2f ", fUeDeltaPhiMaxCut) ; 
-  parList+=onePar ;
-  snprintf(onePar,buffersize,"Phi trigger particle-UeHadron    >    %3.2f ", fUeDeltaPhiMinCut) ;
-  parList+=onePar ;
-  snprintf(onePar,buffersize,"Several UE?  %d\n", fMakeSeveralUE) ;
-  parList+=onePar ;
-  snprintf(onePar,buffersize,"Name of AOD Pi0 Branch %s ",fPi0AODBranchName.Data());
-  parList+=onePar ;
-  snprintf(onePar,buffersize,"Do Decay-hadron correlation ?  %d", fPi0Trigger) ;
-  parList+=onePar ;
-  snprintf(onePar,buffersize,"Select absolute leading for cluster triggers ?  %d\n", fMakeAbsoluteLeading) ;
-  parList+=onePar ;
-  snprintf(onePar,buffersize,"Trigger pt bins  %d: ", fNTriggerPtBins) ;
-  parList+=onePar ;
-  for (Int_t ibin = 0; ibin<fNTriggerPtBins; ibin++) {
-    snprintf(onePar,buffersize,"bin %d = [%2.1f,%2.1f];", ibin, fTriggerPtBinLimit[ibin], fTriggerPtBinLimit[ibin+1]) ;
-  }
-  parList+=onePar ;
-  
-  //Get parameters set in base class.
-  parList += GetBaseParametersList() ;
-  
-  //Get parameters set in PID class.
-  //parList += GetCaloPID()->GetPIDParametersList() ;
-  
-  //Get parameters set in FiducialCut class (not available yet)
-  //parlist += GetFidCut()->GetFidCutParametersList() 
-  
-  return new TObjString(parList) ;  
-  
-} 
-
-
-//____________________________________________________________________________
+//__________________________________________________________
 void  AliAnaParticleHadronCorrelation::MakeAnalysisFillAOD()  
 {  
   //Particle-Hadron Correlation Analysis, fill AODs
@@ -823,7 +799,7 @@ void  AliAnaParticleHadronCorrelation::MakeAnalysisFillAOD()
   
 }
 
-//____________________________________________________________________________
+//_________________________________________________________________
 void  AliAnaParticleHadronCorrelation::MakeAnalysisFillHistograms()  
 {  
   //Particle-Hadron Correlation Analysis, fill histograms
@@ -866,6 +842,7 @@ void  AliAnaParticleHadronCorrelation::MakeAnalysisFillHistograms()
         if (TMath::Abs(GetVertex(evt)[2]) > GetZvertexCut()) 
           return ;
       }
+      
       //check if the particle is isolated or if we want to take the isolation into account
       if(OnlyIsolated() && !particle->IsIsolated()) continue;
       
@@ -917,7 +894,7 @@ void  AliAnaParticleHadronCorrelation::MakeAnalysisFillHistograms()
   if(GetDebug() > 1) printf("AliAnaParticleHadronCorrelation::MakeAnalysisFillHistograms() - End fill histograms \n");
 }
 
-//____________________________________________________________________________
+//_________________________________________________________________________________________________________
 Bool_t  AliAnaParticleHadronCorrelation::MakeChargedCorrelation(AliAODPWG4ParticleCorrelation *aodParticle, 
                                                                 TObjArray* pl, const Bool_t bFillHisto)
 {  
@@ -942,14 +919,6 @@ Bool_t  AliAnaParticleHadronCorrelation::MakeChargedCorrelation(AliAODPWG4Partic
   Double_t phiTrig = aodParticle->Phi();
   Double_t etaTrig = aodParticle->Eta(); 
   Double_t ptTrig  = aodParticle->Pt();  
-  Int_t    trBin   = -1; 
-  for(Int_t i = 0 ; i < fNTriggerPtBins ; i++){
-    if(ptTrig > fTriggerPtBinLimit[i] && ptTrig < fTriggerPtBinLimit[i+1]) trBin= i; 
-  }
-  if(trBin==-1) return kFALSE;
-  if(OnlyIsolated() && aodParticle->IsIsolated()){
-    fhTrigPt[trBin]->Fill(ptTrig);
-  }
   
   Double_t pt             = -100. ;
   Double_t px             = -100. ;
@@ -1077,10 +1046,11 @@ Bool_t  AliAnaParticleHadronCorrelation::MakeChargedCorrelation(AliAODPWG4Partic
     pout = pt*TMath::Sin(deltaPhi) ;
     rat  = pt/ptTrig ;
     xE   =-pt/ptTrig*TMath::Cos(deltaPhi);
-    if(xE > 0 )cosi = TMath::Log(1/xE); 
+    cosi =-100;
+    if(xE > 0 ) cosi = TMath::Log(1/xE); 
     else {
-      printf("AliAnaParticleHadronCorrelation::MakeChargedCorrelation() - xE=%f negative or null, check!, pT %f, ptTrig %f\n", xE,pt,ptTrig);
-      return kFALSE;
+      if(GetDebug() > 1 ) printf("AliAnaParticleHadronCorrelation::MakeChargedCorrelation() - xE=%f negative or null, check!, pT %f, ptTrig %f\n", xE,pt,ptTrig);
+      //return kFALSE; // shbould return or continue?
     }
     
     if(GetDebug() > 2)
@@ -1090,26 +1060,33 @@ Bool_t  AliAnaParticleHadronCorrelation::MakeChargedCorrelation(AliAODPWG4Partic
     // Fill Histograms
     if(bFillHisto){
       
-      if(OnlyIsolated() && aodParticle->IsIsolated()){      //FILIP, if only wantisolated histograms
-        if(TMath::Cos(deltaPhi)<0){//away side 
-          fhXE[trBin]->Fill(xE) ;
-        }   
-        
-        //Hardcoded values, BAD, FIXME
-        Double_t  dphiBrad = atan2(sin(deltaPhiOrg), cos(deltaPhiOrg))/TMath::Pi();//-1 to 1
-        if(TMath::Abs(dphiBrad)>0.325 && TMath::Abs(dphiBrad)<0.475){
-          fhAssocPtBkg[trBin]->Fill(pt);
-        }
-        if(dphiBrad<-1./3) dphiBrad += 2;
-        fhDphiTrigPtAssocPt[trBin]->Fill(dphiBrad);
+      Int_t    assocBin   = -1; 
+      for(Int_t i = 0 ; i < fNAssocPtBins ; i++){
+        if(ptTrig > fAssocPtBinLimit[i] && ptTrig < fAssocPtBinLimit[i+1]) assocBin= i; 
       }
       
-      fhEtaCharged->Fill(pt,eta);
-      fhPhiCharged->Fill(pt,phi);
+      fhAssocPt->Fill(ptTrig,pt);
+      
+      if(TMath::Cos(deltaPhi) < 0 && assocBin >= 0 )//away side 
+        fhXEAssocPtBin[assocBin]->Fill(ptTrig, xE) ;
+      
+      //Hardcoded values, BAD, FIXME
+      Double_t  dphiBrad = atan2(sin(deltaPhiOrg), cos(deltaPhiOrg))/TMath::Pi();//-1 to 1
+      if(TMath::Abs(dphiBrad)>0.325 && TMath::Abs(dphiBrad)<0.475){
+        fhAssocPtBkg->Fill(ptTrig, pt);
+      }
+      
+      if(dphiBrad<-1./3) dphiBrad += 2;
+      if(assocBin>=0){
+        fhDeltaPhiBradAssocPtBin[assocBin]->Fill(ptTrig, dphiBrad);
+        fhDeltaPhiAssocPtBin    [assocBin]->Fill(ptTrig, deltaPhi);
+      }
+      
+      fhEtaCharged     ->Fill(pt,eta);
+      fhPhiCharged     ->Fill(pt,phi);
       fhDeltaEtaCharged->Fill(ptTrig,aodParticle->Eta()-eta);
       fhDeltaPhiCharged->Fill(ptTrig, deltaPhi);
       fhDeltaPhiDeltaEtaCharged->Fill(deltaPhi,aodParticle->Eta()-eta);
-      fhPtAssocDeltaPhi->Fill(pt, deltaPhi);
       
       if(GetDebug() > 2 ) printf("AliAnaParticleHadronCorrelation::MakeChargedCorrelation() - Selected charge for momentum imbalance: pt %2.2f, phi %2.2f, eta %2.2f \n",pt,phi,eta);
       //fill different multiplicity histogram
@@ -1125,11 +1102,11 @@ Bool_t  AliAnaParticleHadronCorrelation::MakeChargedCorrelation(AliAODPWG4Partic
       if( (deltaPhi > fDeltaPhiMinCut) && ( deltaPhi < fDeltaPhiMaxCut) ) {
         fhDeltaPhiChargedPt->Fill(pt,deltaPhi);
         fhPtImbalanceCharged->Fill(ptTrig,xE); 
-        fhPtHbpCharged->Fill(ptTrig,cosi);
-        fhPtTrigPout->Fill(ptTrig, pout) ;
+        fhPtHbpCharged ->Fill(ptTrig, cosi);
+        fhPtTrigPout   ->Fill(ptTrig, pout) ;
         fhPtTrigCharged->Fill(ptTrig, pt) ;
-        if(track->Charge()>0) fhPtImbalancePosCharged->Fill(ptTrig,xE) ;
-        else fhPtImbalanceNegCharged->Fill(ptTrig,xE) ;
+        if(track->Charge() > 0) fhPtImbalancePosCharged->Fill(ptTrig,xE) ;
+        else                    fhPtImbalanceNegCharged->Fill(ptTrig,xE) ;
         //fill different multiplicity histogram
         if(DoEventSelect()){
           for(Int_t im=0; im<GetMultiBin(); im++){
@@ -1211,7 +1188,7 @@ Bool_t  AliAnaParticleHadronCorrelation::MakeChargedCorrelation(AliAODPWG4Partic
   
 }  
 
-//____________________________________________________________________________
+//________________________________________________________________________________________________________________
 Bool_t  AliAnaParticleHadronCorrelation::MakeNeutralCorrelation(AliAODPWG4ParticleCorrelation * const aodParticle, 
                                                                 TObjArray* pi0list, const Bool_t bFillHisto)  
 {  
@@ -1410,7 +1387,7 @@ Bool_t  AliAnaParticleHadronCorrelation::MakeNeutralCorrelation(AliAODPWG4Partic
   return kTRUE;
 }
   
-//____________________________________________________________________________
+//_________________________________________________________________________________________________________
 void  AliAnaParticleHadronCorrelation::MakeMCChargedCorrelation(AliAODPWG4ParticleCorrelation *aodParticle)
 {  
   // Charged Hadron Correlation Analysis with MC information
@@ -1652,33 +1629,63 @@ void  AliAnaParticleHadronCorrelation::MakeMCChargedCorrelation(AliAODPWG4Partic
   }// AOD MC
 }
 
-//____________________________________________________________________________
-void AliAnaParticleHadronCorrelation::SetNTriggerPtBins(Int_t n)
+//_____________________________________________________________________
+void AliAnaParticleHadronCorrelation::Print(const Option_t * opt) const
+{
+  
+  //Print some relevant parameters set for the analysis
+  if(! opt)
+    return;
+  
+  printf("**** Print %s %s ****\n", GetName(), GetTitle() ) ;
+  AliAnaPartCorrBaseClass::Print(" ");
+  
+  printf("Phi trigger particle-Hadron      <     %3.2f\n", fDeltaPhiMaxCut) ; 
+  printf("Phi trigger particle-Hadron      >     %3.2f\n", fDeltaPhiMinCut) ;
+  printf("Isolated Trigger?  %d\n", fSelectIsolated) ;
+  printf("Phi trigger particle-UeHadron    <    %3.2f\n", fUeDeltaPhiMaxCut) ; 
+  printf("Phi trigger particle-UeHadron    >    %3.2f\n", fUeDeltaPhiMinCut) ;
+  printf("Several UE?  %d\n", fMakeSeveralUE) ;
+  printf("Name of AOD Pi0 Branch %s \n",fPi0AODBranchName.Data());
+  printf("Do Decay-hadron correlation ?  %d\n", fPi0Trigger) ;
+  printf("Select absolute leading for cluster triggers ?  %d\n", fMakeAbsoluteLeading) ;
+  printf("Trigger pt bins  %d\n", fNAssocPtBins) ;
+  for (Int_t ibin = 0; ibin<fNAssocPtBins; ibin++) {
+    printf("\t bin %d = [%2.1f,%2.1f]\n", ibin, fAssocPtBinLimit[ibin], fAssocPtBinLimit[ibin+1]) ;
+  }
+  
+} 
+
+//____________________________________________________________
+void AliAnaParticleHadronCorrelation::SetNAssocPtBins(Int_t n)
 {
   // Set number of bins
   
+  fNAssocPtBins  = n ; 
+  
+  
   if(n < 10 && n > 0)
   {
-    fNTriggerPtBins  = n ; 
+    fNAssocPtBins  = n ; 
   }
   else 
   {
     printf("n = larger than 9 or too small, set to 9 \n");
-    fNTriggerPtBins = 9;
+    fNAssocPtBins = 9;
   }
 }
 
-//____________________________________________________________________________
-void AliAnaParticleHadronCorrelation::SetTriggerPtBinLimit(Int_t ibin, Float_t pt)
+//______________________________________________________________________________
+void AliAnaParticleHadronCorrelation::SetAssocPtBinLimit(Int_t ibin, Float_t pt)
 { 
   // Set the list of limits for the trigger pt bins
   
-  if(ibin <= fNTriggerPtBins || ibin >= 0) 
+  if(ibin <= fNAssocPtBins || ibin >= 0) 
   {
-    fTriggerPtBinLimit[ibin] = pt  ;
+    fAssocPtBinLimit[ibin] = pt  ;
   }
   else {
-    printf("AliAnaParticleHadronCorrelation::SetTriggerPtBinLimit() - bin  number too large %d > %d or small, nothing done\n", ibin, fNTriggerPtBins) ; 
+    printf("AliAnaParticleHadronCorrelation::SetAssocPtBinLimit() - bin  number too large %d > %d or small, nothing done\n", ibin, fNAssocPtBins) ; 
     
   }
 }
index 668b313ea7b92925dfe9b676b2eb2fde71f55a76..49110d7ed247788fe2c97e92c38d54676c8562af 100755 (executable)
@@ -96,8 +96,8 @@ class AliAnaParticleHadronCorrelation : public AliAnaPartCorrBaseClass {
 
   void         SetPi0AODBranchName(TString n)  { fPi0AODBranchName = n    ; }
   
-  void         SetNTriggerPtBins(Int_t n) ;     
-  void         SetTriggerPtBinLimit(Int_t ibin, Float_t pt) ;
+  void         SetNAssocPtBins(Int_t n) ;     
+  void         SetAssocPtBinLimit(Int_t ibin, Float_t pt) ;
                 
  private:
   
@@ -113,8 +113,8 @@ class AliAnaParticleHadronCorrelation : public AliAnaPartCorrBaseClass {
   Bool_t       fMakeAbsoluteLeading ;          // requesting absolute leading while it is cluster triggers
   Int_t        fLeadingTriggerIndex ;          // Store here per event the trigger index, to avoid too many loops
   
-  Int_t        fNTriggerPtBins ;               // Number of trigger bins under study
-  Float_t      fTriggerPtBinLimit[10] ;        // Trigger pt limtis
+  Int_t        fNAssocPtBins ;                 // Number of associated pT bins under study
+  Float_t      fAssocPtBinLimit[10] ;          // Associated pT under study
   
   //Histograms
 
@@ -149,20 +149,20 @@ class AliAnaParticleHadronCorrelation : public AliAnaPartCorrBaseClass {
   TH2F *       fhPtHbpUeRightCharged  ;        //! Trigger particle -underlying charged hadron momentim HBP histogram  
 
   //for pout and kt extraction
-  TH2F *       fhPtTrigPout  ;                 //! Pout =associated pt*sin(delta phi) distribution vs trigger pt vs associated pt
-  TH2F *       fhPtAssocDeltaPhi  ;            //! Pout =associated pt*sin(delta phi) distribution
+  TH2F *       fhPtTrigPout  ;                 //! Pout =associated pt*sin(delta phi) distribution vs trigger pt 
   TH2F *       fhPtTrigCharged ;               //! trigger and correlated particl pt, to be used for mean value for kt 
   
   //if different multiplicity analysis asked
-  TH2F **      fhTrigDeltaPhiCharged ;         //! differences of phi between trigger and charged hadrons
-  TH2F **      fhTrigDeltaEtaCharged ;         //! differences of eta between trigger and charged hadrons
-  TH2F **      fhTrigCorr  ;                   //! Trigger particle -charged hadron momentim imbalance histogram
-  TH2F **      fhTrigUeCorr  ;                 //! Trigger particle -UE charged hadron momentim imbalance histogram
+  TH2F **      fhTrigDeltaPhiCharged ;         //![GetMultiBin()] differences of phi between trigger and charged hadrons
+  TH2F **      fhTrigDeltaEtaCharged ;         //![GetMultiBin()] differences of eta between trigger and charged hadrons
+  TH2F **      fhTrigCorr  ;                   //![GetMultiBin()] Trigger particle -charged hadron momentim imbalance histogram
+  TH2F **      fhTrigUeCorr  ;                 //![GetMultiBin()] Trigger particle -UE charged hadron momentim imbalance histogram
     
-  TH1F *       fhTrigPt[10] ;                  //! add explanation
-  TH1F *       fhDphiTrigPtAssocPt[10];        //! add explanation
-  TH1F *       fhAssocPtBkg[10];               //! add explanation
-  TH1F *       fhXE[10] ;                      //! add explanation
+  TH2F *       fhAssocPt ;                     //! Trigger pT vs associated pT 
+  TH2F *       fhAssocPtBkg;                   //! Trigger pT vs associated pT for background
+  TH2F **      fhDeltaPhiAssocPtBin;           //![fNAssocPtBins] Trigger pT vs dPhi for different associated pt bins
+  TH2F **      fhDeltaPhiBradAssocPtBin;       //![fNAssocPtBins] Trigger pT vs dPhi Brad (?) for different associated pt bins
+  TH2F **      fhXEAssocPtBin ;                //![fNAssocPtBins] Trigger pT vs xE for different associated pt bins
   
   //trigger-neutral histograms
   TH2F *       fhDeltaPhiDeltaEtaNeutral ;     //! differences of eta and phi between trigger and neutral hadrons (pi0)
@@ -209,7 +209,7 @@ class AliAnaParticleHadronCorrelation : public AliAnaPartCorrBaseClass {
   TH2F *       fhMCPtAssocDeltaPhi  ;          //! Pout =associated pt*sin(delta phi) distribution
 
        
-  ClassDef(AliAnaParticleHadronCorrelation,7)
+  ClassDef(AliAnaParticleHadronCorrelation,8)
 } ;
  
 
index 2fc81bf9563d4279eb8c3b9357b4799e3591b7e2..7c913913e402a1575abfbe9ad70a3f68907a6b6c 100755 (executable)
@@ -180,7 +180,6 @@ Bool_t  AliAnaPhoton::ClusterSelected(AliVCluster* calo, TLorentzVector mom)
     return kFALSE ;
   }
   else if(GetDebug() > 2) printf("\t Bad channel cut passed %4.2f > %2.2f \n",distBad, fMinDist);
-  //printf("Cluster %d Pass Bad Dist Cut \n",icalo);
 
   if(GetDebug() > 0) 
     printf("AliAnaPhoton::ClusterSelected() Current Event %d; After  selection : E %2.2f, pT %2.2f, Ecl %2.2f, phi %2.2f, eta %2.2f\n",
@@ -1426,7 +1425,7 @@ TList *  AliAnaPhoton::GetCreateOutputObjects()
   }//Histos with MC
     
   //Store calo PID histograms
-  if(fRejectTrackMatch && IsCaloPIDOn()){
+  if(fRejectTrackMatch){
     TList * caloPIDHistos = GetCaloPID()->GetCreateOutputObjects() ;
     for(Int_t i = 0; i < caloPIDHistos->GetEntries(); i++) {
       outputContainer->Add(caloPIDHistos->At(i)) ;