]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Fix to make the analysis for multiple isolation cuts parameters work again
authorgconesab <gconesab@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sat, 18 Feb 2012 16:30:11 +0000 (16:30 +0000)
committergconesab <gconesab@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sat, 18 Feb 2012 16:30:11 +0000 (16:30 +0000)
Add debug information in isolation analysis

PWG/CaloTrackCorrBase/AliIsolationCut.cxx
PWG/CaloTrackCorrBase/AliIsolationCut.h
PWGGA/CaloTrackCorrelations/AliAnaParticleIsolation.cxx
PWGGA/CaloTrackCorrelations/AliAnaParticleIsolation.h

index 502ab1791862d58925758edbeb0e3efe7fdb5362..c6ed24dd028e426f2760d6ef372ab1ebf60d498f 100755 (executable)
@@ -51,7 +51,8 @@ fPtThreshold(0.),
 fSumPtThreshold(0.), 
 fPtFraction(0.), 
 fICMethod(0),
-fPartInCone(0)
+fPartInCone(0),
+fDebug(-1)
 {
   //default ctor
   
@@ -113,10 +114,10 @@ void  AliIsolationCut::MakeIsolationCut(const TObjArray * plCTS,
                                         Bool_t  & isolated) const
 {  
   //Search in cone around a candidate particle if it is isolated 
+  Float_t ptC   = pCandidate->Pt() ;
   Float_t phiC  = pCandidate->Phi() ;
   if(phiC<0) phiC+=TMath::TwoPi();
   Float_t etaC  = pCandidate->Eta() ;
-  Float_t ptC   = pCandidate->Pt() ;
   Float_t pt    = -100. ;
   Float_t eta   = -100. ;
   Float_t phi   = -100. ;
@@ -126,6 +127,16 @@ void  AliIsolationCut::MakeIsolationCut(const TObjArray * plCTS,
   nfrac     = 0 ;
   coneptsum = 0.; 
   isolated  = kFALSE;
+
+  if(fDebug>0) 
+  {
+    printf("AliIsolationCut::MakeIsolationCut() - Cadidate pT %2.2f, eta %2.2f, phi %2.2f, cone %1.2f, thres %2.2f, Fill AOD? %d",
+           pCandidate->Pt(), pCandidate->Eta(), pCandidate->Phi()*TMath::RadToDeg(), fConeSize,fPtThreshold,bFillAOD);
+    if(plCTS) printf(", nTracks %d"  ,plCTS->GetEntriesFast());
+    if(plNe)  printf(", nClusters %d",plNe ->GetEntriesFast());
+    
+    printf("\n");
+  }
   
   //Initialize the array with refrences
   TObjArray * refclusters = 0x0;
@@ -177,8 +188,13 @@ void  AliIsolationCut::MakeIsolationCut(const TObjArray * plCTS,
 
       rad = Radius(etaC, phiC, eta, phi);
       
+      if(fDebug>0) 
+        printf("\t track %d, pT %2.2f, eta %1.2f, phi %2.2f, R candidate %2.2f", ipr,pt,eta,phi,rad);
+               
       if(rad < fConeSize)
       {
+        if(fDebug>0)  printf(" -  inside candidate cone");
+
         if(bFillAOD)
         {
           ntrackrefs++;
@@ -194,15 +210,21 @@ void  AliIsolationCut::MakeIsolationCut(const TObjArray * plCTS,
           reftracks->Add(track);
         }
         
-        //printf("charged in isolation cone pt %f, phi %f, eta %f, R %f \n",pt,phi,eta,rad);
+        
         coneptsum+=pt;
         if(pt > fPtThreshold )    n++;
         if(pt > fPtFraction*ptC ) nfrac++;  
         
       } // Inside cone
+
+      if(fDebug>0)  printf("\n");
+
     }// charged particle loop
+    
+    
   }//Tracks
   
+
   //Check neutral particles in cone.  
   if(plNe && 
      (fPartInCone==kOnlyNeutral || fPartInCone==kNeutralAndCharged))
@@ -267,8 +289,13 @@ void  AliIsolationCut::MakeIsolationCut(const TObjArray * plCTS,
 
       rad = Radius(etaC, phiC, eta, phi);
       
+      if(fDebug>0) 
+        printf("\t cluster %d, pT %2.2f, eta %1.2f, phi %2.2f, R candidate %2.2f", ipr,pt,eta,phi,rad);
+      
       if(rad < fConeSize)
       {
+        if(fDebug>0)  printf(" - inside candidate cone");
+
         if(bFillAOD) 
         {
           nclusterrefs++;
@@ -284,7 +311,6 @@ void  AliIsolationCut::MakeIsolationCut(const TObjArray * plCTS,
           refclusters->Add(calo);
         }
         
-        //printf("neutral in isolation cone pt %f, phi %f, eta %f, R %f \n",pt,phi,eta,rad);
         coneptsum+=pt;
         if(pt > fPtThreshold )   n++;
         //if fPtFraction*ptC<fPtThreshold then consider the fPtThreshold directly
@@ -299,11 +325,12 @@ void  AliIsolationCut::MakeIsolationCut(const TObjArray * plCTS,
         
       }//in cone
       
+      if(fDebug>0)  printf("\n");
+
     }// neutral particle loop
   
   }//neutrals
   
-  //printf("Isolation Cut: in cone with: pT>pTthres %d, pT > pTfrac*pTcandidate %d \n",n,nfrac);
   
   //Add reference arrays to AOD when filling AODs only
   if(bFillAOD) 
index 0fc53a18f75edf113377e938c23ac914ad57171b..70e0eeea41a270d4bdf19eaaa770e0f8c9be386d 100755 (executable)
@@ -66,7 +66,7 @@ class AliIsolationCut : public TObject {
   void       SetPtFraction(Float_t pt)      { fPtFraction     = pt   ; }
   void       SetICMethod(Int_t i )          { fICMethod       = i    ; }
   void       SetParticleTypeInCone(Int_t i) { fPartInCone     = i    ; }
-  
+  void       SetDebug(Int_t d)              { fDebug          = d    ; }
  private:
   
   Float_t    fConeSize ;       // Size of the isolation cone 
@@ -81,10 +81,12 @@ class AliIsolationCut : public TObject {
   Int_t      fPartInCone;      // Type of particles inside cone:
                                // kNeutralAndCharged, kOnlyNeutral, kOnlyCharged
 
+  Int_t      fDebug;           // Debug level
+  
   AliIsolationCut(              const AliIsolationCut & g) ; // cpy ctor
   AliIsolationCut & operator = (const AliIsolationCut & g) ; // cpy assignment
   
-  ClassDef(AliIsolationCut,4)
+  ClassDef(AliIsolationCut,5)
 } ;
 
 
index 1bc1bec913a0a935bba31027864faa9e3700cc1a..c7e3d054ba69cb8a5cb045164df1124c201937dc 100755 (executable)
@@ -911,6 +911,23 @@ TList *  AliAnaParticleIsolation::GetCreateOutputObjects()
   
 }
 
+//__________________________________
+void AliAnaParticleIsolation::Init()
+{
+  // Do some checks and init stuff
+  
+  // In case of several cone and thresholds analysis, open the cuts for the filling of the 
+  // track and cluster reference arrays in cone when done in the MakeAnalysisFillAOD(). 
+  // The different cones, thresholds are tested for this list of tracks, clusters.
+  if(fMakeSeveralIC)
+  {
+    printf("AliAnaParticleIsolation::Init() - Open default isolation cuts for multiple Isolation analysis\n");
+    GetIsolationCut()->SetPtThreshold(100);
+    GetIsolationCut()->SetPtFraction(100);
+    GetIsolationCut()->SetConeSize(1);
+  }
+}
+
 //____________________________________________
 void AliAnaParticleIsolation::InitParameters()
 {
@@ -985,9 +1002,10 @@ void  AliAnaParticleIsolation::MakeAnalysisFillAOD()
     //If too small or too large pt, skip
     if(aodinput->Pt() < GetMinPt() || aodinput->Pt() > GetMaxPt() ) continue ; 
     
-    //check if it is low pt trigger particle, then adjust the isolation method
-    if(aodinput->Pt() < GetIsolationCut()->GetPtThreshold() || 
-       aodinput->Pt() < GetIsolationCut()->GetSumPtThreshold())
+    //check if it is low pt trigger particle
+    if((aodinput->Pt() < GetIsolationCut()->GetPtThreshold() || 
+        aodinput->Pt() < GetIsolationCut()->GetSumPtThreshold()) && 
+       !fMakeSeveralIC)
     {
       continue ; //trigger should not come from underlying event
     }
@@ -1085,9 +1103,11 @@ void  AliAnaParticleIsolation::MakeAnalysisFillHistograms()
     if(pt < GetMinPt() || pt > GetMaxPt() ) continue ; 
     
     // --- In case of redoing isolation from delta AOD ----
-    if(fMakeSeveralIC) {
+    if(fMakeSeveralIC) 
+    {
       //Analysis of multiple IC at same time
       MakeSeveralICAnalysis(aod);
+      continue;
     }
     else if(fReMakeIC)
     {
@@ -1290,6 +1310,8 @@ void  AliAnaParticleIsolation::MakeSeveralICAnalysis(AliAODPWG4ParticleCorrelati
   Float_t ptC = ph->Pt();      
   Int_t tag   = ph->GetTag();
   
+  if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeSeveralICAnalysis() - Isolate pT %2.2f\n",ptC);
+  
   //Keep original setting used when filling AODs, reset at end of analysis  
   Float_t ptthresorg = GetIsolationCut()->GetPtThreshold();
   Float_t ptfracorg  = GetIsolationCut()->GetPtFraction();
@@ -1305,13 +1327,14 @@ void  AliAnaParticleIsolation::MakeSeveralICAnalysis(AliAODPWG4ParticleCorrelati
   {
     GetIsolationCut()->SetConeSize(fConeSizes[icone]);
     coneptsum = 0 ;
-    
+        
     //Loop on ptthresholds
     for(Int_t ipt = 0; ipt<fNPtThresFrac ;ipt++)
     {
       n[icone][ipt]=0;
       nfrac[icone][ipt]=0;
       GetIsolationCut()->SetPtThreshold(fPtThresholds[ipt]);
+            
       GetIsolationCut()->MakeIsolationCut(ph->GetObjArray(GetAODObjArrayName()+"Tracks"), 
                                           ph->GetObjArray(GetAODObjArrayName()+"Clusters"),
                                           GetReader(), GetCaloPID(),
@@ -1319,6 +1342,10 @@ void  AliAnaParticleIsolation::MakeSeveralICAnalysis(AliAODPWG4ParticleCorrelati
                                           n[icone][ipt],nfrac[icone][ipt],coneptsum, isolated);
       
       //Normal ptThreshold cut
+
+      if(GetDebug() > 0) printf(" AliAnaParticleIsolation::MakeSeveralICAnalysis() - cone size %1.1f, ptThres  %1.1f, n %d, nfrac %d, coneptsum %2.2f, isolated %d\n",
+                                fConeSizes[icone],fPtThresholds[icone],n[icone][ipt],nfrac[icone][ipt],coneptsum, isolated);
+
       if(n[icone][ipt] == 0) 
       {
         fhPtThresIsolated[icone][ipt]->Fill(ptC);
index 50cf7cdf31a74f55212f24f09c605b5a884a681f..ae93cf108154150312d751821723e0be3711a284 100755 (executable)
@@ -37,6 +37,8 @@ class AliAnaParticleIsolation : public AliAnaCaloTrackCorrBaseClass {
   
   TList      * GetCreateOutputObjects() ;
   
+  void         Init() ;
+
   void         InitParameters() ;
   
   void         MakeAnalysisFillAOD()  ;
@@ -223,7 +225,7 @@ class AliAnaParticleIsolation : public AliAnaCaloTrackCorrBaseClass {
   AliAnaParticleIsolation(              const AliAnaParticleIsolation & iso) ; // cpy ctor
   AliAnaParticleIsolation & operator = (const AliAnaParticleIsolation & iso) ; // cpy assignment
   
-  ClassDef(AliAnaParticleIsolation,10)
+  ClassDef(AliAnaParticleIsolation,11)
 } ;