]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - JETAN/AliJetESDReader.cxx
Restoring the functionallity of the PAR files: partial fix
[u/mrichter/AliRoot.git] / JETAN / AliJetESDReader.cxx
index 09023834a22d0db0b7d9341de4ca2549a3f9371e..6012bf263e3a03246bc5184078da61bea25d4897 100755 (executable)
 // ESD reader for jet analysis
 // Authors: Mercedes Lopez Noriega (mercedes.lopez.noriega@cern.ch)
 //          Magali Estienne <magali.estienne@subatech.in2p3.fr>
+//
+// **February 2011
+// implemented standard geometry (AliEMCALGeometry) instead of dummy one (AliJetDummyGeo)
+// moved geometry definition in AliJetReader
+// marco.bregant@subatech.in2p3.fr
 //------------------------------------------------------------------------- 
 
 // --- Standard library ---
@@ -25,6 +30,7 @@
 
 // --- ROOT system ---
 #include <TSystem.h>
+#include <TString.h>
 #include <TStopwatch.h>
 #include <TLorentzVector.h>
 #include <TVector3.h>
 #include "AliJetESDReader.h"
 #include "AliJetESDReaderHeader.h"
 #include "AliESDEvent.h"
+#include "AliVEvent.h"
 #include "AliESD.h"
 #include "AliESDtrack.h"
-#include "AliJetDummyGeo.h"
+#include "AliEMCALGeometry.h"
+#include "AliEMCALEMCGeometry.h"
 #include "AliJetESDFillUnitArrayTracks.h"
 #include "AliJetESDFillUnitArrayEMCalDigits.h"
+#include "AliJetHadronCorrectionv1.h"
 #include "AliJetUnitArray.h"
 #include "AliAnalysisTask.h"
+#include "AliOADBContainer.h"
 
 ClassImp(AliJetESDReader)
 
 AliJetESDReader::AliJetESDReader():
-  AliJetReader(),  
-  fGeom(0),
-  fChain(0x0),
-  fTree(0x0),
-  fESD(0x0),
+  AliJetReader(), 
   fHadCorr(0x0),
   fTpcGrid(0x0),
   fEmcalGrid(0x0),
@@ -66,9 +72,7 @@ AliJetESDReader::AliJetESDReader():
   fGrid2(0),
   fGrid3(0),
   fGrid4(0),
-  fPtCut(0),
   fApplyElectronCorrection(kFALSE),
-  fEFlag(kFALSE),
   fApplyMIPCorrection(kTRUE),
   fApplyFractionHadronicCorrection(kFALSE),
   fFractionHadronicCorrection(0.3),
@@ -81,7 +85,6 @@ AliJetESDReader::AliJetESDReader():
   fDZ(0),
   fNeta(0),
   fNphi(0),
-  fArrayInitialised(0),
   fRefArray(0x0),
   fProcId(kFALSE)
 {
@@ -127,9 +130,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++;
        }
    }
@@ -301,8 +302,11 @@ void AliJetESDReader::CreateTasks(TChain* tree)
   fDZ = fReaderHeader->GetDZ();
   fTree = tree;
 
-  // Init EMCAL geometry 
-  SetEMCALGeometry();
+  // Init EMCAL geometry, if needed
+   if(fGeom == 0)
+         SetEMCALGeometry();
+       else Info(" SetEMCALGeometry","was already done.. it's called just once !!");
+
   // Init parameters
   InitParameters();
   // Create and init unit array
@@ -334,7 +338,7 @@ void AliJetESDReader::CreateTasks(TChain* tree)
   fFillUAFromEMCalDigits->SetEMCalGrid(fEmcalGrid);
   fFillUAFromEMCalDigits->SetApplyFractionHadronicCorrection(fApplyFractionHadronicCorrection);
   fFillUAFromEMCalDigits->SetFractionHadronicCorrection(fFractionHadronicCorrection);
-  fFillUAFromEMCalDigits->SetApplyElectronCorrection(fApplyElectronCorrection);
+   fFillUAFromEMCalDigits->SetApplyElectronCorrection(fApplyElectronCorrection);
   // Add the task to global task
   fFillUnitArray->Add(fFillUAFromTracks);
   fFillUnitArray->Add(fFillUAFromEMCalDigits);
@@ -400,48 +404,19 @@ Bool_t AliJetESDReader::ExecTasks(Bool_t procid, TRefArray* refArray)
   return kTRUE;
 }
 
