+++ /dev/null
-// $Id$
-
-#include <TChain.h>
-#include <TClonesArray.h>
-#include <TH1F.h>
-#include <TH2F.h>
-#include <TList.h>
-#include <TLorentzVector.h>
-#include <TParticle.h>
-
-#include "AliAnalysisManager.h"
-#include "AliCentrality.h"
-#include "AliVCluster.h"
-#include "AliESDtrack.h"
-#include "AliEmcalJet.h"
-#include "AliAODTrack.h"
-#include "AliESDtrack.h"
-#include "AliEmcalJet.h"
-#include "AliVEventHandler.h"
-#include "AliPicoTrack.h"
-
-#include "AliEmcalQATask.h"
-
-ClassImp(AliEmcalQATask)
-
-//________________________________________________________________________
-AliEmcalQATask::AliEmcalQATask() :
- AliAnalysisTaskSE("AliEmcalQATask"),
- fOutput(0),
- fTracksName("Tracks"),
- fCaloName("CaloClusters"),
- fJetsName("Jets"),
- fTrgClusName("ClustersL1GAMMAFEE"),
- fTracks(0),
- fCaloClusters(0),
- fJets(0),
- fTrgClusters(0),
- fCent(0),
- fHistCentrality(0),
- fHistTracksCent(0),
- fHistClusCent(0),
- fHistTracksPt(0),
- fHistClustersEnergy(0),
- fHistEPcorrelation(0),
- fHistJetsEnergy(0),
- fHistTrPhiEta(0),
- fHistClusPhiEta(0),
- fHistJetPhiEta(0),
- fHistMaxTrgCluster(0),
- Ptbins(100),
- Ptlow(0),
- Ptup(50),
- Ebins(100),
- Elow(0),
- Eup(50)
-{
- // Default constructor.
-
- for (Int_t i = 0; i < 5; i++) {
- fHistTrackPhi[i] = 0;
- fHistTrackEta[i] = 0;
- }
-
- fBranchNames="ESD:AliESDRun.,AliESDHeader.,PrimaryVertex.";
-
-}
-
-//________________________________________________________________________
-AliEmcalQATask::AliEmcalQATask(const char *name) :
- AliAnalysisTaskSE("AliEmcalQATask"),
- fOutput(0),
- fTracksName("Tracks"),
- fCaloName("CaloClusters"),
- fJetsName("Jets"),
- fTrgClusName("ClustersL1GAMMAFEE"),
- fTracks(0),
- fCaloClusters(0),
- fJets(0),
- fTrgClusters(0),
- fCent(0),
- fHistCentrality(0),
- fHistTracksCent(0),
- fHistClusCent(0),
- fHistTracksPt(0),
- fHistClustersEnergy(0),
- fHistEPcorrelation(0),
- fHistJetsEnergy(0),
- fHistTrPhiEta(0),
- fHistClusPhiEta(0),
- fHistJetPhiEta(0),
- fHistMaxTrgCluster(0),
- Ptbins(100),
- Ptlow(0),
- Ptup(50),
- Ebins(100),
- Elow(0),
- Eup(50)
-{
- // Standard constructor.
-
- for (Int_t i = 0; i < 5; i++) {
- fHistTrackPhi[i] = 0;
- fHistTrackEta[i] = 0;
- }
-
- if (!name)
- return;
-
- SetName(name);
- fBranchNames="ESD:AliESDRun.,AliESDHeader.,PrimaryVertex.";
-
- DefineInput(0,TChain::Class());
- DefineOutput(1,TList::Class());
-}
-
-//________________________________________________________________________
-AliEmcalQATask::~AliEmcalQATask()
-{
- // Destructor
-}
-
-//________________________________________________________________________
-void AliEmcalQATask::UserCreateOutputObjects()
-{
- // Create histograms
-
- fOutput = new TList();
- fOutput->SetOwner(); // IMPORTANT!
-
- fHistCentrality = new TH1F("fHistCentrality","Event centrality distribution", Ebins, 0, 100);
- fHistCentrality->GetXaxis()->SetTitle("Centrality (%)");
- fHistCentrality->GetYaxis()->SetTitle("counts");
- fOutput->Add(fHistCentrality);
-
- fHistTracksCent = new TH2F("fHistTracksCent","Tracks vs. centrality", Ebins, 0, 100, Ebins, 0, 4000);
- fHistTracksCent->GetXaxis()->SetTitle("Centrality (%)");
- fHistTracksCent->GetYaxis()->SetTitle("No. of tracks");
- fOutput->Add(fHistTracksCent);
-
- fHistClusCent = new TH2F("fHistClusCent","Clusters vs. centrality", Ebins, 0, 100, Ebins, 0, 2000);
- fHistClusCent->GetXaxis()->SetTitle("Centrality (%)");
- fHistClusCent->GetYaxis()->SetTitle("No. of clusters");
- fOutput->Add(fHistClusCent);
-
- fHistTracksPt = new TH1F("fHistTracksPt","P_{T} spectrum of reconstructed tracks", Ptbins, Ptlow, Ptup);
- fHistTracksPt->GetXaxis()->SetTitle("P_{T} [GeV/c]");
- fHistTracksPt->GetYaxis()->SetTitle("counts");
- fOutput->Add(fHistTracksPt);
-
- fHistClustersEnergy = new TH1F("fHistClustersEnergy","Energy spectrum of clusters", Ebins, Elow, Eup);
- fHistClustersEnergy->GetXaxis()->SetTitle("E [GeV]");
- fHistClustersEnergy->GetYaxis()->SetTitle("counts");
- fOutput->Add(fHistClustersEnergy);
-
- fHistEPcorrelation = new TH2F("fHistEPcorrelation","Energy-momentum correlation", Ptbins, Ptlow, Ptup, Ebins, Elow, Eup);
- fHistEPcorrelation->GetXaxis()->SetTitle("P [GeV/c]");
- fHistEPcorrelation->GetYaxis()->SetTitle("E [GeV]");
- fOutput->Add(fHistEPcorrelation);
-
- fHistJetsEnergy = new TH1F("fHistJetsEnergy","Energy spectrum of jets", Ebins, Elow, Eup);
- fHistJetsEnergy->GetXaxis()->SetTitle("E [GeV]");
- fHistJetsEnergy->GetYaxis()->SetTitle("counts");
- fOutput->Add(fHistJetsEnergy);
-
- fHistTrPhiEta = new TH2F("fHistTrPhiEta","Phi-Eta distribution of tracks", 20, -2, 2, 32, 0, 6.4);
- fHistTrPhiEta->GetXaxis()->SetTitle("Eta");
- fHistTrPhiEta->GetYaxis()->SetTitle("Phi");
- fOutput->Add(fHistTrPhiEta);
-
- fHistClusPhiEta = new TH2F("fHistClusPhiEta","Phi-Eta distribution of clusters", 20, -2, 2, 32, 0, 6.4);
- fHistClusPhiEta->GetXaxis()->SetTitle("Eta");
- fHistClusPhiEta->GetYaxis()->SetTitle("Phi");
- fOutput->Add(fHistClusPhiEta);
-
- fHistJetPhiEta = new TH2F("fHistJetPhiEta","Phi-Eta distribution of jets", 20, -2, 2, 32, 0, 6.4);
- fHistJetPhiEta->GetXaxis()->SetTitle("Eta");
- fHistJetPhiEta->GetYaxis()->SetTitle("Phi");
- fOutput->Add(fHistJetPhiEta);
-
- fHistMaxTrgCluster = new TH1F("fHistMaxTrgCluster","Energy distribution of max trigger clusters", Ebins, Elow, Eup);
- fHistMaxTrgCluster->GetXaxis()->SetTitle("E [GeV]");
- fHistMaxTrgCluster->GetYaxis()->SetTitle("counts");
- fOutput->Add(fHistMaxTrgCluster);
-
- for (Int_t i = 0; i < 5; i++) {
- TString histnamephi("fHistTrackPhi_");
- histnamephi += i;
- fHistTrackPhi[i] = new TH1F(histnamephi.Data(),histnamephi.Data(), 128, 0, 6.4);
- fHistTrackPhi[i]->GetXaxis()->SetTitle("Phi");
- fOutput->Add(fHistTrackPhi[i]);
-
- TString histnameeta("fHistTrackEta_");
- histnameeta += i;
- fHistTrackEta[i] = new TH1F(histnameeta.Data(),histnameeta.Data(), 100, -2, 2);
- fHistTrackEta[i]->GetXaxis()->SetTitle("Eta");
- fOutput->Add(fHistTrackEta[i]);
- }
-
- fHistTrackPhi[0]->SetLineColor(kRed);
- fHistTrackEta[0]->SetLineColor(kRed);
- fHistTrackPhi[1]->SetLineColor(kBlue);
- fHistTrackEta[1]->SetLineColor(kBlue);
- fHistTrackPhi[2]->SetLineColor(kGreen);
- fHistTrackEta[2]->SetLineColor(kGreen);
- fHistTrackPhi[3]->SetLineColor(kOrange);
- fHistTrackEta[3]->SetLineColor(kOrange);
- fHistTrackPhi[4]->SetLineColor(kBlack);
- fHistTrackEta[4]->SetLineColor(kBlack);
-
- PostData(1, fOutput); // Post data for ALL output slots >0 here, to get at least an empty histogram
-}
-
-void AliEmcalQATask::RetrieveEventObjects()
-{
- fCaloClusters = dynamic_cast<TClonesArray*>(InputEvent()->FindListObject(fCaloName));
- if (!fCaloClusters) {
- AliWarning(Form("Could not retrieve clusters!"));
- }
-
- fTracks = dynamic_cast<TClonesArray*>(InputEvent()->FindListObject(fTracksName));
- if (!fTracks) {
- AliWarning(Form("Could not retrieve tracks!"));
- }
-
- fJets = dynamic_cast<TClonesArray*>(InputEvent()->FindListObject(fJetsName));
- if (!fJets) {
- AliWarning(Form("Could not retrieve jets!"));
- }
-
- if (strcmp(fTrgClusName,"")) {
- fTrgClusters = dynamic_cast<TClonesArray*>(InputEvent()->FindListObject(fTrgClusName));
- if (!fTrgClusters) {
- AliWarning(Form("Could not retrieve trigger clusters!"));
- }
- }
-
- fCent = InputEvent()->GetCentrality();
-}
-
-AliVTrack* AliEmcalQATask::GetTrack(const Int_t i) const
-{
- if (fTracks)
- return dynamic_cast<AliVTrack*>(fTracks->At(i));
- else
- return 0;
-}
-
-Int_t AliEmcalQATask::GetNumberOfTracks() const
-{
- if (fTracks)
- return fTracks->GetEntriesFast();
- else
- return 0;
-}
-
-AliVCluster* AliEmcalQATask::GetCaloCluster(const Int_t i) const
-{
- if (fCaloClusters)
- return dynamic_cast<AliVCluster*>(fCaloClusters->At(i));
- else
- return 0;
-}
-
-Int_t AliEmcalQATask::GetNumberOfCaloClusters() const
-{
- if (fCaloClusters)
- return fCaloClusters->GetEntriesFast();
- else
- return 0;
-}
-
-AliEmcalJet* AliEmcalQATask::GetJet(const Int_t i) const
-{
- if (fJets)
- return dynamic_cast<AliEmcalJet*>(fJets->At(i));
- else
- return 0;
-}
-
-Int_t AliEmcalQATask::GetNumberOfJets() const
-{
- if (fJets)
- return fJets->GetEntriesFast();
- else
- return 0;
-}
-
-AliVCluster* AliEmcalQATask::GetTrgCluster(const Int_t i) const
-{
- if (fTrgClusters)
- return dynamic_cast<AliVCluster*>(fTrgClusters->At(i));
- else
- return 0;
-}
-
-Int_t AliEmcalQATask::GetNumberOfTrgClusters() const
-{
- if (fTrgClusters)
- return fTrgClusters->GetEntriesFast();
- else
- return 0;
-}
-
-void AliEmcalQATask::FillHistograms()
-{
-
- fHistCentrality->Fill(fCent->GetCentralityPercentile("V0M"));
- fHistTracksCent->Fill(fCent->GetCentralityPercentile("V0M"), GetNumberOfTracks());
- fHistClusCent->Fill(fCent->GetCentralityPercentile("V0M"), GetNumberOfCaloClusters());
-
- // Cluster loop
- Int_t nclusters = GetNumberOfCaloClusters();
- //cout << nclusters << " clusters" << endl;
- for (Int_t iClusters = 0; iClusters < nclusters; iClusters++) {
- AliVCluster* cluster = GetCaloCluster(iClusters);
- if (!cluster) {
- printf("ERROR: Could not receive cluster %d\n", iClusters);
- continue;
- }
-
- if (!(cluster->IsEMCAL())) continue;
-
- fHistClustersEnergy->Fill(cluster->E());
-
- Float_t pos[3];
- cluster->GetPosition(pos);
- TVector3 clusVec(pos);
- fHistClusPhiEta->Fill(clusVec.Eta(), clusVec.Phi());
- } //cluster loop
-
-
- // Track loop
- Int_t ntracks = GetNumberOfTracks();
- //cout << ntracks << " tracks" << endl;
- for(Int_t i = 0; i < ntracks; i++) {
- //cout << "track n. " << i << endl;
- AliVTrack* track = GetTrack(i); // pointer to reconstructed to track
- if(!track) {
- AliError(Form("ERROR: Could not retrieve esdtrack %d",i));
- continue;
- }
-
- if (!AcceptTrack(track)) continue;
-
- fHistTracksPt->Fill(track->Pt());
-
- Int_t clId = track->GetEMCALcluster();
- if (clId > -1) {
- AliVCluster* cluster = GetCaloCluster(clId);
- if (cluster)
- fHistEPcorrelation->Fill(track->P(),cluster->E());
- }
-
- Float_t eta,phi;
- Int_t label;
-
- if(track->InheritsFrom("AliESDtrack")) {
- AliESDtrack *esdtrack = dynamic_cast<AliESDtrack*>(track);
- eta = esdtrack->Eta();
- phi = esdtrack->Phi();
- label = esdtrack->GetLabel();
- }
- else if (track->InheritsFrom("AliAODTrack")) {
- AliAODTrack *aodtrack = dynamic_cast<AliAODTrack*>(track);
- eta = aodtrack->Eta();
- phi = aodtrack->Phi();
- label = aodtrack->GetLabel();
- }
- else if (track->InheritsFrom("AliPicoTrack")) {
- AliPicoTrack *picotrack = dynamic_cast<AliPicoTrack*>(track);
- eta = picotrack->Eta();
- phi = picotrack->Phi();
- label = picotrack->GetLabel();
- }
- else {
- AliWarning("Track type not recognized! Will not plot phi\eta distributions!");
- continue;
- }
-
- fHistTrPhiEta->Fill(eta, phi);
-
- fHistTrackEta[4]->Fill(eta);
- fHistTrackPhi[4]->Fill(phi);
-
- if (label >= 0 && label < 4) {
- fHistTrackEta[label]->Fill(eta);
- fHistTrackPhi[label]->Fill(phi);
- }
- else {
- AliWarning(Form("Track label %d not recognized!",label));
- }
-
- }
-
- // Jet loop
- Int_t njets = GetNumberOfJets();
- //cout << njets << " jets" << endl;
- for (Int_t ij = 0; ij < njets; ij++) {
- AliEmcalJet* jet = GetJet(ij);
- if (!jet) {
- printf("ERROR: Could not receive jet %d\n", ij);
- continue;
- }
-
- if (jet->E() <= 0)
- continue;
-
- fHistJetPhiEta->Fill(jet->Eta(), jet->Phi());
- fHistJetsEnergy->Fill(jet->E());
- } //jet loop
-
- Int_t ntrgclusters = GetNumberOfTrgClusters();
- Float_t maxe = 0;
- //cout << ntrgclusters << " clusters" << endl;
- for (Int_t iClusters = 0; iClusters < ntrgclusters; iClusters++) {
- AliVCluster* cluster = GetTrgCluster(iClusters);
- if (!cluster) {
- printf("ERROR: Could not receive cluster %d\n", iClusters);
- continue;
- }
-
- if (!(cluster->IsEMCAL())) continue;
-
- if (cluster->E() > maxe)
- maxe = cluster->E();
-
- } //cluster loop
- fHistMaxTrgCluster->Fill(maxe);
-
-}
-
-//________________________________________________________________________
-Bool_t AliEmcalQATask::AcceptTrack(AliVTrack* /*track*/)
-{
- return kTRUE;
-}
-
-//________________________________________________________________________
-void AliEmcalQATask::UserExec(Option_t *)
-{
- // Main loop, called for each event.
- // Add jets to event if not yet there
-
- RetrieveEventObjects();
-
- FillHistograms();
-
- // information for this iteration of the UserExec in the container
- PostData(1, fOutput);
-}
-
-//________________________________________________________________________
-void AliEmcalQATask::Terminate(Option_t *)
-{
- // Called once at the end of the analysis.
-}
+++ /dev/null
-#ifndef ALIEMCALQATASK_H
-#define ALIEMCALQATASK_H
-
-// $Id$
-
-class TClonesArray;
-class TString;
-class AliVTrack;
-class AliVCluster;
-class TList;
-class TH1F;
-class TH2F;
-class AliEmcalJet;
-
-#include "AliAnalysisTaskSE.h"
-
-class AliEmcalQATask : public AliAnalysisTaskSE {
- public:
- AliEmcalQATask();
- AliEmcalQATask(const char *name);
- virtual ~AliEmcalQATask();
-
- void UserCreateOutputObjects();
- void UserExec(Option_t *option);
- void Terminate(Option_t *option);
-
- void SetClusName(const char *n) { fCaloName = n ; }
- void SetJetsName(const char *n) { fJetsName = n ; }
- void SetTracksName(const char *n) { fTracksName = n ; }
- void SetTrgClusName(const char *n) { fTrgClusName = n ; }
-
- protected:
-
- AliVTrack *GetTrack(const Int_t i) const;
- Int_t GetNumberOfTracks() const;
- AliVCluster *GetCaloCluster(const Int_t i) const;
- Int_t GetNumberOfCaloClusters() const;
- AliEmcalJet *GetJet(const Int_t i) const;
- Int_t GetNumberOfJets() const;
- AliVCluster *GetTrgCluster(const Int_t i) const;
- Int_t GetNumberOfTrgClusters() const;
- void FillHistograms() ;
- void RetrieveEventObjects() ;
- Bool_t AcceptTrack(AliVTrack* /*track*/) ;
-
- TList *fOutput; // Output list
-
- TString fTracksName; // name of track collection
- TString fCaloName; // name of calo cluster collection
- TString fJetsName; // name of jet collection
- TString fTrgClusName; // name of trg clus name
- TClonesArray *fTracks; //!Tracks
- TClonesArray *fCaloClusters; //!Clusters
- TClonesArray *fJets; //!Jets
- TClonesArray *fTrgClusters; //!Trg Clusters
- AliCentrality *fCent; // Event centrality
- TH1F *fHistCentrality; // Event centrality distribution
- TH2F *fHistTracksCent; // Number of tracks vs. centrality
- TH2F *fHistClusCent; // Number of clusters vs. centrality
- TH1F *fHistTracksPt; // Pt spectrum of tracks
- TH1F *fHistClustersEnergy; // Energy spectrum of clusters
- TH2F *fHistEPcorrelation; // Energy-momentum correlation
- TH1F *fHistJetsEnergy; // Energy spectrum of jets
- TH2F *fHistTrPhiEta; // Phi-Eta distribution of tracks
- TH2F *fHistClusPhiEta; // Phi-Eta distribution of clusters
- TH2F *fHistJetPhiEta; // Phi-Eta distribution of jets
- TH1F *fHistMaxTrgCluster; // Energy distribution of max trigger clusters
- TH1F *fHistTrackPhi[5]; // Phi distribution of hybrid tracks
- TH1F *fHistTrackEta[5]; // Eta distribution of hybrid tracks
-
- Int_t Ptbins; // No. of pt bins
- Float_t Ptlow; // Min pt
- Float_t Ptup; // Max pt
- Int_t Ebins; // No. of e bins
- Float_t Elow; // Min e
- Float_t Eup; // Max e
-
- private:
- AliEmcalQATask(const AliEmcalQATask&); // not implemented
- AliEmcalQATask &operator=(const AliEmcalQATask&); // not implemented
-
- ClassDef(AliEmcalQATask, 1) // Quality task for Emcal analysis
-};
-#endif