]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - JETAN/AliJetESDReader.cxx
Changes to read input jet branch from InputEvent, needs to be set in Notify
[u/mrichter/AliRoot.git] / JETAN / AliJetESDReader.cxx
index 055f1e7467ce731bb900da809d1a241b26dfabd3..547730358ee52fc59096e7a2524858c0ed12e09f 100755 (executable)
@@ -45,8 +45,9 @@
 #include "AliESD.h"
 #include "AliESDtrack.h"
 #include "AliJetDummyGeo.h"
-#include "AliJetFillUnitArrayTracks.h"
-#include "AliJetFillUnitArrayEMCalDigits.h"
+#include "AliJetESDFillUnitArrayTracks.h"
+#include "AliJetESDFillUnitArrayEMCalDigits.h"
+#include "AliJetHadronCorrectionv1.h"
 #include "AliJetUnitArray.h"
 #include "AliAnalysisTask.h"
 
@@ -55,9 +56,6 @@ ClassImp(AliJetESDReader)
 AliJetESDReader::AliJetESDReader():
   AliJetReader(),  
   fGeom(0),
-  fChain(0x0),
-  fTree(0x0),
-  fESD(0x0),
   fHadCorr(0x0),
   fTpcGrid(0x0),
   fEmcalGrid(0x0),
@@ -66,10 +64,10 @@ AliJetESDReader::AliJetESDReader():
   fGrid2(0),
   fGrid3(0),
   fGrid4(0),
-  fPtCut(0),
-  fHCorrection(0),
-  fECorrection(0),
-  fEFlag(kFALSE),
+  fApplyElectronCorrection(kFALSE),
+  fApplyMIPCorrection(kTRUE),
+  fApplyFractionHadronicCorrection(kFALSE),
+  fFractionHadronicCorrection(0.3),
   fNumUnits(0),
   fDebug(0),
   fMass(0),
@@ -79,7 +77,6 @@ AliJetESDReader::AliJetESDReader():
   fDZ(0),
   fNeta(0),
   fNphi(0),
-  fArrayInitialised(0),
   fRefArray(0x0),
   fProcId(kFALSE)
 {
@@ -125,9 +122,7 @@ void AliJetESDReader::OpenInputFiles()
        
        if (strstr(name,pattern)){
         printf("Adding %s\n",name);
-        char path[256];
-        sprintf(path,"%s/%s/AliESDs.root",dirName,name);
-        fChain->AddFile(path);
+        fChain->AddFile(Form("%s/%s/AliESDs.root",dirName,name));
         a++;
        }
    }
@@ -151,8 +146,70 @@ void AliJetESDReader::OpenInputFiles()
 
 }
 
+//__________________________________________________________
+void AliJetESDReader::SetApplyMIPCorrection(Bool_t val)
+{
+  //
+  // Set flag to apply MIP correction fApplyMIPCorrection
+  // - exclusive with fApplyFractionHadronicCorrection
+  //
+
+  fApplyMIPCorrection = val;
+  if(fApplyMIPCorrection == kTRUE)
+    {
+      SetApplyFractionHadronicCorrection(kFALSE);
+      printf("Enabling MIP Correction \n");
+    }
+  else 
+    {
+      printf("Disabling MIP Correction \n");
+    }
+}
+
+//__________________________________________________________
+void AliJetESDReader::SetApplyFractionHadronicCorrection(Bool_t val)
+{
+  //
+  // Set flag to apply EMC hadronic correction fApplyFractionHadronicCorrection
+  // - exclusive with fApplyMIPCorrection
+  //
+
+  fApplyFractionHadronicCorrection = val;
+  if(fApplyFractionHadronicCorrection == kTRUE)
+    {
+      SetApplyMIPCorrection(kFALSE);
+      printf("Enabling Fraction Hadronic Correction \n");
+    }
+  else 
+    {
+      printf("Disabling Fraction Hadronic Correction \n");
+    }
+}
+
+//__________________________________________________________
+void AliJetESDReader::SetFractionHadronicCorrection(Double_t val)
+{
+  //
+  // Set value to fFractionHadronicCorrection (default is 0.3)
+  // apply EMC hadronic correction fApplyFractionHadronicCorrection
+  // - exclusive with fApplyMIPCorrection
+  //
+
+  fFractionHadronicCorrection = val;
+  if(fFractionHadronicCorrection > 0.0 && fFractionHadronicCorrection <= 1.0)
+    {
+      SetApplyFractionHadronicCorrection(kTRUE);
+      printf("Fraction Hadronic Correction %1.3f \n",fFractionHadronicCorrection);
+    }
+  else 
+    {
+      SetApplyFractionHadronicCorrection(kFALSE);
+    }
+}
+
+
 //____________________________________________________________________________