-//____________________________________________________________________________
-Bool_t AliJetESDReader::SetEMCALGeometry()
-{
-  // 
-  // Set the EMCal Geometry
-  //
-
-  if (!fTree->GetFile()) 
-    return kFALSE;
-
-  TString geomFile(fTree->GetFile()->GetName());
-  geomFile.ReplaceAll("AliESDs", "geometry");
-  
-  // temporary workaround for PROOF bug #18505
-  geomFile.ReplaceAll("#geometry.root#geometry.root", "#geometry.root");
-  if(fDebug>1) printf("Current geometry file %s \n", geomFile.Data());
-
-  // Define EMCAL geometry to be able to read ESDs
-  fGeom = AliJetDummyGeo::GetInstance();
-  if (fGeom == 0)
-    fGeom = AliJetDummyGeo::GetInstance("EMCAL_COMPLETE","EMCAL");
-  
-  // To be setted to run some AliEMCALGeometry functions
-  TGeoManager::Import(geomFile);
-  fGeom->GetTransformationForSM();  
-  printf("\n EMCal Geometry set ! \n");
-  
-  return kTRUE;
-}
 
 //____________________________________________________________________________  
 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
     else fECorrection = 1;        // For electron correction
   }
-  fNumUnits       = fGeom->GetNCells();      // Number of cells in EMCAL
+  fNumUnits       = fGeom->GetEMCGeometry()->GetNCells();      // Number of cells in EMCAL
   if(fDebug>1) printf("\n EMCal parameters initiated ! \n");
 }
 
@@ -480,31 +455,31 @@ void AliJetESDReader::InitUnitArray()
          // Define a grid of cell for the gaps between SM
          Double_t phimin0 = 0., phimin1 = 0., phimin2 = 0., phimin3 = 0., phimin4 = 0.;
          Double_t phimax0 = 0., phimax1 = 0., phimax2 = 0., phimax3 = 0., phimax4 = 0.;
-         fGeom->GetPhiBoundariesOfSMGap(0,phimin0,phimax0);
+         fGeom->GetEMCGeometry()->GetPhiBoundariesOfSMGap(0,phimin0,phimax0);
          fGrid0 = new AliJetGrid(0,95,phimin0,phimax0,-0.7,0.7); // 0.015 x 0.015
          fGrid0->SetGridType(0);
          fGrid0->SetMatrixIndexes();
          fGrid0->SetIndexIJ();
          n0 = fGrid0->GetNEntries();
-         fGeom->GetPhiBoundariesOfSMGap(1,phimin1,phimax1);
+         fGeom->GetEMCGeometry()->GetPhiBoundariesOfSMGap(1,phimin1,phimax1);
          fGrid1 = new AliJetGrid(0,95,phimin1,phimax1,-0.7,0.7); // 0.015 x 0.015
          fGrid1->SetGridType(0);
          fGrid1->SetMatrixIndexes();
          fGrid1->SetIndexIJ();
          n1 = fGrid1->GetNEntries();
-         fGeom->GetPhiBoundariesOfSMGap(2,phimin2,phimax2);
+         fGeom->GetEMCGeometry()->GetPhiBoundariesOfSMGap(2,phimin2,phimax2);
          fGrid2 = new AliJetGrid(0,95,phimin2,phimax2,-0.7,0.7); // 0.015 x 0.015
          fGrid2->SetGridType(0);
          fGrid2->SetMatrixIndexes();
          fGrid2->SetIndexIJ();
          n2 = fGrid2->GetNEntries();
-         fGeom->GetPhiBoundariesOfSMGap(3,phimin3,phimax3);
+         fGeom->GetEMCGeometry()->GetPhiBoundariesOfSMGap(3,phimin3,phimax3);
          fGrid3 = new AliJetGrid(0,95,phimin3,phimax3,-0.7,0.7); // 0.015 x 0.015
          fGrid3->SetGridType(0);  
          fGrid3->SetMatrixIndexes();
          fGrid3->SetIndexIJ();
          n3 = fGrid3->GetNEntries();
-         fGeom->GetPhiBoundariesOfSMGap(4,phimin4,phimax4);
+         fGeom->GetEMCGeometry()->GetPhiBoundariesOfSMGap(4,phimin4,phimax4);
          fGrid4 = new AliJetGrid(0,95,phimin4,phimax4,-0.7,0.7); // 0.015 x 0.015
          fGrid4->SetGridType(0);
          fGrid4->SetMatrixIndexes();