// $Id$
+//
+// Jet finder analysis task (S.Aiola)
+//
+//
#include <TChain.h>
#include <TClonesArray.h>
//________________________________________________________________________
AliAnalysisTaskSAJF::AliAnalysisTaskSAJF() :
AliAnalysisTaskSE("AliAnalysisTaskSAJF"),
+ fAnaType(kEMCAL),
fOutput(0),
fTracksName("Tracks"),
fCaloName("CaloClusters"),
fTrgClusters(0),
fCent(0),
fHistCentrality(0),
+ fHistJetPhiEta(0),
Ptbins(400),
Ptlow(0),
Ptup(200),
Eup(200)
{
// Default constructor.
- fBranchNames="ESD:AliESDRun.,AliESDHeader.,PrimaryVertex.";
for (Int_t i = 0; i < 4; i++) {
fHistJetsE[i] = 0;
fHistTracksPtBkg[i] = 0;
fHistClusEBkg[i] = 0;
}
+
+ // Output slot #1 writes into a TH1 container
+ DefineOutput(1, TList::Class());
}
//________________________________________________________________________
AliAnalysisTaskSAJF::AliAnalysisTaskSAJF(const char *name) :
AliAnalysisTaskSE(name),
+ fAnaType(kEMCAL),
fOutput(0),
fTracksName("Tracks"),
fCaloName("CaloClusters"),
fTrgClusters(0),
fCent(0),
fHistCentrality(0),
+ fHistJetPhiEta(0),
Ptbins(400),
Ptlow(0),
Ptup(200),
{
// Standard constructor.
- fBranchNames="ESD:AliESDRun.,AliESDHeader.,PrimaryVertex.";
-
for (Int_t i = 0; i < 4; i++) {
fHistJetsE[i] = 0;
fHistJetsNE[i] = 0;
fHistTracksPtBkg[i] = 0;
fHistClusEBkg[i] = 0;
}
+
+ // Output slot #1 writes into a TH1 container
+ DefineOutput(1, TList::Class());
}
//________________________________________________________________________
fHistCentrality->GetYaxis()->SetTitle("counts");
fOutput->Add(fHistCentrality);
+ 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);
+
TString histname;
for (Int_t i = 0; i < 4; i++) {
void AliAnalysisTaskSAJF::FillHistograms()
{
- Float_t cent = fCent->GetCentralityPercentile("V0M");
+ Float_t cent = 100;
+
+ if (fCent)
+ cent = fCent->GetCentralityPercentile("V0M");
+ else
+ AliWarning("Centrality not available!");
fHistCentrality->Fill(cent);
if (jet->E() <= 0)
continue;
+ if (!AcceptJet(jet))
+ continue;
+
+ fHistJetPhiEta->Fill(jet->Eta(), jet->Phi());
+
fHistJetsE[centbin]->Fill(jet->E());
fHistJetsNEF[centbin]->Fill(jet->NEF());
fHistJetsNE[centbin]->Fill(jet->E() * jet->NEF());
}
}
+//________________________________________________________________________
+Bool_t AliAnalysisTaskSAJF::AcceptJet(AliEmcalJet* jet)
+{
+ if (fAnaType == kFullAcceptance) {
+ return kTRUE;
+ }
+ else if (fAnaType == kEMCAL) {
+ return (Bool_t)(TMath::Abs(jet->Eta()) < 0.7 && jet->Phi() * TMath::RadToDeg() > 80 && jet->Phi() * TMath::RadToDeg() < 180);
+ }
+ else if (fAnaType == kEMCALFiducial) {
+ return (Bool_t)(TMath::Abs(jet->Eta()) < 0.7 && jet->Phi() * TMath::RadToDeg() > 80 && jet->Phi() * TMath::RadToDeg() < 180);
+ }
+ else {
+ AliWarning("Analysis type not recognized! Assuming kFullAcceptance...");
+ return kTRUE;
+ }
+}
//________________________________________________________________________
Bool_t AliAnalysisTaskSAJF::AcceptTrack(AliVTrack* /*track*/)
class AliAnalysisTaskSAJF : public AliAnalysisTaskSE {
public:
+
+ enum SAJFAnaType {
+ kFullAcceptance = 0, // Full acceptance
+ kEMCAL = 1, // EMCal acceptance only
+ kEMCALFiducial = 2 // EMCal fiduacial region only
+ };
+
AliAnalysisTaskSAJF();
AliAnalysisTaskSAJF(const char *name);
virtual ~AliAnalysisTaskSAJF();
void SetJetsName(const char *n) { fJetsName = n ; }
void SetTracksName(const char *n) { fTracksName = n ; }
void SetTrgClusName(const char *n) { fTrgClusName = n ; }
+ void SetAnaType(SAJFAnaType type) { fAnaType = type ; }
protected:
void FillHistograms() ;
void RetrieveEventObjects() ;
Bool_t AcceptTrack(AliVTrack* /*track*/) ;
+ Bool_t AcceptJet(AliEmcalJet* jet) ;
+ SAJFAnaType fAnaType; // analysis type
TList *fOutput; // Output list
-
TString fTracksName; // name of track collection
TString fCaloName; // name of calo cluster collection
TString fJetsName; // name of jet collection
TClonesArray *fTrgClusters; //!Trg Clusters
AliCentrality *fCent; // Event centrality
TH1F *fHistCentrality; // Event centrality distribution
+ TH2F *fHistJetPhiEta; // Phi-Eta distribution of jets
TH1F *fHistJetsE[4]; // Jet energy spectrum
TH1F *fHistJetsNE[4]; // Jet neutral energy spectrum
TH1F *fHistJetsNEF[4]; // Jet neutral energy fraction
// $Id$
+//
+// General QA task (S.Aiola)
+//
+//
#include <TChain.h>
#include <TClonesArray.h>
#include "AliEmcalJet.h"
#include "AliAODTrack.h"
#include "AliESDtrack.h"
-#include "AliEmcalJet.h"
#include "AliVEventHandler.h"
#include "AliPicoTrack.h"
fOutput(0),
fTracksName("Tracks"),
fCaloName("CaloClusters"),
- fJetsName("Jets"),
fTrgClusName("ClustersL1GAMMAFEE"),
fTracks(0),
fCaloClusters(0),
fHistTracksPt(0),
fHistClustersEnergy(0),
fHistEPcorrelation(0),
- fHistJetsEnergy(0),
fHistTrPhiEta(0),
fHistClusPhiEta(0),
- fHistJetPhiEta(0),
fHistMaxTrgCluster(0),
Ptbins(100),
Ptlow(0),
fHistTrackEta[i] = 0;
}
- fBranchNames="ESD:AliESDRun.,AliESDHeader.,PrimaryVertex.";
-
+ // Output slot #1 writes into a TH1 container
+ DefineOutput(1, TList::Class());
}
//________________________________________________________________________
fOutput(0),
fTracksName("Tracks"),
fCaloName("CaloClusters"),
- fJetsName("Jets"),
fTrgClusName("ClustersL1GAMMAFEE"),
fTracks(0),
fCaloClusters(0),
fHistTracksPt(0),
fHistClustersEnergy(0),
fHistEPcorrelation(0),
- fHistJetsEnergy(0),
fHistTrPhiEta(0),
fHistClusPhiEta(0),
- fHistJetPhiEta(0),
fHistMaxTrgCluster(0),
Ptbins(100),
Ptlow(0),
fHistTrackEta[i] = 0;
}
- fBranchNames="ESD:AliESDRun.,AliESDHeader.,PrimaryVertex.";
+ // Output slot #1 writes into a TH1 container
+ DefineOutput(1, TList::Class());
}
//________________________________________________________________________
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");
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");
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) {
return 0;
}
-AliEmcalJet* AliAnalysisTaskSAQA::GetJet(const Int_t i) const
-{
- if (fJets)
- return dynamic_cast<AliEmcalJet*>(fJets->At(i));
- else
- return 0;
-}
-
-Int_t AliAnalysisTaskSAQA::GetNumberOfJets() const
-{
- if (fJets)
- return fJets->GetEntriesFast();
- else
- return 0;
-}
-
AliVCluster* AliAnalysisTaskSAQA::GetTrgCluster(const Int_t i) const
{
if (fTrgClusters)
void AliAnalysisTaskSAQA::FillHistograms()
{
+ Float_t cent = 100;
- fHistCentrality->Fill(fCent->GetCentralityPercentile("V0M"));
- fHistTracksCent->Fill(fCent->GetCentralityPercentile("V0M"), GetNumberOfTracks());
- fHistClusCent->Fill(fCent->GetCentralityPercentile("V0M"), GetNumberOfCaloClusters());
+ if (fCent)
+ cent = fCent->GetCentralityPercentile("V0M");
+ else
+ AliWarning("Centrality not available!");
+
+ fHistCentrality->Fill(cent);
+ fHistTracksCent->Fill(cent, GetNumberOfTracks());
+ fHistClusCent->Fill(cent, GetNumberOfCaloClusters());
// Cluster loop
Int_t nclusters = GetNumberOfCaloClusters();
}
- // 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;
class TList;
class TH1F;
class TH2F;
-class AliEmcalJet;
#include "AliAnalysisTaskSE.h"
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 ; }
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() ;
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
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