-void AliJetESDReader::SetInputEvent(TObject* esd, TObject* /*aod*/, TObject* /*mc*/) {
+void AliJetESDReader::SetInputEvent(const TObject* esd, const TObject* /*aod*/, const TObject* /*mc*/) {
     // Connect the tree
      fESD   = (AliESDEvent*) esd;
 }
@@ -247,7 +304,7 @@ void AliJetESDReader::CreateTasks(TChain* tree)
   // Create global reader task for analysis 
   fFillUnitArray = new TTask("fFillUnitArray","Fill unit array jet finder");
   // Create a task for to fill the charged particle information 
-  fFillUAFromTracks = new AliJetFillUnitArrayTracks(); 
+  fFillUAFromTracks = new AliJetESDFillUnitArrayTracks(); 
   fFillUAFromTracks->SetReaderHeader(fReaderHeader);
   fFillUAFromTracks->SetGeom(fGeom);
   fFillUAFromTracks->SetTPCGrid(fTpcGrid);
@@ -260,15 +317,17 @@ void AliJetESDReader::CreateTasks(TChain* tree)
       fFillUAFromTracks->SetGrid3(fGrid3);
       fFillUAFromTracks->SetGrid4(fGrid4);
     }
-  fFillUAFromTracks->SetHadCorrection(fHCorrection);
+  fFillUAFromTracks->SetApplyMIPCorrection(fApplyMIPCorrection);
   fFillUAFromTracks->SetHadCorrector(fHadCorr);
   // Create a task for to fill the neutral particle information 
-  fFillUAFromEMCalDigits = new AliJetFillUnitArrayEMCalDigits();
+  fFillUAFromEMCalDigits = new AliJetESDFillUnitArrayEMCalDigits();
   fFillUAFromEMCalDigits->SetReaderHeader(fReaderHeader);
   fFillUAFromEMCalDigits->SetGeom(fGeom);
   fFillUAFromEMCalDigits->SetTPCGrid(fTpcGrid);
   fFillUAFromEMCalDigits->SetEMCalGrid(fEmcalGrid);
-  fFillUAFromEMCalDigits->SetEleCorrection(fECorrection);
+  fFillUAFromEMCalDigits->SetApplyFractionHadronicCorrection(fApplyFractionHadronicCorrection);
+  fFillUAFromEMCalDigits->SetFractionHadronicCorrection(fFractionHadronicCorrection);
+   fFillUAFromEMCalDigits->SetApplyElectronCorrection(fApplyElectronCorrection);
   // Add the task to global task
   fFillUnitArray->Add(fFillUAFromTracks);
   fFillUnitArray->Add(fFillUAFromEMCalDigits);
@@ -289,7 +348,6 @@ Bool_t AliJetESDReader::ExecTasks(Bool_t procid, TRefArray* refArray)
 
   fProcId = procid;
   fRefArray = refArray;
-  vector<Float_t> vtmp(3);
 
   // clear momentum array
   ClearArray();
