#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"
AliJetESDReader::AliJetESDReader():
AliJetReader(),
fGeom(0),
- fChain(0x0),
- fTree(0x0),
- fESD(0x0),
fHadCorr(0x0),
fTpcGrid(0x0),
fEmcalGrid(0x0),
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),
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++;
}
}
}
+//__________________________________________________________
+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;
}
// 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);
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);
fProcId = procid;
fRefArray = refArray;
- vector<Float_t> vtmp(3);
// clear momentum array
ClearArray();
{
// 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
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;
}
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)