]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
add option for linear correction of weight, add option to not create and fill histogr...
authorgconesab <gconesab@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 18 Apr 2013 10:01:59 +0000 (10:01 +0000)
committergconesab <gconesab@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 18 Apr 2013 10:01:59 +0000 (10:01 +0000)
PWGGA/CaloTrackCorrelations/AliAnaInsideClusterInvariantMass.cxx
PWGGA/CaloTrackCorrelations/AliAnaInsideClusterInvariantMass.h

index 0fe575ade60d18ada8c74a4297bf882054466603..52ef21c983279bad42a4f553423d593bd8206a33 100755 (executable)
@@ -56,12 +56,14 @@ AliAnaInsideClusterInvariantMass::AliAnaInsideClusterInvariantMass() :
   fM02MaxCut(0),    fM02MinCut(0),       
   fMinNCells(0),    fMinBadDist(0),
   fFillAngleHisto(kFALSE),
+  fFillTMHisto(kFALSE),
   fFillTMResidualHisto(kFALSE),
   fFillSSExtraHisto(kFALSE),
   fFillMCFractionHisto(kFALSE),
   fFillSSWeightHisto(kFALSE),
   fFillEbinHisto(0),
   fSSWeightN(0),              fSSECellCutN(0),
+  fWSimu(0),
   fhMassM02CutNLocMax1(0),    fhMassM02CutNLocMax2(0),    fhMassM02CutNLocMaxN(0),
   fhAsymM02CutNLocMax1(0),    fhAsymM02CutNLocMax2(0),    fhAsymM02CutNLocMaxN(0),
   fhMassSplitECutNLocMax1(0), fhMassSplitECutNLocMax2(0), fhMassSplitECutNLocMaxN(0),