@@ -370,7 +428,7 @@ void AliJetESDReader::InitParameters()
 {
   // Initialise parameters
   fOpt = fReaderHeader->GetDetector();
-  fHadCorr        = 0;          // For hadron correction
+  //  fHadCorr        = 0;          // For hadron correction
   if(fEFlag==kFALSE){
     if(fOpt==0 || fOpt==1)  
       fECorrection    = 0;        // For electron correction
@@ -446,15 +504,6 @@ void AliJetESDReader::InitUnitArray()
          fGrid4->SetIndexIJ();
          n4 = fGrid4->GetNEntries();
 
-         if(fDebug>1) 
-           {
-             cout << "n0 cells: " << n0 << "phimin0: " << phimin0 << ", phimax0: " << phimax0 << endl;
-             cout << "n1 cells: " << n1 << "phimin1: " << phimin1 << ", phimax1: " << phimax1 << endl;
-             cout << "n2 cells: " << n2 << "phimin2: " << phimin2 << ", phimax2: " << phimax2 << endl;
-             cout << "n3 cells: " << n3 << "phimin3: " << phimin3 << ", phimax3: " << phimax3 << endl;
-             cout << "n4 cells: " << n4 << "phimin4: " << phimin4 << ", phimax4: " << phimax4 << endl;
-           }
-         
          nGaps = n0+n1+n2+n3+n4;
 
        }
@@ -483,43 +532,43 @@ void AliJetESDReader::InitUnitArray()
                if(nBin>=fNumUnits+nElements && nBin<fNumUnits+nElements+nGaps){
                  if(nBin<fNumUnits+nElements+n0)
                    {
-                     Float_t phi = eta = 0.;
-                     fGrid0->GetEtaPhiFromIndex2(nBin+1-(fNumUnits+nElements),phi,eta);
+                     Float_t phi0 = eta = 0.;
+                     fGrid0->GetEtaPhiFromIndex2(nBin+1-(fNumUnits+nElements),phi0,eta);
                      Deta = fGrid0->GetDeta(); 
                      Dphi = fGrid0->GetDphi(); 
-                     new ((*fUnitArray)[nBin]) AliJetUnitArray(nBin,0,eta,phi,0.,Deta,Dphi,kTpc,kOutJet,kPtSmaller,kPtSmaller,kBad,0.,-1);
+                     new ((*fUnitArray)[nBin]) AliJetUnitArray(nBin,0,eta,phi0,0.,Deta,Dphi,kTpc,kOutJet,kPtSmaller,kPtSmaller,kBad,0.,-1);
                    }
                  else if(nBin>=fNumUnits+nElements+n0 && nBin<fNumUnits+nElements+n0+n1)
                    {
-                     Float_t phi = eta = 0.;
-                     fGrid1->GetEtaPhiFromIndex2(nBin+1-(fNumUnits+nElements+n0),phi,eta);
+                     Float_t phi0 = eta = 0.;
+                     fGrid1->GetEtaPhiFromIndex2(nBin+1-(fNumUnits+nElements+n0),phi0,eta);
                      Deta = fGrid1->GetDeta(); 
                      Dphi = fGrid1->GetDphi(); 
-                     new ((*fUnitArray)[nBin]) AliJetUnitArray(nBin,0,eta,phi,0.,Deta,Dphi,kTpc,kOutJet,kPtSmaller,kPtSmaller,kBad,0.,-1);
+                     new ((*fUnitArray)[nBin]) AliJetUnitArray(nBin,0,eta,phi0,0.,Deta,Dphi,kTpc,kOutJet,kPtSmaller,kPtSmaller,kBad,0.,-1);
                    }
                  else if(nBin>=fNumUnits+nElements+n0+n1 && nBin<fNumUnits+nElements+n0+n1+n2)
                    {
-                     Float_t phi = eta = 0.;
-                     fGrid2->GetEtaPhiFromIndex2(nBin+1-(fNumUnits+nElements+n0+n1),phi,eta);
+                     Float_t phi0 = eta = 0.;
+                     fGrid2->GetEtaPhiFromIndex2(nBin+1-(fNumUnits+nElements+n0+n1),phi0,eta);
                      Deta = fGrid2->GetDeta(); 
                      Dphi = fGrid2->GetDphi(); 
-                     new ((*fUnitArray)[nBin]) AliJetUnitArray(nBin,0,eta,phi,0.,Deta,Dphi,kTpc,kOutJet,kPtSmaller,kPtSmaller,kBad,0.,-1);
+                     new ((*fUnitArray)[nBin]) AliJetUnitArray(nBin,0,eta,phi0,0.,Deta,Dphi,kTpc,kOutJet,kPtSmaller,kPtSmaller,kBad,0.,-1);
                    }
                  else if(nBin>=fNumUnits+nElements+n0+n1+n2 && nBin<fNumUnits+nElements+n0+n1+n2+n3)
                    {
-                     Float_t phi = eta = 0.;
-                     fGrid3->GetEtaPhiFromIndex2(nBin+1-(fNumUnits+nElements+n0+n1+n2),phi,eta);
+                     Float_t phi0 = eta = 0.;
+                     fGrid3->GetEtaPhiFromIndex2(nBin+1-(fNumUnits+nElements+n0+n1+n2),phi0,eta);
                      Deta = fGrid3->GetDeta(); 
                      Dphi = fGrid3->GetDphi(); 
-                     new ((*fUnitArray)[nBin]) AliJetUnitArray(nBin,0,eta,phi,0.,Deta,Dphi,kTpc,kOutJet,kPtSmaller,kPtSmaller,kBad,0.,-1);
+                     new ((*fUnitArray)[nBin]) AliJetUnitArray(nBin,0,eta,phi0,0.,Deta,Dphi,kTpc,kOutJet,kPtSmaller,kPtSmaller,kBad,0.,-1);
                    }
                  else if(nBin>=fNumUnits+nElements+n0+n1+n2+n3 && nBin<fNumUnits+nElements+nGaps)
                    {
-                     Float_t phi = eta = 0.;
-                     fGrid4->GetEtaPhiFromIndex2(nBin+1-(fNumUnits+nElements+n0+n1+n2+n3),phi,eta);
+                     Float_t phi0 = eta = 0.;
+                     fGrid4->GetEtaPhiFromIndex2(nBin+1-(fNumUnits+nElements+n0+n1+n2+n3),phi0,eta);
                      Deta = fGrid4->GetDeta(); 
                      Dphi = fGrid4->GetDphi(); 
-                     new ((*fUnitArray)[nBin]) AliJetUnitArray(nBin,0,eta,phi,0.,Deta,Dphi,kTpc,kOutJet,kPtSmaller,kPtSmaller,kBad,0.,-1);
+                     new ((*fUnitArray)[nBin]) AliJetUnitArray(nBin,0,eta,phi0,0.,Deta,Dphi,kTpc,kOutJet,kPtSmaller,kPtSmaller,kBad,0.,-1);
                    }
                }
              } // end if(fDZ)