optionally when checking the primary acceptance, check the calorimeter real acceptanc...
authorgconesab <gustavo.conesa.balbastre@cern.ch>
Thu, 31 Jul 2014 11:59:56 +0000 (13:59 +0200)
committergconesab <gustavo.conesa.balbastre@cern.ch>
Thu, 31 Jul 2014 13:58:09 +0000 (15:58 +0200)
PWGGA/CaloTrackCorrelations/AliAnaParticleIsolation.cxx
PWGGA/CaloTrackCorrelations/AliAnaParticleIsolation.h

index 53fb9e9..72861ee 100755 (executable)
@@ -61,7 +61,8 @@ ClassImp(AliAnaParticleIsolation)
 
 //______________________________________________________________________________
 AliAnaParticleIsolation::AliAnaParticleIsolation() : 
-AliAnaCaloTrackCorrBaseClass(),   fCalorimeter(""), 
+AliAnaCaloTrackCorrBaseClass(),
+fCalorimeter(""),                 fIsoDetector(""),
 fReMakeIC(0),                     fMakeSeveralIC(0),               
 fFillPileUpHistograms(0),
 fFillTMHisto(0),                  fFillSSHisto(1),
@@ -1254,6 +1255,8 @@ TObjString *  AliAnaParticleIsolation::GetAnalysisCuts()
   parList+=onePar ;    
   snprintf(onePar, buffersize,"Calorimeter: %s\n",fCalorimeter.Data()) ;
   parList+=onePar ;
+  snprintf(onePar, buffersize,"Isolation Cand Detector: %s\n",fIsoDetector.Data()) ;
+  parList+=onePar ;
   snprintf(onePar, buffersize,"fReMakeIC =%d (Flag for reisolation during histogram filling) \n",fReMakeIC) ;
   parList+=onePar ;
   snprintf(onePar, buffersize,"fMakeSeveralIC=%d (Flag for isolation with several cuts at the same time ) \n",fMakeSeveralIC) ;
@@ -2394,7 +2397,7 @@ TList *  AliAnaParticleIsolation::GetCreateOutputObjects()
           }
        }
         
-        if(fCalorimeter=="EMCAL" && fTRDSMCovered >= 0)
+        if(fIsoDetector=="EMCAL" && fTRDSMCovered >= 0)
         {
           fhPtLambda0TRD[iso]  = new TH2F
           (Form("hPtLambda0TRD%s",isoName[iso].Data()),
@@ -2966,7 +2969,9 @@ void AliAnaParticleIsolation::InitParameters()
   SetAODObjArrayName("IsolationCone");  
   AddToHistogramsName("AnaIsolation_");
   
-  fCalorimeter = "PHOS" ;
+  fCalorimeter = "EMCAL" ;
+  fIsoDetector = "EMCAL" ;
+  
   fReMakeIC = kFALSE ;
   fMakeSeveralIC = kFALSE ;
   
@@ -3089,7 +3094,6 @@ void  AliAnaParticleIsolation::MakeAnalysisFillHistograms()
   //In case of simulated data, fill acceptance histograms
   if(IsDataMC()) FillAcceptanceHistograms();
   
-  
   //Loop on stored AOD
   Int_t naod = GetInputAODBranch()->GetEntriesFast();
   if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Histo aod branch entries %d\n", naod);
@@ -3295,10 +3299,11 @@ void  AliAnaParticleIsolation::MakeAnalysisFillHistograms()
   
 }
 
-//______________________________________________________
+//______________________________________________________________________
 void AliAnaParticleIsolation::FillAcceptanceHistograms()
 {
-  //Fill acceptance histograms if MC data is available
+  // Fill acceptance histograms if MC data is available
+  // Only when particle is in the calorimeter. Rethink if CTS is used.
   
   //Double_t photonY   = -100 ;
   Double_t photonE   = -1 ;
@@ -3310,7 +3315,6 @@ void AliAnaParticleIsolation::FillAcceptanceHistograms()
   Int_t    status    =  0 ;
   Int_t    tag       =  0 ;
   Int_t    mcIndex   =  0 ;
-  Bool_t   inacceptance = kFALSE;
   Int_t    nprim     = 0;
   
   TParticle        * primStack = 0;
@@ -3371,9 +3375,12 @@ void AliAnaParticleIsolation::FillAcceptanceHistograms()
     }
     
     // Select only photons in the final state
-    if(pdg    != 22 ) continue ;
+    if(pdg != 22 ) continue ;
     
-    if(status != 1  ) continue ;
+    // Consider only final state particles, but this depends on generator,
+    // status 1 is the usual one, in case of not being ok, leave the possibility
+    // to not consider this.
+    if(status != 1 && GetMCAnalysisUtils()->GetMCGenerator()!="" ) continue ;
     
     // If too small or too large pt, skip, same cut as for data analysis
     photonPt  = lv.Pt () ;
@@ -3388,12 +3395,18 @@ void AliAnaParticleIsolation::FillAcceptanceHistograms()
     
     // Check if photons hit the Calorimeter approximate acceptance
     // Not too realistic acceptance, check later what to do.
-    inacceptance = kFALSE;
-    if(GetFiducialCut()->IsInFiducialCut(lv,fCalorimeter))
-      inacceptance = kTRUE ;
-    
-    if( !inacceptance ) continue;
-    
+    // Rethink if trigger particle is in CTS and not Calorimeters
+    if(IsRealCaloAcceptanceOn() && fIsoDetector!="CTS") // defined on base class
+    {
+      if(GetReader()->ReadStack()          &&
+         !GetCaloUtils()->IsMCParticleInCalorimeterAcceptance(fIsoDetector, primStack)) continue ;
+      if(GetReader()->ReadAODMCParticles() &&
+         !GetCaloUtils()->IsMCParticleInCalorimeterAcceptance(fIsoDetector, primAOD  )) continue ;
+    }
+  
+    // Check same fidutial borders as in data analysis on top of real acceptance if real was requested.
+    if(!GetFiducialCut()->IsInFiducialCut(lv,fIsoDetector)) continue ;
+  
     // Get tag of this particle photon from fragmentation, decay, prompt ...
     // Set the origin of the photon.
     tag = GetMCAnalysisUtils()->CheckOrigin(i,GetReader());
@@ -3466,7 +3479,10 @@ void AliAnaParticleIsolation::FillAcceptanceHistograms()
         partInConePhi    = mcisopAOD->Phi();
       }
       
