7 #include <TClonesArray.h>
8 #include "AliAODCaloCluster.h"
9 #include "AliAODEvent.h"
10 #include "AliAnalysisManager.h"
11 #include "AliEMCALRecoUtils.h"
12 #include "AliESDCaloCluster.h"
13 #include "AliESDEvent.h"
28 fEnergyTimeHistBefore(0),
31 fEnergyTimeHistAfter(0),
32 fEnergyExoticClusters(0)
40 fOutCaloName(
"EmcClusters"),
46 fEnergyTimeHistBefore(0),
49 fEnergyTimeHistAfter(0),
50 fEnergyExoticClusters(0)
56 fBranchNames=
"ESD:AliESDRun.,AliESDHeader.,PrimaryVertex.";
79 fEnergyDistBefore =
new TH1F(
"hEnergyDistBefore",
"hEnergyDistBefore;E_{clus} (GeV)",1500,0,150);
81 fEtaPhiDistBefore =
new TH2F(
"hEtaPhiDistBefore",
"hEtaPhiDistBefore;#eta;#phi",280,-0.7,0.7,200*3.14,0,2*3.14);
83 fEnergyTimeHistBefore =
new TH2F(
"hEnergyTimeDistBefore",
"hEnergyTimeDistBefore;E_{clus} (GeV);time",1500,0,150,500,0,1e-6);
85 fEnergyDistAfter =
new TH1F(
"hEnergyDistAfter",
"hEnergyDistAfter;E_{clus} (GeV)",1500,0,150);
87 fEtaPhiDistAfter =
new TH2F(
"hEtaPhiDistAfter",
"hEtaPhiDistAfter;#eta;#phi",280,-0.7,0.7,200*3.14,0,2*3.14);
89 fEnergyTimeHistAfter =
new TH2F(
"hEnergyTimeDistAfter",
"hEnergyTimeDistAfter;E_{clus} (GeV);time",1500,0,150,500,0,1e-6);
91 fEnergyExoticClusters =
new TH1F(
"fEnergyExoticClusters",
"fEnergyExoticClusters;E_{ex clus} (GeV)",1500,0,150);
107 if (dynamic_cast<AliAODEvent*>(InputEvent())) {
126 AliFatal(Form(
"%s: Container with same name %s already present. Aborting", GetName(),
fOutCaloName.Data()));
141 if (!clusters)
return kFALSE;
146 AliVCluster *clus = 0;
147 clusters->ResetCurrentID();
149 if (!clus->IsEMCAL())
continue;
154 clus->GetPosition(pos);
168 if (!exRemoval)
fRecoUtils->SwitchOffRejectExoticCell();
170 clus->SetIsExotic(exResult);
172 if (
fRecoUtils->GetNonLinearityFunction() != AliEMCALRecoUtils::kNoCorrection) {
174 clus->SetNonLinCorrEnergy(energy);
185 clus->GetPosition(pos);
193 UInt_t rejectionReason = 0;
198 AliESDCaloCluster *ec =
dynamic_cast<AliESDCaloCluster*
>(clus);
200 oc =
new ((*fOutClusters)[clusCount]) AliESDCaloCluster(*ec);
203 AliAODCaloCluster *ac =
dynamic_cast<AliAODCaloCluster*
>(clus);
205 oc =
new ((*fOutClusters)[clusCount]) AliAODCaloCluster(*ac);
208 oc->SetE(clus->GetNonLinCorrEnergy());
209 oc->SetNonLinCorrEnergy(clus->GetNonLinCorrEnergy());
210 oc->SetHadCorrEnergy(0);
Bool_t Run()
Run function. This is the core function of the analysis and contains the user code. Therefore users have to implement this function.
Bool_t fEsdMode
pointer to reco utils
Base task in the EMCAL framework.
Bool_t fLocalInitialized
whether or not the task has been already initialized
TH2F * fEtaPhiDistBefore
!eta/phi distribution before
void UserCreateOutputObjects()
AliClusterContainer * GetClusterContainer(Int_t i=0) const
Get cluster container attached to this task.
virtual Bool_t AcceptCluster(Int_t i, UInt_t &rejectionReason) const
AliVCluster * GetNextCluster()
TH2F * fEnergyTimeHistAfter
!energy/time distribution after
AliVCaloCells * fCaloCells
!cells
AliEMCALRecoUtils * fRecoUtils
name of output clusters; if empty updates old clusters instead of creating a new collection ...
TH1F * fEnergyDistBefore
!energy distribution before
AliEmcalList * fOutput
!output list
TH1F * fEnergyDistAfter
!energy distribution after
Bool_t fCreateHisto
whether or not create histograms
void SetMakeGeneralHistograms(Bool_t g)
virtual void ExecOnce()
Perform steps needed to initialize the analysis.
void ExecOnce()
Perform steps needed to initialize the analysis.
TH1F * fEnergyExoticClusters
!energy of exotic clusters
void UserCreateOutputObjects()
Main initialization function on the worker.
TH2F * fEtaPhiDistAfter
!eta/phi distribution after
ClassImp(AliEmcalClusterMaker) AliEmcalClusterMaker
Container structure for EMCAL clusters.
TClonesArray * fOutClusters
!output cluster collection
TH2F * fEnergyTimeHistBefore
!energy/time distribution before
virtual ~AliEmcalClusterMaker()