@@ -356,7 +358,15 @@ void AliAnaInsideClusterInvariantMass::FillSSWeightHistograms(AliVCluster *clus,
     for(Int_t iw = 0; iw < fSSWeightN; iw++)
     {
       GetCaloUtils()->GetEMCALRecoUtils()->SetW0(fSSWeight[iw]);
-      GetCaloUtils()->GetEMCALRecoUtils()->RecalculateClusterShowerShapeParameters(GetEMCALGeometry(), cells, clus);
+      //GetCaloUtils()->GetEMCALRecoUtils()->RecalculateClusterShowerShapeParameters(GetEMCALGeometry(), cells, clus);
+      
+      Float_t l0   = 0., l1   = 0.;
+      Float_t disp = 0., dEta = 0., dPhi    = 0.;
+      Float_t sEta = 0., sPhi = 0., sEtaPhi = 0.;
+      
+      RecalculateClusterShowerShapeParametersWithCellCut(GetEMCALGeometry(), cells, clus,l0,l1,disp,
+                                                         dEta, dPhi, sEta, sPhi, sEtaPhi,0);
+
       
       fhM02WeightPi0[nlm][iw]->Fill(energy,clus->GetM02());
       
@@ -377,7 +387,7 @@ void AliAnaInsideClusterInvariantMass::FillSSWeightHistograms(AliVCluster *clus,
       RecalculateClusterShowerShapeParametersWithCellCut(GetEMCALGeometry(), cells, clus,l0,l1,disp,
                                                          dEta, dPhi, sEta, sPhi, sEtaPhi,fSSECellCut[iec]);
       
-      
+      printf("E %f, l0 org %f, l0 new %f, slope %f\n",clus->E(),l0org,l0,fSSECellCut[iec]);
       fhM02ECellCutPi0[nlm][iec]->Fill(energy,l0);
       
     } // w0 loop
@@ -452,9 +462,11 @@ TList * AliAnaInsideClusterInvariantMass::GetCreateOutputObjects()
   
   TString sMatched[] = {"","Matched"};
   
+  Int_t nMatched = 2;
+  if(!fFillTMHisto) nMatched = 1;
   for(Int_t i = 0; i < n; i++)
   {
-    for(Int_t j = 0; j < 2; j++)
+    for(Int_t j = 0; j < nMatched; j++)
     {
       
       fhMassNLocMax1[i][j]  = new TH2F(Form("hMassNLocMax1%s%s",pname[i].Data(),sMatched[j].Data()),
@@ -1464,7 +1476,7 @@ TList * AliAnaInsideClusterInvariantMass::GetCreateOutputObjects()
     
   }
   
-  if(fFillTMResidualHisto)
+  if(fFillTMResidualHisto && fFillTMHisto)
   {
     for(Int_t i = 0; i < n; i++)
     {  
@@ -1524,7 +1536,7 @@ TList * AliAnaInsideClusterInvariantMass::GetCreateOutputObjects()
   
   if(fFillAngleHisto)
   {
-    for(Int_t j = 0; j < 2; j++)
+    for(Int_t j = 0; j < nMatched; j++)
     {  
       
       fhAnglePairNLocMax1[j]  = new TH2F(Form("hAnglePairNLocMax1%s",sMatched[j].Data()),
@@ -1572,7 +1584,7 @@ TList * AliAnaInsideClusterInvariantMass::GetCreateOutputObjects()
     }
   }
   
-  for(Int_t j = 0; j < 2; j++)
+  for(Int_t j = 0; j < nMatched; j++)
   {
     fhSplitEFractionvsAsyNLocMax1[j]     = new TH2F(Form("hSplitEFractionvsAsyNLocMax1%s",sMatched[j].Data()),
                                                     Form("(E1+E2)/E_{cluster} vs (E_{split1}-E_{split2})/(E_{split1}+E_{split2}) for N max  = 1, E>12, %s",sMatched[j].Data()),
@@ -1703,7 +1715,7 @@ TList * AliAnaInsideClusterInvariantMass::GetCreateOutputObjects()
       fhPi0CellEMaxFrac[nlm]  = new TH2F(Form("hPi0CellEMaxFracNLocMax%s",snlm[nlm].Data()),
                                                 Form("Selected #pi^{0}'s, NLM = %s: cluster E vs 1st loc. max. E / E cell i",snlm[nlm].Data()),
                                                 nptbins,ptmin,ptmax, 100,0,1);
-      fhPi0CellEMaxFrac[nlm]->SetYTitle("E_{Loc Max 1} / E_{cell 1}");
+      fhPi0CellEMaxFrac[nlm]->SetYTitle("E_{Loc Max 1} / E_{cell i}");
       fhPi0CellEMaxFrac[nlm]->SetXTitle("E_{cluster}");
       outputContainer->Add(fhPi0CellEMaxFrac[nlm]) ;
       
@@ -1826,15 +1838,17 @@ void  AliAnaInsideClusterInvariantMass::MakeAnalysisFillHistograms()
   {
     AliVCluster * cluster = (AliVCluster*) (pl->At(icluster)); 
 
+    Bool_t  matched   = IsTrackMatched(cluster,GetReader()->GetInputEvent());
+    if(!fFillTMHisto) continue ;
+    
     // Study clusters with large shape parameter
     Float_t en = cluster->E();
     Float_t l0 = cluster->GetM02();
     Int_t   nc = cluster->GetNCells();
     Float_t bd = cluster->GetDistanceToBadChannel() ; 
-
     
     //If too small or big E or low number of cells, or close to a bad channel skip it
-    if( en < GetMinEnergy() || en > GetMaxEnergy() || nc < fMinNCells || bd < fMinBadDist) continue ; 
+    if( en < GetMinEnergy() || en > GetMaxEnergy() || nc < fMinNCells || bd < fMinBadDist) continue ;
     
     TLorentzVector lv;
     cluster->GetMomentum(lv, GetVertex(0));
@@ -1875,9 +1889,7 @@ void  AliAnaInsideClusterInvariantMass::MakeAnalysisFillHistograms()
     Float_t splitFrac = (e1+e2)/en;
     Float_t asym = -10;
     if(e1+e2>0) asym = (e1-e2)/(e1+e2);
-    
-    Bool_t  matched   = IsTrackMatched(cluster,GetReader()->GetInputEvent());
-    
+        
     fhNLocMax[0][matched]->Fill(en,nMax);
     
     Int_t inlm = -1;
@@ -2573,7 +2585,10 @@ void AliAnaInsideClusterInvariantMass::RecalculateClusterShowerShapeParametersWi
     if(energy > 0 && eCell > eCellMin)
     {
       w  = GetCaloUtils()->GetEMCALRecoUtils()->GetCellWeight(eCell,energy);
-      
+
+      //correct weight, ONLY in simulation
+      w *= (1 - fWSimu * w );
+     
       etai=(Double_t)ieta;
       phii=(Double_t)iphi;
       
@@ -2627,6 +2642,9 @@ void AliAnaInsideClusterInvariantMass::RecalculateClusterShowerShapeParametersWi
     {
       w  = GetCaloUtils()->GetEMCALRecoUtils()->GetCellWeight(eCell,energy);
       
+      //correct weight, ONLY in simulation
+      w *= (1 - fWSimu * w );
+
       etai=(Double_t)ieta;
       phii=(Double_t)iphi;
       if(w > 0.0)
index 2fa48c167f366b98c3367d313ffd9dba40014a81..9ee9624e0f2254aa36c1972e40b4be1b378a6b5c 100755 (executable)
@@ -52,12 +52,17 @@ class AliAnaInsideClusterInvariantMass : public AliAnaCaloTrackCorrBaseClass {
 
   void         SetMinBadChannelDistance(Float_t cut)     { fMinBadDist  = cut ; }
 
+  void         SetWCorrectionParameter(Float_t p = 0.07) { fWSimu       = p   ; }
+  
   void         SwitchOnFillAngleHistograms()             { fFillAngleHisto      = kTRUE  ; }
   void         SwitchOffFillAngleHistograms()            { fFillAngleHisto      = kFALSE ; }
   
   void         SwitchOnFillExtraSSHistograms()           { fFillSSExtraHisto    = kTRUE  ; }
   void         SwitchOffFillExtraSSHistograms()          { fFillSSExtraHisto    = kFALSE ; }
 
+  void         SwitchOnFillTMHistograms()                { fFillTMHisto         = kTRUE  ; }
+  void         SwitchOffFillTMHistograms()               { fFillTMHisto         = kFALSE ; }
+  
   void         SwitchOnFillTMResidualHistograms()        { fFillTMResidualHisto = kTRUE  ; }
   void         SwitchOffFillTMResidualHistograms()       { fFillTMResidualHisto = kFALSE ; }
   
@@ -96,18 +101,22 @@ class AliAnaInsideClusterInvariantMass : public AliAnaCaloTrackCorrBaseClass {
   Float_t      fMinBadDist  ;          // Minimal distance to bad channel to accept cluster
   
   Bool_t       fFillAngleHisto;        // Fill splitted clusters angle histograms
+  Bool_t       fFillTMHisto ;          // Fill track matching histos,
   Bool_t       fFillTMResidualHisto ;  // Fill track matching histos, residuals
   Bool_t       fFillSSExtraHisto ;     // Fill shower shape extra histos
   Bool_t       fFillMCFractionHisto ;  // Fill MC energy fraction histos
   Bool_t       fFillSSWeightHisto ;    // Fill weigth histograms
   Bool_t       fFillEbinHisto ;        // Fill E bin histograms
-  
+
   Float_t      fSSWeight[10];          // List of weights to test
   Int_t        fSSWeightN;             // Total number of weights to test
   
   Float_t      fSSECellCut[10];        // List of cell min energy cuts to test
   Int_t        fSSECellCutN;           // Total number of cell min energy cuts to test
   
+  Float_t      fWSimu;                 // Slope of the linear correction factor for the shower
+                                       // shape weight in simulation, about 0.07
+  
   //Histograms
   
   TH2F       * fhMassNLocMax1[8][2]  ;                  //! Mass of 2 highest energy cells when 1 local max vs E, 1-6 for different MC particle types