#include <TChain.h>
#include <TClonesArray.h>
#include "AliAODCaloCluster.h"
#include "AliAODEvent.h"
#include "AliAnalysisManager.h"
#include "AliEMCALRecoUtils.h"
#include "AliESDCaloCluster.h"
#include "AliESDEvent.h"
#include "AliEmcalClusterMaker.h"
ClassImp(AliEmcalClusterMaker)
AliEmcalClusterMaker::AliEmcalClusterMaker() :
AliAnalysisTaskEmcal("AliEmcalClusterMaker", kFALSE),
fOutCaloName(),
fRecoUtils(0),
fEsdMode(kTRUE),
fOutClusters(0),
fEnergyDistBefore(0),
fEtaPhiDistBefore(0),
fEnergyTimeHistBefore(0),
fEnergyDistAfter(0),
fEtaPhiDistAfter(0),
fEnergyTimeHistAfter(0),
fEnergyExoticClusters(0)
{
}
AliEmcalClusterMaker::AliEmcalClusterMaker(const char *name, Bool_t histo) :
AliAnalysisTaskEmcal(name, histo),
fOutCaloName("EmcClusters"),
fRecoUtils(0),
fEsdMode(kTRUE),
fOutClusters(0),
fEnergyDistBefore(0),
fEtaPhiDistBefore(0),
fEnergyTimeHistBefore(0),
fEnergyDistAfter(0),
fEtaPhiDistAfter(0),
fEnergyTimeHistAfter(0),
fEnergyExoticClusters(0)
{
SetMakeGeneralHistograms(histo);
fBranchNames="ESD:AliESDRun.,AliESDHeader.,PrimaryVertex.";
}
AliEmcalClusterMaker::~AliEmcalClusterMaker()
{
}
void AliEmcalClusterMaker::UserCreateOutputObjects()
{
AliAnalysisTaskEmcal::UserCreateOutputObjects();
if (fRecoUtils) {
fRecoUtils->InitNonLinearityParam();
fRecoUtils->Print("");
}
if (!fCreateHisto) return;
fEnergyDistBefore = new TH1F("hEnergyDistBefore","hEnergyDistBefore;E_{clus} (GeV)",1500,0,150);
fOutput->Add(fEnergyDistBefore);
fEtaPhiDistBefore = new TH2F("hEtaPhiDistBefore","hEtaPhiDistBefore;#eta;#phi",280,-0.7,0.7,800,1.3,3.3);
fOutput->Add(fEtaPhiDistBefore);
fEnergyTimeHistBefore = new TH2F("hEnergyTimeDistBefore","hEnergyTimeDistBefore;E_{clus} (GeV);time",60,0,30,500,0,1e-6);
fOutput->Add(fEnergyTimeHistBefore);
fEnergyDistAfter = new TH1F("hEnergyDistAfter","hEnergyDistAfter;E_{clus} (GeV)",1500,0,150);
fOutput->Add(fEnergyDistAfter);
fEtaPhiDistAfter = new TH2F("hEtaPhiDistAfter","hEtaPhiDistAfter;#eta;#phi",280,-0.7,0.7,800,1.3,3.3);
fOutput->Add(fEtaPhiDistAfter);
fEnergyTimeHistAfter = new TH2F("hEnergyTimeDistAfter","hEnergyTimeDistAfter;E_{clus} (GeV);time",60,0,30,500,0,1e-6);
fOutput->Add(fEnergyTimeHistAfter);
fEnergyExoticClusters = new TH1F("fEnergyExoticClusters","fEnergyExoticClusters;E_{ex clus} (GeV)",60,0,30);
fOutput->Add(fEnergyExoticClusters);
PostData(1, fOutput);
}
void AliEmcalClusterMaker::ExecOnce()
{
AliAnalysisTaskEmcal::ExecOnce();
if (!fInitialized)
return;
if (dynamic_cast<AliAODEvent*>(InputEvent()))
fEsdMode = kFALSE;
if (fEsdMode)
fOutClusters = new TClonesArray("AliESDCaloCluster");
else
fOutClusters = new TClonesArray("AliAODCaloCluster");
fOutClusters->SetName(fOutCaloName);
if (!(InputEvent()->FindListObject(fOutCaloName))) {
InputEvent()->AddObject(fOutClusters);
} else {
fInitialized = kFALSE;
AliFatal(Form("%s: Container with same name %s already present. Aborting", GetName(), fOutCaloName.Data()));
return;
}
}
Bool_t AliEmcalClusterMaker::Run()
{
fOutClusters->Delete();
Int_t clusCount = 0;
Int_t entries = fCaloClusters->GetEntries();
for (Int_t i=0; i<entries; ++i) {
AliVCluster *clus = static_cast<AliVCluster*>(fCaloClusters->At(i));
if (!clus || !clus->IsEMCAL())
continue;
if (fCreateHisto) {
fEnergyDistBefore->Fill(clus->E());
Float_t pos[3] ={0,0,0};
clus->GetPosition(pos);
TVector3 vec(pos);
fEtaPhiDistBefore->Fill(vec.Eta(),vec.Phi());
fEnergyTimeHistBefore->Fill(clus->E(),clus->GetTOF());
}
AliVCluster *oc = 0;
if (fEsdMode) {
AliESDCaloCluster *ec = dynamic_cast<AliESDCaloCluster*>(clus);
if (!ec) continue;
oc = new ((*fOutClusters)[clusCount]) AliESDCaloCluster(*ec);
} else {
AliAODCaloCluster *ac = dynamic_cast<AliAODCaloCluster*>(clus);
if (!ac) continue;
oc = new ((*fOutClusters)[clusCount]) AliAODCaloCluster(*ac);
}
if (fRecoUtils) {
if (fRecoUtils->IsRejectExoticCluster()) {
Bool_t exRemoval = fRecoUtils->IsRejectExoticCell();
fRecoUtils->SwitchOnRejectExoticCell();
Bool_t exResult = fRecoUtils->IsExoticCluster(oc,fCaloCells);
if (!exRemoval) fRecoUtils->SwitchOffRejectExoticCell();
if(exResult) {
fEnergyExoticClusters->Fill(oc->E());
continue;
}
}
if (fRecoUtils->GetNonLinearityFunction()!=AliEMCALRecoUtils::kNoCorrection) {
Double_t energy = fRecoUtils->CorrectClusterEnergyLinearity(oc);
oc->SetE(energy);
}
}
if (!AcceptCluster(oc))
continue;
clusCount++;
if (fCreateHisto) {
fEnergyDistAfter->Fill(oc->E());
Float_t pos[3] ={0,0,0};
oc->GetPosition(pos);
TVector3 vec(pos);
fEtaPhiDistAfter->Fill(vec.Eta(),vec.Phi());
fEnergyTimeHistAfter->Fill(oc->E(),oc->GetTOF());
}
}
if ((clusCount>0) && (clusCount==fOutClusters->GetEntries()))
fOutClusters->RemoveAt(clusCount);
return kTRUE;
}
AliEmcalClusterMaker.cxx:1 AliEmcalClusterMaker.cxx:2 AliEmcalClusterMaker.cxx:3 AliEmcalClusterMaker.cxx:4 AliEmcalClusterMaker.cxx:5 AliEmcalClusterMaker.cxx:6 AliEmcalClusterMaker.cxx:7 AliEmcalClusterMaker.cxx:8 AliEmcalClusterMaker.cxx:9 AliEmcalClusterMaker.cxx:10 AliEmcalClusterMaker.cxx:11 AliEmcalClusterMaker.cxx:12 AliEmcalClusterMaker.cxx:13 AliEmcalClusterMaker.cxx:14 AliEmcalClusterMaker.cxx:15 AliEmcalClusterMaker.cxx:16 AliEmcalClusterMaker.cxx:17 AliEmcalClusterMaker.cxx:18 AliEmcalClusterMaker.cxx:19 AliEmcalClusterMaker.cxx:20 AliEmcalClusterMaker.cxx:21 AliEmcalClusterMaker.cxx:22 AliEmcalClusterMaker.cxx:23 AliEmcalClusterMaker.cxx:24 AliEmcalClusterMaker.cxx:25 AliEmcalClusterMaker.cxx:26 AliEmcalClusterMaker.cxx:27 AliEmcalClusterMaker.cxx:28 AliEmcalClusterMaker.cxx:29 AliEmcalClusterMaker.cxx:30 AliEmcalClusterMaker.cxx:31 AliEmcalClusterMaker.cxx:32 AliEmcalClusterMaker.cxx:33 AliEmcalClusterMaker.cxx:34 AliEmcalClusterMaker.cxx:35 AliEmcalClusterMaker.cxx:36 AliEmcalClusterMaker.cxx:37 AliEmcalClusterMaker.cxx:38 AliEmcalClusterMaker.cxx:39 AliEmcalClusterMaker.cxx:40 AliEmcalClusterMaker.cxx:41 AliEmcalClusterMaker.cxx:42 AliEmcalClusterMaker.cxx:43 AliEmcalClusterMaker.cxx:44 AliEmcalClusterMaker.cxx:45 AliEmcalClusterMaker.cxx:46 AliEmcalClusterMaker.cxx:47 AliEmcalClusterMaker.cxx:48 AliEmcalClusterMaker.cxx:49 AliEmcalClusterMaker.cxx:50 AliEmcalClusterMaker.cxx:51 AliEmcalClusterMaker.cxx:52 AliEmcalClusterMaker.cxx:53 AliEmcalClusterMaker.cxx:54 AliEmcalClusterMaker.cxx:55 AliEmcalClusterMaker.cxx:56 AliEmcalClusterMaker.cxx:57 AliEmcalClusterMaker.cxx:58 AliEmcalClusterMaker.cxx:59 AliEmcalClusterMaker.cxx:60 AliEmcalClusterMaker.cxx:61 AliEmcalClusterMaker.cxx:62 AliEmcalClusterMaker.cxx:63 AliEmcalClusterMaker.cxx:64 AliEmcalClusterMaker.cxx:65 AliEmcalClusterMaker.cxx:66 AliEmcalClusterMaker.cxx:67 AliEmcalClusterMaker.cxx:68 AliEmcalClusterMaker.cxx:69 AliEmcalClusterMaker.cxx:70 AliEmcalClusterMaker.cxx:71 AliEmcalClusterMaker.cxx:72 AliEmcalClusterMaker.cxx:73 AliEmcalClusterMaker.cxx:74 AliEmcalClusterMaker.cxx:75 AliEmcalClusterMaker.cxx:76 AliEmcalClusterMaker.cxx:77 AliEmcalClusterMaker.cxx:78 AliEmcalClusterMaker.cxx:79 AliEmcalClusterMaker.cxx:80 AliEmcalClusterMaker.cxx:81 AliEmcalClusterMaker.cxx:82 AliEmcalClusterMaker.cxx:83 AliEmcalClusterMaker.cxx:84 AliEmcalClusterMaker.cxx:85 AliEmcalClusterMaker.cxx:86 AliEmcalClusterMaker.cxx:87 AliEmcalClusterMaker.cxx:88 AliEmcalClusterMaker.cxx:89 AliEmcalClusterMaker.cxx:90 AliEmcalClusterMaker.cxx:91 AliEmcalClusterMaker.cxx:92 AliEmcalClusterMaker.cxx:93 AliEmcalClusterMaker.cxx:94 AliEmcalClusterMaker.cxx:95 AliEmcalClusterMaker.cxx:96 AliEmcalClusterMaker.cxx:97 AliEmcalClusterMaker.cxx:98 AliEmcalClusterMaker.cxx:99 AliEmcalClusterMaker.cxx:100 AliEmcalClusterMaker.cxx:101 AliEmcalClusterMaker.cxx:102 AliEmcalClusterMaker.cxx:103 AliEmcalClusterMaker.cxx:104 AliEmcalClusterMaker.cxx:105 AliEmcalClusterMaker.cxx:106 AliEmcalClusterMaker.cxx:107 AliEmcalClusterMaker.cxx:108 AliEmcalClusterMaker.cxx:109 AliEmcalClusterMaker.cxx:110 AliEmcalClusterMaker.cxx:111 AliEmcalClusterMaker.cxx:112 AliEmcalClusterMaker.cxx:113 AliEmcalClusterMaker.cxx:114 AliEmcalClusterMaker.cxx:115 AliEmcalClusterMaker.cxx:116 AliEmcalClusterMaker.cxx:117 AliEmcalClusterMaker.cxx:118 AliEmcalClusterMaker.cxx:119 AliEmcalClusterMaker.cxx:120 AliEmcalClusterMaker.cxx:121 AliEmcalClusterMaker.cxx:122 AliEmcalClusterMaker.cxx:123 AliEmcalClusterMaker.cxx:124 AliEmcalClusterMaker.cxx:125 AliEmcalClusterMaker.cxx:126 AliEmcalClusterMaker.cxx:127 AliEmcalClusterMaker.cxx:128 AliEmcalClusterMaker.cxx:129 AliEmcalClusterMaker.cxx:130 AliEmcalClusterMaker.cxx:131 AliEmcalClusterMaker.cxx:132 AliEmcalClusterMaker.cxx:133 AliEmcalClusterMaker.cxx:134 AliEmcalClusterMaker.cxx:135 AliEmcalClusterMaker.cxx:136 AliEmcalClusterMaker.cxx:137 AliEmcalClusterMaker.cxx:138 AliEmcalClusterMaker.cxx:139 AliEmcalClusterMaker.cxx:140 AliEmcalClusterMaker.cxx:141 AliEmcalClusterMaker.cxx:142 AliEmcalClusterMaker.cxx:143 AliEmcalClusterMaker.cxx:144 AliEmcalClusterMaker.cxx:145 AliEmcalClusterMaker.cxx:146 AliEmcalClusterMaker.cxx:147 AliEmcalClusterMaker.cxx:148 AliEmcalClusterMaker.cxx:149 AliEmcalClusterMaker.cxx:150 AliEmcalClusterMaker.cxx:151 AliEmcalClusterMaker.cxx:152 AliEmcalClusterMaker.cxx:153 AliEmcalClusterMaker.cxx:154 AliEmcalClusterMaker.cxx:155 AliEmcalClusterMaker.cxx:156 AliEmcalClusterMaker.cxx:157 AliEmcalClusterMaker.cxx:158 AliEmcalClusterMaker.cxx:159 AliEmcalClusterMaker.cxx:160 AliEmcalClusterMaker.cxx:161 AliEmcalClusterMaker.cxx:162 AliEmcalClusterMaker.cxx:163 AliEmcalClusterMaker.cxx:164 AliEmcalClusterMaker.cxx:165 AliEmcalClusterMaker.cxx:166 AliEmcalClusterMaker.cxx:167 AliEmcalClusterMaker.cxx:168 AliEmcalClusterMaker.cxx:169 AliEmcalClusterMaker.cxx:170 AliEmcalClusterMaker.cxx:171 AliEmcalClusterMaker.cxx:172 AliEmcalClusterMaker.cxx:173 AliEmcalClusterMaker.cxx:174 AliEmcalClusterMaker.cxx:175 AliEmcalClusterMaker.cxx:176 AliEmcalClusterMaker.cxx:177 AliEmcalClusterMaker.cxx:178 AliEmcalClusterMaker.cxx:179 AliEmcalClusterMaker.cxx:180 AliEmcalClusterMaker.cxx:181 AliEmcalClusterMaker.cxx:182 AliEmcalClusterMaker.cxx:183 AliEmcalClusterMaker.cxx:184 AliEmcalClusterMaker.cxx:185 AliEmcalClusterMaker.cxx:186 AliEmcalClusterMaker.cxx:187 AliEmcalClusterMaker.cxx:188 AliEmcalClusterMaker.cxx:189 AliEmcalClusterMaker.cxx:190 AliEmcalClusterMaker.cxx:191 AliEmcalClusterMaker.cxx:192 AliEmcalClusterMaker.cxx:193 AliEmcalClusterMaker.cxx:194