]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGLF/totEt/AliAnalysisEt.cxx
Changing cluster E cut to cluster ET cut and changing name of function for correcting...
[u/mrichter/AliRoot.git] / PWGLF / totEt / AliAnalysisEt.cxx
index 3cf6428b5b9a7a9c1313031df269bd0f3dff2370..7e42d329ec399195d77edbc83d39a6013ad9a376 100644 (file)
 #include "TString.h"
 #include "AliCentrality.h"
 #include "AliAnalysisEtSelector.h"
-
-              //#include "THnSparse.h"
+#include "AliAnalysisEtTrackMatchCorrections.h"
+#include "AliAnalysisEtRecEffCorrection.h"
+#include "TFile.h"
+#include "TVector3.h"
 
 using namespace std;
 ClassImp(AliAnalysisEt);
@@ -56,12 +58,17 @@ Float_t AliAnalysisEt::fgRAxis[48]={-2.,-1.,0.,0.0005,0.001,0.0015,0.002,0.0025,
 
 
 AliAnalysisEt::AliAnalysisEt() : AliAnalysisEtCommon()
+                              ,fTmCorrections(0)
+                              ,fReCorrections(0)
                               ,fEventSummaryTree(0)
                               ,fAcceptedTree(0)
                               ,fDepositTree(0)
                               ,fTotEt(0)
+                              ,fTotEtAcc(0)
                               ,fTotNeutralEt(0)
+                              ,fTotNeutralEtAcc(0)
                               ,fTotChargedEt(0)
+                              ,fTotChargedEtAcc(0)
                               ,fMultiplicity(0)
                               ,fChargedMultiplicity(0)
                               ,fNeutralMultiplicity(0)
@@ -154,6 +161,8 @@ AliAnalysisEt::AliAnalysisEt() : AliAnalysisEtCommon()
 
 AliAnalysisEt::~AliAnalysisEt()
 {//Destructor
+  delete fTmCorrections;
+  delete fReCorrections;
   if(fDepositTree){
     fDepositTree->Clear();
     delete fDepositTree; // optional TTree
@@ -163,11 +172,18 @@ AliAnalysisEt::~AliAnalysisEt()
     fEventSummaryTree->Clear();
     delete fEventSummaryTree;
   }
+  if(fAcceptedTree)
+  {
+    fAcceptedTree->Clear();
+    delete fAcceptedTree;
+  }
   delete fHistEt; //Et spectrum
   delete fHistNeutralMult; //Neutral multiplicity
   delete fHistPhivsPtPos; //phi vs pT plot for positive tracks
-  delete fHistPhivsPtNeg; //phi vs pT plot for negative tracks
+  delete fHistPhivsPtNeg; //phi vs pT Moplot for negative tracks
   //delete fCentrality;//this code does not actually own AliCentrality so we don't have to worry about deleting it...  we just borrow it...
+  delete fCutFlow;
+  delete fSelector;
 }
 
 void AliAnalysisEt::FillOutputList(TList *list)
@@ -195,6 +211,11 @@ void AliAnalysisEt::FillOutputList(TList *list)
 void AliAnalysisEt::Init()
 {// clear variables, set up cuts and PDG info
   AliAnalysisEtCommon::Init();
+  if(ReadCorrections("calocorrections.root") != 0)
+  {
+    // Shouldn't do this, why oh why are exceptions not allowed?
+    exit(-1);
+  }
   ResetEventValues();
 }
 
@@ -385,8 +406,11 @@ void AliAnalysisEt::CreateTrees()
   
     fEventSummaryTree = new TTree(treename, treename);
     fEventSummaryTree->Branch("fTotEt",&fTotEt,"fTotEt/D");
+    fEventSummaryTree->Branch("fTotEtAcc",&fTotEtAcc,"fTotEtAcc/D");
     fEventSummaryTree->Branch("fTotNeutralEt",&fTotNeutralEt,"fTotNeutralEt/D");
+    fEventSummaryTree->Branch("fTotNeutralEtAcc",&fTotNeutralEtAcc,"fTotNeutralEtAcc/D");
     fEventSummaryTree->Branch("fTotChargedEt",&fTotChargedEt,"fTotChargedEt/D");
+    fEventSummaryTree->Branch("fTotChargedEtAcc",&fTotChargedEtAcc,"fTotChargedEtAcc/D");
     fEventSummaryTree->Branch("fMultiplicity",&fMultiplicity,"fMultiplicity/I");
     fEventSummaryTree->Branch("fChargedMultiplicity",&fChargedMultiplicity,"fChargedMultiplicity/I");
     fEventSummaryTree->Branch("fNeutralMultiplicity",&fNeutralMultiplicity,"fNeutralMultiplicity/I");
@@ -540,8 +564,11 @@ void AliAnalysisEt::ResetEventValues()
 { // clear
   AliAnalysisEtCommon::ResetEventValues();
   fTotEt = 0;
+  fTotEtAcc = 0;
   fTotNeutralEt = 0;
-  fTotChargedEt  = 0;
+  fTotChargedEt = 0;
+  fTotNeutralEtAcc = 0;
+  fTotChargedEtAcc  = 0;
   fMultiplicity = 0;
   fChargedMultiplicity = 0;
   fNeutralMultiplicity = 0;
@@ -642,24 +669,46 @@ void AliAnalysisEt::ResetEventValues()
   return;
 }
 
-Double_t AliAnalysisEt::CalculateTransverseEnergy(AliESDCaloCluster* cluster)
-{ // based on cluster energy and cluster pos
-  
-  Float_t pos[3];
-  cluster->GetPosition(pos);
-  TVector3 cp(pos);
-  Double_t corrEnergy = 0;
-  
-  if(cluster->E() < 1.5)
-  {
-    corrEnergy =cluster->E()/(0.51 + 0.02*cluster->E());
-  }    
-  else
+Int_t AliAnalysisEt::ReadCorrections(TString filename)
+{
+  TFile *f = TFile::Open(filename, "READ");
+  if(f)
   {
-    corrEnergy =cluster->E()/(0.51 + 0.02*1.5);
+    TString det = "Phos";
+    if(fHistogramNameSuffix.Contains("Emcal"))
+    {
+      det = "Emcal";
+    }
+    cout<<"Histo name suffix "<<fHistogramNameSuffix<<endl;
+    TString name = "TmCorrections" + det;
+    std::cout << name << std::endl;
+    fTmCorrections = dynamic_cast<AliAnalysisEtTrackMatchCorrections*>(f->Get(name));
+    if(!fTmCorrections)
+    {
+      cout<<"No corrections with name "<<name<<endl;
+      Printf("Could not load TM corrections");
+      return -1;
+    }
+    name = "ReCorrections" + det;
+    fReCorrections = dynamic_cast<AliAnalysisEtRecEffCorrection*>(f->Get(name));
+    if(!fReCorrections)
+    {
+      Printf("Could not load rec eff corrections");
+      return -1;
+    }
+    return 0;
   }
-  //std::cout << "Original energy: " << cluster->E() << ", corrected energy: " << corrEnergy << std::endl;
+ return -1; 
+}
+
+Double_t AliAnalysisEt::CorrectForReconstructionEfficiency(const AliESDCaloCluster& cluster)
+{
+  Float_t pos[3];
+  cluster.GetPosition(pos);
+  TVector3 cp(pos);
+  Double_t corrEnergy = fReCorrections->CorrectedEnergy(cluster.E());
   
-  return corrEnergy * TMath::Sin(cp.Theta());
+  //std::cout << "Original energy: " << cluster.E() << ", corrected energy: " << corrEnergy << std::endl;
+  return TMath::Sin(cp.Theta())*corrEnergy;
 }