-      if( partInConeStatus != 1 ) continue;
+      // Consider only final state particles, but this depends on generator,
+      // status 1 is the usual one, in case of not being ok, leave the possibility
+      // to not consider this.
+      if( partInConeStatus != 1 && GetMCAnalysisUtils()->GetMCGenerator()!="" ) continue ;
       
       if( partInConeMother == i ) continue;
       
@@ -3477,6 +3493,10 @@ void AliAnaParticleIsolation::FillAcceptanceHistograms()
       // if(vmcv.Perp()>1)
       //   continue;
       
+      //
+      // Add here Acceptance cut???, charged particles CTS fid cut, neutral Calo real acceptance.
+      //
+      
       dR = GetIsolationCut()->Radius(photonEta, photonPhi, partInConeEta, partInConePhi);
       
       if(dR > GetIsolationCut()->GetConeSize())
@@ -3802,6 +3822,7 @@ void AliAnaParticleIsolation::Print(const Option_t * opt) const
   printf("ReMake Isolation          = %d \n",  fReMakeIC) ;
   printf("Make Several Isolation    = %d \n",  fMakeSeveralIC) ;
   printf("Calorimeter for isolation = %s \n",  fCalorimeter.Data()) ;
+  printf("Detector for candidate isolation = %s \n", fIsoDetector.Data()) ;
   
   if(fMakeSeveralIC)
   {
index c0c2411..212307f 100755 (executable)
@@ -77,6 +77,7 @@ class AliAnaParticleIsolation : public AliAnaCaloTrackCorrBaseClass {
   // Analysis Setters and Getters
   
   TString      GetCalorimeter()                const { return fCalorimeter       ; }
+  TString      GetTriggerDetector()            const { return fIsoDetector       ; }
   Int_t        GetNCones()                     const { return fNCones            ; }
   Int_t        GetNPtThresFrac()               const { return fNPtThresFrac      ; }
   Float_t      GetConeSizes(Int_t i)           const { return fConeSizes[i]      ; }
@@ -88,6 +89,7 @@ class AliAnaParticleIsolation : public AliAnaCaloTrackCorrBaseClass {
   Int_t        GetMCIndex(Int_t mcTag);
   
   void         SetCalorimeter(TString & det)         { fCalorimeter     = det    ; }
+  void         SetTriggerDetector(TString & det)     { fIsoDetector     = det    ; }
   void         SetNCones(Int_t ncs)                  { fNCones          = ncs    ; }
   void         SetNPtThresFrac(Int_t npt)            { fNPtThresFrac    = npt    ; }
   void         SetConeSizes(Int_t i, Float_t r)      { fConeSizes[i]    = r      ; }
@@ -157,6 +159,7 @@ class AliAnaParticleIsolation : public AliAnaCaloTrackCorrBaseClass {
  private:
   
   TString  fCalorimeter ;                         // Calorimeter where neutral particles in cone for isolation are;
+  TString  fIsoDetector ;                         // Candidate particle for isolation detector ;
   Bool_t   fReMakeIC ;                            // Do isolation analysis
   Bool_t   fMakeSeveralIC ;                       // Do analysis for different IC
   Bool_t   fFillPileUpHistograms;                 // Fill pile-up related histograms