// 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 ---
// --- 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"
+using std::cout;
+using std::endl;
ClassImp(AliJetESDReader)
AliJetESDReader::AliJetESDReader():
- AliJetReader(),
- fGeom(0),
- fChain(0x0),
- fTree(0x0),
- fESD(0x0),
+ AliJetReader(),
fHadCorr(0x0),
fTpcGrid(0x0),
fEmcalGrid(0x0),
fGrid2(0),
fGrid3(0),
fGrid4(0),
- fPtCut(0),
fApplyElectronCorrection(kFALSE),
- fEFlag(kFALSE),
fApplyMIPCorrection(kTRUE),
fApplyFractionHadronicCorrection(kFALSE),
fFractionHadronicCorrection(0.3),
fDZ(0),
fNeta(0),
fNphi(0),
- fArrayInitialised(0),
fRefArray(0x0),
fProcId(kFALSE)
{
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++;
}
}
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
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);
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");
}
// 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();