#pragma link off all classes;
#pragma link off all functions;
+#pragma link C++ class AliAnalysisEtCuts+;
#pragma link C++ class AliAnalysisEt+;
#pragma link C++ class AliAnalysisEtMonteCarlo+;
#pragma link C++ class AliAnalysisEtMonteCarloEmcal+;
#-*- Mode: Makefile -*-
-SRCS = totEt/AliAnalysisEt.cxx \
+SRCS = totEt/AliAnalysisEtCuts.cxx \
+totEt/AliAnalysisEt.cxx \
totEt/AliAnalysisEtMonteCarlo.cxx \
totEt/AliAnalysisEtMonteCarloEmcal.cxx \
totEt/AliAnalysisEtMonteCarloPhos.cxx \
AliAnalysisEt::AliAnalysisEt() :
fHistogramNameSuffix("")
+ ,fCuts(0)
,fPdgDB(0)
,fPiPlusCode(0)
,fPiMinusCode(0)
,fMultiplicity(0)
,fChargedMultiplicity(0)
,fNeutralMultiplicity(0)
- ,fEtaCut(EtCommonCuts::kEtaCut)
- ,fEtaCutAcc(0)
- ,fPhiCutAccMin(0)
- ,fPhiCutAccMax(360.)
- ,fDetectorRadius(460.)
- ,fVertexXCut(0)
- ,fVertexYCut(0)
- ,fVertexZCut(0)
- ,fIPxyCut(0)
- ,fIPzCut(0)
- ,fClusterEnergyCut(EtCommonCuts::kClusterEnergyCut)
- ,fTrackPtCut(EtCommonCuts::kTrackPtCut)
- ,fSingleCellEnergyCut(0)
+ ,fEtaCutAcc(0)
+ ,fPhiCutAccMin(0)
+ ,fPhiCutAccMax(0)
+ ,fDetectorRadius(0)
+ ,fClusterEnergyCut(0)
+ ,fSingleCellEnergyCut(0)
,fHistEt(0)
,fHistChargedEt(0)
,fHistNeutralEt(0)
void AliAnalysisEt::Init()
{// set up cuts and PDG info
- fVertexXCut = EtReconstructedCuts::kVertexXCut;
- fVertexYCut = EtReconstructedCuts::kVertexYCut;
- fVertexZCut = EtReconstructedCuts::kVertexZCut;
- fIPxyCut = EtReconstructedCuts::kIPxyCut;
- fIPzCut = EtReconstructedCuts::kIPzCut;
+ if (!fCuts) fCuts = new AliAnalysisEtCuts();
if(!fPdgDB) fPdgDB = new TDatabasePDG();
SetParticleCodes();
class TList;
class Rtypes;
class TDatabasePDG;
+class AliAnalysisEtCuts;
class AliAnalysisEt
{
AliAnalysisEt();
virtual ~AliAnalysisEt();
-
-private:
- //Declare private to avoid compilation warning
- AliAnalysisEt & operator = (const AliAnalysisEt & g) ;//cpy assignment
- AliAnalysisEt(const AliAnalysisEt & g) ; // cpy ctor
public:
/** Set Particle codes/mass */
virtual void SetParticleCodes();
+ /** Cuts info */
+ AliAnalysisEtCuts * GetCuts() const { return fCuts; }
+ virtual void SetCuts(const AliAnalysisEtCuts *cuts)
+ { fCuts = (AliAnalysisEtCuts *) cuts; }
+
/** Sum of the total Et for all events */
Double_t GetSumEt() const { return fSumEt; }
TString fHistogramNameSuffix; /** The suffix for the histogram names */
+ AliAnalysisEtCuts *fCuts; // keeper of basic cuts
+
/** PDG Database */
TDatabasePDG *fPdgDB;//data base used for looking up pdg codes
//these codes are stored as variables because otherwise there were issues using this with the plugin
Int_t fMultiplicity;/** Multiplicity of particles in the event */
Int_t fChargedMultiplicity;/** Multiplicity of charged particles in the event */
Int_t fNeutralMultiplicity; /** Multiplicity of neutral particles in the event */
-
- Double_t fEtaCut;/** Cut in eta ( normally |eta| < 0.5 */
+
Double_t fEtaCutAcc;/** Eta cut for our acceptance */
-
Double_t fPhiCutAccMin; /** Min phi cut for our acceptance in radians */
Double_t fPhiCutAccMax; /** Max phi cut for our acceptance in radians */
-
Double_t fDetectorRadius; /** Detector radius */
-
- Double_t fVertexXCut;/** Vertex cuts x direction */
- Double_t fVertexYCut;/** Vertex cuts y direction*/
- Double_t fVertexZCut;/** Vertex cuts z direction*/
-
- Double_t fIPxyCut; /** Impact parameter cuts x-y plane*/
- Double_t fIPzCut; /** Impact parameter cuts z*/
-
Double_t fClusterEnergyCut; /** Cut on the cluster energy */
- Double_t fTrackPtCut; /** Cut on track pt */
Double_t fSingleCellEnergyCut; /** Minimum energy to cut on single cell cluster */
-
+
// Declare the histograms
/** The full Et spectrum measured */
TH1F *fHistTMDeltaR; /* Track matching plots */
+private:
+ //Declare private to avoid compilation warning
+ AliAnalysisEt & operator = (const AliAnalysisEt & g) ;//cpy assignment
+ AliAnalysisEt(const AliAnalysisEt & g) ; // cpy ctor
+
ClassDef(AliAnalysisEt, 0);
};
--- /dev/null
+//_________________________________________________________________________
+// Utility Class for transverse energy studies
+// Base class for ESD & MC analysis
+// - cuts for reconstruction and MonteCarlo
+// implementation file
+//
+//*-- Authors: Oystein Djuvsland (Bergen), David Silvermyr (ORNL)
+//_________________________________________________________________________
+
+#include "AliAnalysisEtCuts.h"
+
+#include <iostream>
+#include "TNamed.h"
+
+using namespace std;
+
+ClassImp(AliAnalysisEtCuts);
+
+
+AliAnalysisEtCuts::AliAnalysisEtCuts() :
+ TNamed()
+ //
+ ,fCommonEtaCut(0.8)
+ ,fCommonClusterEnergyCut(0.0)
+ ,fCommonTrackPtCut(0.0)
+ ,fCommonSingleCell(1)
+ //
+ ,fGeometryPhosEtaAccCut(0.12)
+ ,fGeometryPhosPhiAccMinCut(260.0)
+ ,fGeometryPhosPhiAccMaxCut(320.0)
+ ,fGeometryPhosDetectorRadius(460.0)
+ //
+ ,fGeometryEmcalEtaAccCut(0.7)
+ ,fGeometryEmcalPhiAccMinCut(80.0) // rad 1.4
+ ,fGeometryEmcalPhiAccMaxCut(120.0) // rad 2.1
+ ,fGeometryEmcalDetectorRadius(440.0)
+ //
+ ,fReconstructedVertexXCut(0.5)
+ ,fReconstructedVertexYCut(0.5)
+ ,fReconstructedVertexZCut(12.0)
+ ,fReconstructedIPxyCut(1.5)
+ ,fReconstructedIPzCut(1.5)
+ ,fReconstructedNTpcClustersCut(30)
+ ,fReconstructedNItsClustersCut(3)
+ //
+ ,fReconstructedPhosClusterType(-1)
+ ,fReconstructedPhosClusterEnergyCut(0.0)
+ ,fReconstructedPhosSingleCellEnergyCut(0.5)
+ ,fReconstructedPhosTrackDistanceCut(15.0)
+ //
+ ,fReconstructedEmcalClusterType(-1)
+ ,fReconstructedEmcalClusterEnergyCut(0.1) // GeV
+ ,fReconstructedEmcalSingleCellEnergyCut(0.5)
+ ,fReconstructedEmcalTrackDistanceCut(15.0)
+
+ ,fMonteCarloSingleChargedParticle(3)
+ ,fMonteCarloNeutralParticle(0)
+{ // ctor
+}
+
+AliAnalysisEtCuts::~AliAnalysisEtCuts()
+{ // dtor
+}
+
+
-#ifndef ALIANALYSISETCOMMONCUTS_H
-#define ALIANALYSISETCOMMONCUTS_H
+#ifndef ALIANALYSISETCUTS_H
+#define ALIANALYSISETCUTS_H
+//_________________________________________________________________________
+// Utility Class for transverse energy studies
+// Base class for ESD & MC analysis
+// - cuts for reconstruction and MonteCarlo
+//
+//*-- Authors: Oystein Djuvsland (Bergen), David Silvermyr (ORNL)
+//_________________________________________________________________________
-#include "Rtypes.h"
+#include "TNamed.h"
-namespace EtCommonCuts
+class AliAnalysisEtCuts : public TNamed
{
+ public:
- const Double_t kEtaCut = 0.8;
- const Double_t kClusterEnergyCut = 0.0;
- const Double_t kTrackPtCut = 0.0;
-
- const Int_t kSingleCell = 1;
-
-};
+ AliAnalysisEtCuts();
+ virtual ~AliAnalysisEtCuts();
-namespace EtGeometryCutsPhos
-{
- const Double_t kEtaAccCut = 0.12;
- const Double_t kPhiAccMinCut = 260.0;
- const Double_t kPhiAccMaxCut = 320.0;
- const Double_t kDetectorRadius = 460.0;
-};
+ // Getters
+ // Common
+ Double_t GetCommonEtaCut() const { return fCommonEtaCut; }
+ Double_t GetCommonClusterEnergyCut() const { return fCommonClusterEnergyCut; }
+ Double_t GetCommonTrackPtCut() const { return fCommonTrackPtCut; }
+ Int_t GetCommonSingleCell() const { return fCommonSingleCell; }
+ // GeometryPhos
+ Double_t GetGeometryPhosEtaAccCut() const { return fGeometryPhosEtaAccCut; }
+ Double_t GetGeometryPhosPhiAccMinCut() const { return fGeometryPhosPhiAccMinCut; }
+ Double_t GetGeometryPhosPhiAccMaxCut() const { return fGeometryPhosPhiAccMaxCut; }
+ Double_t GetGeometryPhosDetectorRadius() const { return fGeometryPhosDetectorRadius; }
+ // GeometryEmcal
+ Double_t GetGeometryEmcalEtaAccCut() const { return fGeometryEmcalEtaAccCut; }
+ Double_t GetGeometryEmcalPhiAccMinCut() const { return fGeometryEmcalPhiAccMinCut; }
+ Double_t GetGeometryEmcalPhiAccMaxCut() const { return fGeometryEmcalPhiAccMaxCut; }
+ Double_t GetGeometryEmcalDetectorRadius() const { return fGeometryEmcalDetectorRadius; }
+ // Reconstructed
+ Double_t GetReconstructedVertexXCut() const { return fReconstructedVertexXCut; }
+ Double_t GetReconstructedVertexYCut() const { return fReconstructedVertexYCut; }
+ Double_t GetReconstructedVertexZCut() const { return fReconstructedVertexZCut; }
+ Double_t GetReconstructedIPxyCut() const { return fReconstructedIPxyCut; }
+ Double_t GetReconstructedIPzCut() const { return fReconstructedIPzCut; }
+ Int_t GetReconstructedNTpcClustersCut() const { return fReconstructedNTpcClustersCut; }
+ Int_t GetReconstructedNItsClustersCut() const { return fReconstructedNItsClustersCut; }
+ // ReconstructedPhos
+ Char_t GetReconstructedPhosClusterType() const { return fReconstructedPhosClusterType; }
+ Double_t GetReconstructedPhosClusterEnergyCut() const { return fReconstructedPhosClusterEnergyCut; }
+ Double_t GetReconstructedPhosSingleCellEnergyCut() const { return fReconstructedPhosSingleCellEnergyCut; }
+ Double_t GetReconstructedPhosTrackDistanceCut() const { return fReconstructedPhosTrackDistanceCut; }
+ // ReconstructedEmcal
+ Char_t GetReconstructedEmcalClusterType() const { return fReconstructedEmcalClusterType; }
+ Double_t GetReconstructedEmcalClusterEnergyCut() const { return fReconstructedEmcalClusterEnergyCut; }
+ Double_t GetReconstructedEmcalSingleCellEnergyCut() const { return fReconstructedEmcalSingleCellEnergyCut; }
+ Double_t GetReconstructedEmcalTrackDistanceCut() const { return fReconstructedEmcalTrackDistanceCut; }
+ // MonteCarlo
+ Double_t GetMonteCarloSingleChargedParticle() const { return fMonteCarloSingleChargedParticle; }
+ Double_t GetMonteCarloNeutralParticle() const { return fMonteCarloNeutralParticle; }
-namespace EtGeometryCutsEmcal
-{
- const Double_t kEtaAccCut = 0.7;
- const Double_t kPhiAccMinCut = 80.0; // rad 1.4
- const Double_t kPhiAccMaxCut = 120.0; // rad 2.1
- const Double_t kDetectorRadius = 440.0;
-};
+ // Setters
+ // Common
+ void SetCommonEtaCut(const Double_t val) { fCommonEtaCut = val; }
+ void SetCommonClusterEnergyCut(const Double_t val) { fCommonClusterEnergyCut = val; }
+ void SetCommonTrackPtCut(const Double_t val) { fCommonTrackPtCut = val; }
+ void SetCommonSingleCell(const Int_t val) { fCommonSingleCell = val;}
+ // GeometryPhos
+ void SetGeometryPhosEtaAccCut(const Double_t val) { fGeometryPhosEtaAccCut = val; }
+ void SetGeometryPhosPhiAccMinCut(const Double_t val) { fGeometryPhosPhiAccMinCut = val; }
+ void SetGeometryPhosPhiAccMaxCut(const Double_t val) { fGeometryPhosPhiAccMaxCut = val; }
+ void SetGeometryPhosDetectorRadius(const Double_t val) { fGeometryPhosDetectorRadius = val; }
+ // GeometryEmcal
+ void SetGeometryEmcalEtaAccCut(const Double_t val) { fGeometryEmcalEtaAccCut = val; }
+ void SetGeometryEmcalPhiAccMinCut(const Double_t val) { fGeometryEmcalPhiAccMinCut = val; }
+ void SetGeometryEmcalPhiAccMaxCut(const Double_t val) { fGeometryEmcalPhiAccMaxCut = val; }
+ void SetGeometryEmcalDetectorRadius(const Double_t val) { fGeometryEmcalDetectorRadius = val; }
+ // Reconstructed
+ void SetReconstructedVertexXCut(const Double_t val) { fReconstructedVertexXCut = val; }
+ void SetReconstructedVertexYCut(const Double_t val) { fReconstructedVertexYCut = val; }
+ void SetReconstructedVertexZCut(const Double_t val) { fReconstructedVertexZCut = val; }
+ void SetReconstructedIPxyCut(const Double_t val) { fReconstructedIPxyCut = val; }
+ void SetReconstructedIPzCut(const Double_t val) { fReconstructedIPzCut = val; }
+ void SetReconstructedNTpcClustersCut(const Int_t val) { fReconstructedNTpcClustersCut = val; }
+ void SetReconstructedNItsClustersCut(const Int_t val) { fReconstructedNItsClustersCut = val; }
+ // ReconstructedPhos
+ void SetReconstructedPhosClusterType(const Char_t val) { fReconstructedPhosClusterType = val; }
+ void SetReconstructedPhosClusterEnergyCut(const Double_t val) { fReconstructedPhosClusterEnergyCut = val; }
+ void SetReconstructedPhosSingleCellEnergyCut(const Double_t val) { fReconstructedPhosSingleCellEnergyCut = val; }
+ void SetReconstructedPhosTrackDistanceCut(const Double_t val) { fReconstructedPhosTrackDistanceCut = val; }
+ // ReconstructedEmcal
+ void SetReconstructedEmcalClusterType(const Char_t val) { fReconstructedEmcalClusterType = val; }
+ void SetReconstructedEmcalClusterEnergyCut(const Double_t val) { fReconstructedEmcalClusterEnergyCut = val; }
+ void SetReconstructedEmcalSingleCellEnergyCut(const Double_t val) { fReconstructedEmcalSingleCellEnergyCut = val; }
+ void SetReconstructedEmcalTrackDistanceCut(const Double_t val) { fReconstructedEmcalTrackDistanceCut = val; }
+ // MonteCarlo
+ void SetMonteCarloSingleChargedParticle(const Double_t val) { fMonteCarloSingleChargedParticle = val; }
+ void SetMonteCarloNeutralParticle(const Double_t val) { fMonteCarloNeutralParticle = val; }
-namespace EtReconstructedCuts
-{
- const Double_t kVertexXCut = 0.5;
- const Double_t kVertexYCut = 0.5;
- const Double_t kVertexZCut = 12.0;
- const Double_t kIPxyCut = 1.5;
- const Double_t kIPzCut = 1.5;
-
- const Int_t kNTpcClustersCut = 30;
- const Int_t knItsClustersCut = 3;
-
-};
+ protected:
-namespace EtReconstructedCutsPhos
-{
- const Char_t kClusterType = -1;
-
- const Double_t kClusterEnergyCut = 0.0;
- const Double_t kSingleCellEnergyCut = 0.5;
-
- const Double_t kTrackDistanceCut = 15.0;
-
-};
+ // Common
+ Double_t fCommonEtaCut; // Eta cut
+ Double_t fCommonClusterEnergyCut; // Cluster Energy cut
+ Double_t fCommonTrackPtCut; // Track Pt
+ Int_t fCommonSingleCell; // Single Cell (1)
-namespace EtReconstructedCutsEmcal
-{
- const Char_t kClusterType = -1;
-
- const Double_t kClusterEnergyCut = 0.1; // GeV
- const Double_t kSingleCellEnergyCut = 0.5;
-
- const Double_t kTrackDistanceCut = 15.0;
-
-};
+ // GeometryPhos
+ Double_t fGeometryPhosEtaAccCut; // PHOS Eta Acc cut
+ Double_t fGeometryPhosPhiAccMinCut; // PHOS Phi Acc Min cut
+ Double_t fGeometryPhosPhiAccMaxCut; // PHOS Phi Acc Max cut
+ Double_t fGeometryPhosDetectorRadius; // PHOS Detector Radius
-namespace EtMonteCarloCuts
-{
-
- const Double_t kSingleChargedParticle = 3;
- const Double_t kNeutralParticle = 0;
-
+ // GeometryEmcal
+ Double_t fGeometryEmcalEtaAccCut; // EMCal Eta Acc cut
+ Double_t fGeometryEmcalPhiAccMinCut; // EMCal Phi Acc Min cut
+ Double_t fGeometryEmcalPhiAccMaxCut; // EMCal Phi Acc Max cut
+ Double_t fGeometryEmcalDetectorRadius; // EMCal Detector Radius
+
+ // Reconstructed
+ Double_t fReconstructedVertexXCut; // vertex X cut
+ Double_t fReconstructedVertexYCut; // vertex Y cut
+ Double_t fReconstructedVertexZCut; // vertex Z cut
+ Double_t fReconstructedIPxyCut; // IP xy cut
+ Double_t fReconstructedIPzCut; // IP z cut
+ Int_t fReconstructedNTpcClustersCut; // # of TPC clusters cut
+ Int_t fReconstructedNItsClustersCut; // # of ITS clusters cut
+
+ // ReconstructedPhos
+ Char_t fReconstructedPhosClusterType; // PHOS cluster type
+ Double_t fReconstructedPhosClusterEnergyCut; // PHOS cluster energy
+ Double_t fReconstructedPhosSingleCellEnergyCut; // PHOS single cell energy
+ Double_t fReconstructedPhosTrackDistanceCut; // PHOS track distance
+
+ // ReconstructedEmcal
+ Char_t fReconstructedEmcalClusterType; // EMCal cluster type
+ Double_t fReconstructedEmcalClusterEnergyCut; // EMCal cluster energy
+ Double_t fReconstructedEmcalSingleCellEnergyCut; // EMCal single cell energy
+ Double_t fReconstructedEmcalTrackDistanceCut; // EMCal track distance
+
+ // MonteCarlo
+ Double_t fMonteCarloSingleChargedParticle; // MC charged
+ Double_t fMonteCarloNeutralParticle; // MC neutral
+
+private:
+ //Declare private to avoid compilation warning
+ AliAnalysisEtCuts & operator = (const AliAnalysisEtCuts & g) ;//copy assignment
+ AliAnalysisEtCuts(const AliAnalysisEtCuts & g) ; // copy ctor
+
+ ClassDef(AliAnalysisEtCuts, 0);
};
-#endif
+#endif // ALIANALYSISETCUTS_H
// Check for reasonable (for now neutral and singly charged) charge on the particle
//TODO:Maybe not only singly charged?
- if (TMath::Abs(pc->Charge()) != EtMonteCarloCuts::kSingleChargedParticle && pc->Charge() != EtMonteCarloCuts::kNeutralParticle) continue;
+ if (TMath::Abs(pc->Charge()) != fCuts->GetMonteCarloSingleChargedParticle() && pc->Charge() != fCuts->GetMonteCarloNeutralParticle()) continue;
fMultiplicity++;
- if (TMath::Abs(part->Eta()) < fEtaCut)
+ if (TMath::Abs(part->Eta()) < fCuts->GetCommonEtaCut())
{
TParticlePDG *pdgCode = part->GetPDG(0);
particleMassPart = -TMath::Sign(pdgCode->PdgCode(), pdgCode->PdgCode())*pdgCode->Mass();
}
- if (pdgCode->Charge() == EtMonteCarloCuts::kNeutralParticle)
+ if (pdgCode->Charge() == fCuts->GetMonteCarloNeutralParticle() )
{
fNeutralMultiplicity++;
fTotNeutralEt += part->Energy()*TMath::Sin(part->Theta());
fTotEtAcc += part->Energy()*TMath::Sin(part->Theta());
}
}
- else if (pdgCode->Charge() != EtMonteCarloCuts::kNeutralParticle)
+ else if (pdgCode->Charge() != fCuts->GetMonteCarloNeutralParticle() )
{
fChargedMultiplicity++;
fTotChargedEt += part->Energy()*TMath::Sin(part->Theta());
void AliAnalysisEtMonteCarloEmcal::Init()
{ // Init
- AliAnalysisEtMonteCarlo::Init();
-
- fDetectorRadius = EtGeometryCutsEmcal::kDetectorRadius;
- fEtaCutAcc = EtGeometryCutsEmcal::kEtaAccCut;
- fPhiCutAccMax = EtGeometryCutsEmcal::kPhiAccMaxCut*TMath::Pi()/180.;
- fPhiCutAccMin = EtGeometryCutsEmcal::kPhiAccMinCut*TMath::Pi()/180.;
- fDetectorRadius = EtGeometryCutsEmcal::kDetectorRadius;
- fClusterEnergyCut = EtReconstructedCutsEmcal::kClusterEnergyCut;
- fSingleCellEnergyCut = EtReconstructedCutsEmcal::kSingleCellEnergyCut;
-
+ AliAnalysisEtMonteCarlo::Init();
+
+ fDetectorRadius = fCuts->GetGeometryEmcalDetectorRadius();
+ fEtaCutAcc = fCuts->GetGeometryEmcalEtaAccCut();
+ fPhiCutAccMax = fCuts->GetGeometryEmcalPhiAccMaxCut() * TMath::Pi()/180.;
+ fPhiCutAccMin = fCuts->GetGeometryEmcalPhiAccMinCut() * TMath::Pi()/180.;
+ fClusterEnergyCut = fCuts->GetReconstructedEmcalClusterEnergyCut();
+ fSingleCellEnergyCut = fCuts->GetReconstructedEmcalSingleCellEnergyCut();
+
}
void AliAnalysisEtMonteCarloPhos::Init()
{ // Init
- AliAnalysisEtMonteCarlo::Init();
+ AliAnalysisEtMonteCarlo::Init();
- fDetectorRadius = EtGeometryCutsPhos::kDetectorRadius;
- fEtaCutAcc = EtGeometryCutsPhos::kEtaAccCut;
- fPhiCutAccMax = EtGeometryCutsPhos::kPhiAccMaxCut*TMath::Pi()/180.;
- fPhiCutAccMin = EtGeometryCutsPhos::kPhiAccMinCut*TMath::Pi()/180.;
- fDetectorRadius = EtGeometryCutsPhos::kDetectorRadius;
- fClusterEnergyCut = EtReconstructedCutsPhos::kClusterEnergyCut;
- fSingleCellEnergyCut = EtReconstructedCutsPhos::kSingleCellEnergyCut;
+ fDetectorRadius = fCuts->GetGeometryPhosDetectorRadius();
+ fEtaCutAcc = fCuts->GetGeometryPhosEtaAccCut();
+ fPhiCutAccMax = fCuts->GetGeometryPhosPhiAccMaxCut() * TMath::Pi()/180.;
+ fPhiCutAccMin = fCuts->GetGeometryPhosPhiAccMinCut() * TMath::Pi()/180.;
+ fClusterEnergyCut = fCuts->GetReconstructedPhosClusterEnergyCut();
+ fSingleCellEnergyCut = fCuts->GetReconstructedPhosSingleCellEnergyCut();
}
AliAnalysisEtReconstructed::AliAnalysisEtReconstructed() :
AliAnalysisEt()
- ,fNTpcClustersCut(EtReconstructedCuts::kNTpcClustersCut)
- ,fNItsClustersCut(EtReconstructedCuts::knItsClustersCut)
,fTrackDistanceCut(0)
,fClusterType(0)
{
Double_t et = track->E() * TMath::Sin(track->Theta()) + massPart;
// printf("Rec track: iTrack %03d eta %4.3f phi %4.3f nITSCl %d nTPCCl %d\n", iTrack, track->Eta(), track->Phi(), nItsClusters, nTPCClusters); // tmp/debug printout
- if (TMath::Abs(track->Eta()) < fEtaCut && CheckGoodVertex(track) && nItsClusters > fNItsClustersCut && nTPCClusters > fNTpcClustersCut)
+ if (TMath::Abs(track->Eta()) < fCuts->GetCommonEtaCut() && CheckGoodVertex(track) && nItsClusters > fCuts->GetReconstructedNItsClustersCut() && nTPCClusters > fCuts->GetReconstructedNTpcClustersCut() )
{
fTotChargedEt += et;
fChargedMultiplicity++;
// }
}
- if (cluster->E() > fSingleCellEnergyCut && cluster->GetNCells() == EtCommonCuts::kSingleCell) continue;
+ if (cluster->E() > fSingleCellEnergyCut && cluster->GetNCells() == fCuts->GetCommonSingleCell()) continue;
cluster->GetPosition(pos);
Float_t bz = 999.;
dynamic_cast<AliESDtrack*>(track)->GetImpactParametersTPC(bxy,bz);
- // printf("Rec CheckGoodVertex: TMath::Abs(track->Xv()) %f fVertexXCut %f TMath::Abs(track->Yv()) %f fVertexYCut %f TMath::Abs(track->Zv()) %f fVertexZCut %f TMath::Abs(bxy) %f fIPxyCut %f TMath::Abs(bz) %f fIPzCut %f\n", TMath::Abs(track->Xv()), fVertexXCut, TMath::Abs(track->Yv()), fVertexYCut, TMath::Abs(track->Zv()), fVertexZCut, TMath::Abs(bxy), fIPxyCut, TMath::Abs(bz), fIPzCut); // tmp/debug printout
-
- return TMath::Abs(track->Xv()) < fVertexXCut && TMath::Abs(track->Yv()) < fVertexYCut && TMath::Abs(track->Zv()) < fVertexZCut && TMath::Abs(bxy) < fIPxyCut && TMath::Abs(bz) < fIPzCut;
+ bool status = (TMath::Abs(track->Xv()) < fCuts->GetReconstructedVertexXCut()) &&
+ (TMath::Abs(track->Yv()) < fCuts->GetReconstructedVertexYCut()) &&
+ (TMath::Abs(track->Zv()) < fCuts->GetReconstructedVertexZCut()) &&
+ (TMath::Abs(bxy) < fCuts->GetReconstructedIPxyCut()) &&
+ (TMath::Abs(bz) < fCuts->GetReconstructedIPzCut());
+ return status;
}
void AliAnalysisEtReconstructed::Init()
bool CheckGoodVertex(AliVParticle *track);
virtual bool TrackHitsCalorimeter(AliVParticle *track, Double_t magField);
- Int_t fNTpcClustersCut; // cut on # of TPC clusters
- Int_t fNItsClustersCut; // cut on # of ITS clusters
Double_t fTrackDistanceCut; // cut on track distance
Char_t fClusterType; // selection on cluster type
void AliAnalysisEtReconstructedEmcal::Init()
{ // Init
- AliAnalysisEtReconstructed::Init();
+ AliAnalysisEtReconstructed::Init();
- fClusterType = EtReconstructedCutsEmcal::kClusterType;
- fDetectorRadius = EtGeometryCutsEmcal::kDetectorRadius;
- fEtaCutAcc = EtGeometryCutsEmcal::kEtaAccCut;
- fPhiCutAccMax = EtGeometryCutsEmcal::kPhiAccMaxCut*TMath::Pi()/180.;
- fPhiCutAccMin = EtGeometryCutsEmcal::kPhiAccMinCut*TMath::Pi()/180.;
- fClusterEnergyCut = EtReconstructedCutsEmcal::kClusterEnergyCut;
- fSingleCellEnergyCut = EtReconstructedCutsEmcal::kSingleCellEnergyCut;
- fTrackDistanceCut = EtReconstructedCutsEmcal::kTrackDistanceCut;
+ fDetectorRadius = fCuts->GetGeometryEmcalDetectorRadius();
+ fEtaCutAcc = fCuts->GetGeometryEmcalEtaAccCut();
+ fPhiCutAccMax = fCuts->GetGeometryEmcalPhiAccMaxCut() * TMath::Pi()/180.;
+ fPhiCutAccMin = fCuts->GetGeometryEmcalPhiAccMinCut() * TMath::Pi()/180.;
+ fClusterEnergyCut = fCuts->GetReconstructedEmcalClusterEnergyCut();
+ fSingleCellEnergyCut = fCuts->GetReconstructedEmcalSingleCellEnergyCut();
+
+ fClusterType = fCuts->GetReconstructedEmcalClusterType();
+ fTrackDistanceCut = fCuts->GetReconstructedEmcalTrackDistanceCut();
}
void AliAnalysisEtReconstructedPhos::Init()
{ // Init
- AliAnalysisEtReconstructed::Init();
+ AliAnalysisEtReconstructed::Init();
- fClusterType = EtReconstructedCutsPhos::kClusterType;
- fDetectorRadius = EtGeometryCutsPhos::kDetectorRadius;
- fEtaCutAcc = EtGeometryCutsPhos::kEtaAccCut;
- fPhiCutAccMax = EtGeometryCutsPhos::kPhiAccMaxCut*TMath::Pi()/180.;
- fPhiCutAccMin = EtGeometryCutsPhos::kPhiAccMinCut*TMath::Pi()/180.;
- fClusterEnergyCut = EtReconstructedCutsPhos::kClusterEnergyCut;
- fSingleCellEnergyCut = EtReconstructedCutsPhos::kSingleCellEnergyCut;
- fTrackDistanceCut = EtReconstructedCutsPhos::kTrackDistanceCut;
-
+ fDetectorRadius = fCuts->GetGeometryPhosDetectorRadius();
+ fEtaCutAcc = fCuts->GetGeometryPhosEtaAccCut();
+ fPhiCutAccMax = fCuts->GetGeometryPhosPhiAccMaxCut() * TMath::Pi()/180.;
+ fPhiCutAccMin = fCuts->GetGeometryPhosPhiAccMinCut() * TMath::Pi()/180.;
+ fClusterEnergyCut = fCuts->GetReconstructedPhosClusterEnergyCut();
+ fSingleCellEnergyCut = fCuts->GetReconstructedPhosSingleCellEnergyCut();
+
+ fClusterType = fCuts->GetReconstructedPhosClusterType();
+ fTrackDistanceCut = fCuts->GetReconstructedPhosTrackDistanceCut();
+
}
bool AliAnalysisEtReconstructedPhos::TrackHitsCalorimeter(AliVParticle* track, Double_t magField)
AliAnalysisHadEt::AliAnalysisHadEt() :
fHistogramNameSuffix("")
+ ,fCuts(0)
,fPdgDB(0)
,fPiPlusCode(0)
,fPiMinusCode(0)
,fMultiplicity(0)
,fChargedMultiplicity(0)
,fNeutralMultiplicity(0)
- ,fEtaCut(EtCommonCuts::kEtaCut)
- ,fEtaCutAcc(0)
- //,fPhiCutAccMin(0)
- //,fPhiCutAccMax(360.)
- ,fVertexXCut(0)
- ,fVertexYCut(0)
- ,fVertexZCut(0)
- ,fIPxyCut(0)
- ,fIPzCut(0)
- //,fSingleCellEnergyCut(0)
- //,fClusterEnergyCut(EtCommonCuts::kClusterEnergyCut)
- //,fTrackPtCut(EtCommonCuts::kTrackPtCut)
,fEsdtrackCutsITSTPC(0)
,fEsdtrackCutsTPC(0)
,fEsdtrackCutsITS(0)
void AliAnalysisHadEt::Init()
{//Initiate member vaiables to reasonable values
- fVertexXCut = EtReconstructedCuts::kVertexXCut;
- fVertexYCut = EtReconstructedCuts::kVertexYCut;
- fVertexZCut = EtReconstructedCuts::kVertexZCut;
- fIPxyCut = EtReconstructedCuts::kIPxyCut;
- fIPzCut = EtReconstructedCuts::kIPzCut;
+ if (!fCuts) fCuts = new AliAnalysisEtCuts();
if(!fPdgDB) fPdgDB = new TDatabasePDG();
- //the codes are defined in $ROOTSYS/etc/pdg_table.txt
- fPionMass = fPdgDB->GetParticle("pi+")->Mass();
- fPiPlusCode = fPdgDB->GetParticle("pi+")->PdgCode();
- fPiMinusCode = fPdgDB->GetParticle("pi-")->PdgCode();
- fKPlusCode = fPdgDB->GetParticle("K+")->PdgCode();
- fKMinusCode = fPdgDB->GetParticle("K-")->PdgCode();
- fProtonCode = fPdgDB->GetParticle("proton")->PdgCode();
- fAntiProtonCode = fPdgDB->GetParticle("antiproton")->PdgCode();
- fLambdaCode = fPdgDB->GetParticle("Lambda0")->PdgCode();
- fAntiLambdaCode = fPdgDB->GetParticle("Lambda0_bar")->PdgCode();
- fK0SCode = fPdgDB->GetParticle("K_S0")->PdgCode();
- fOmegaCode = fPdgDB->GetParticle("Omega-")->PdgCode();
- fAntiOmegaCode = fPdgDB->GetParticle("Omega+")->PdgCode();
- fXi0Code = fPdgDB->GetParticle("Xi0")->PdgCode();
- fAntiXi0Code = fPdgDB->GetParticle("Xi0_bar")->PdgCode();
- fXiCode = fPdgDB->GetParticle("Xi-")->PdgCode();
- fAntiXiCode = fPdgDB->GetParticle("Xi-_bar")->PdgCode();
- fSigmaCode = fPdgDB->GetParticle("Sigma-")->PdgCode();
- fAntiSigmaCode = fPdgDB->GetParticle("Sigma+")->PdgCode();
- fK0LCode = fPdgDB->GetParticle("K_L0")->PdgCode();
- fNeutronCode = fPdgDB->GetParticle("neutron")->PdgCode();
- fAntiNeutronCode = fPdgDB->GetParticle("antineutron")->PdgCode();
- fEPlusCode = fPdgDB->GetParticle("e+")->PdgCode();
- fEMinusCode = fPdgDB->GetParticle("e-")->PdgCode();
+ SetParticleCodes();
}
void AliAnalysisHadEt::CreateHistograms()
fChargedMultiplicity = 0;
fNeutralMultiplicity = 0;
}
+
+void AliAnalysisHadEt::SetParticleCodes()
+{ //the codes are defined in $ROOTSYS/etc/pdg_table.txt
+ fPionMass = fPdgDB->GetParticle("pi+")->Mass();
+ fPiPlusCode = fPdgDB->GetParticle("pi+")->PdgCode();
+ fPiMinusCode = fPdgDB->GetParticle("pi-")->PdgCode();
+ fKPlusCode = fPdgDB->GetParticle("K+")->PdgCode();
+ fKMinusCode = fPdgDB->GetParticle("K-")->PdgCode();
+ fProtonCode = fPdgDB->GetParticle("proton")->PdgCode();
+ fAntiProtonCode = fPdgDB->GetParticle("antiproton")->PdgCode();
+ fLambdaCode = fPdgDB->GetParticle("Lambda0")->PdgCode();
+ fAntiLambdaCode = fPdgDB->GetParticle("Lambda0_bar")->PdgCode();
+ fK0SCode = fPdgDB->GetParticle("K_S0")->PdgCode();
+ fOmegaCode = fPdgDB->GetParticle("Omega-")->PdgCode();
+ fAntiOmegaCode = fPdgDB->GetParticle("Omega+")->PdgCode();
+ fXi0Code = fPdgDB->GetParticle("Xi0")->PdgCode();
+ fAntiXi0Code = fPdgDB->GetParticle("Xi0_bar")->PdgCode();
+ fXiCode = fPdgDB->GetParticle("Xi-")->PdgCode();
+ fAntiXiCode = fPdgDB->GetParticle("Xi-_bar")->PdgCode();
+ fSigmaCode = fPdgDB->GetParticle("Sigma-")->PdgCode();
+ fAntiSigmaCode = fPdgDB->GetParticle("Sigma+")->PdgCode();
+ fK0LCode = fPdgDB->GetParticle("K_L0")->PdgCode();
+ fNeutronCode = fPdgDB->GetParticle("neutron")->PdgCode();
+ fAntiNeutronCode = fPdgDB->GetParticle("antineutron")->PdgCode();
+ fEPlusCode = fPdgDB->GetParticle("e+")->PdgCode();
+ fEMinusCode = fPdgDB->GetParticle("e-")->PdgCode();
+}
+
void AliAnalysisHadEt::CreateEtaPtHisto2D(TString name, TString title)
{ //creates a 2-d histogram in eta and phi and adds it to the list of histograms to be saved
TString *histoname = new TString();
class Rtypes;
class TParticle;
class TDatabasePDG;
+class AliAnalysisEtCuts;
class AliAnalysisHadEt
{
/** Reset event specific values (Et etc.) */
virtual void ResetEventValues();
+
+ /** Set Particle codes/mass */
+ virtual void SetParticleCodes();
+
+ /** Cuts info */
+ AliAnalysisEtCuts * GetCuts() const { return fCuts; }
+ virtual void SetCuts(const AliAnalysisEtCuts *cuts)
+ { fCuts = (AliAnalysisEtCuts *) cuts; }
/** Sum of the total Et for all events */
Double_t GetSumEt() const { return fSumEt; }
TString fHistogramNameSuffix; /** The suffix for the histogram names */
+ AliAnalysisEtCuts *fCuts; // keeper of basic cuts
+
/** PDG Database */
TDatabasePDG *fPdgDB;//data base used for looking up pdg codes
//these codes are stored as variables because otherwise there were issues using this with the plugin
Int_t fChargedMultiplicity;/** Multiplicity of charged particles in the event */
Int_t fNeutralMultiplicity; /** Multiplicity of neutral particles in the event */
- Double_t fEtaCut;/** Cut in eta ( normally |eta| < 0.5 */
- Double_t fEtaCutAcc;/** Eta cut for our acceptance */
-
- Double_t fVertexXCut;/** Vertex cuts x direction */
- Double_t fVertexYCut;/** Vertex cuts y direction*/
- Double_t fVertexZCut;/** Vertex cuts z direction*/
-
- Double_t fIPxyCut; /** Impact parameter cuts x-y plane*/
- Double_t fIPzCut; /** Impact parameter cuts z*/
-
-
void CreateEtaPtHisto2D(TString name, TString title);
void CreateEtaHisto1D(TString name, TString title);
void CreateHisto2D(TString name, TString title, TString xtitle, TString ytitle,Int_t xbins, Float_t xlow,Float_t xhigh,Int_t ybins,Float_t ylow,Float_t yhigh);
static Float_t fgPtAxis[117];//bins for pt axis of histograms
static Int_t fgNumOfPtBins;//number of pt bins
-
private:
-
-private:
- //Declare it private to avoid compilation warning
- AliAnalysisHadEt & operator = (const AliAnalysisHadEt & g) ;//cpy assignment
- AliAnalysisHadEt(const AliAnalysisHadEt & g) ; // cpy ctor
+ //Declare it private to avoid compilation warning
+ AliAnalysisHadEt & operator = (const AliAnalysisHadEt & g) ;//cpy assignment
+ AliAnalysisHadEt(const AliAnalysisHadEt & g) ; // cpy ctor
ClassDef(AliAnalysisHadEt, 0);
};
}
else{//analysis
if(stack->IsPhysicalPrimary(label)){
- if (TMath::Abs(simPart->Eta()) < fEtaCut) {
+ if (TMath::Abs(simPart->Eta()) < fCuts->GetCommonEtaCut()) {
Int_t pdgCode = simPart->GetPDG(0)->PdgCode();
Int_t mypid = 0;
//if (TMath::Abs(pc->Charge()) != EtMonteCarloCuts::kSingleChargedParticle && pc->Charge() != EtMonteCarloCuts::kNeutralParticle) continue;
- if (TMath::Abs(part->Eta()) < fEtaCut) {
+ if (TMath::Abs(part->Eta()) < fCuts->GetCommonEtaCut()) {
Int_t pdgCode = part->GetPDG(0)->PdgCode();
//cout<<pdgCode->PdgCode()<<" ";
Float_t bz = 999.;
dynamic_cast<AliESDtrack*>(track)->GetImpactParametersTPC(bxy,bz);
- return TMath::Abs(track->Xv()) < fVertexXCut && TMath::Abs(track->Yv()) < fVertexYCut && TMath::Abs(track->Zv()) < fVertexZCut && TMath::Abs(bxy) < fIPxyCut && TMath::Abs(bz) < fIPzCut;;
+ bool status = (TMath::Abs(track->Xv()) < fCuts->GetReconstructedVertexXCut()) &&
+ (TMath::Abs(track->Yv()) < fCuts->GetReconstructedVertexYCut()) &&
+ (TMath::Abs(track->Zv()) < fCuts->GetReconstructedVertexZCut()) &&
+ (TMath::Abs(bxy) < fCuts->GetReconstructedIPxyCut()) &&
+ (TMath::Abs(bz) < fCuts->GetReconstructedIPzCut());
+ return status;
}
void AliAnalysisHadEtReconstructed::Init()
public:\r
AliAnalysisTaskTotEt(const char *name = "AliAnalysisTaskTotEt");\r
virtual ~AliAnalysisTaskTotEt() {}\r
-private:\r
- //Declare it private to avoid compilation warning\r
- AliAnalysisTaskTotEt & operator = (const AliAnalysisTaskTotEt & g) ;//cpy assignment\r
- AliAnalysisTaskTotEt(const AliAnalysisTaskTotEt & g) ; // cpy ctor\r
\r
public:\r
\r
virtual void UserCreateOutputObjects();\r
virtual void UserExec(Option_t *option);\r
virtual void Terminate(Option_t *);\r
- \r
- \r
+ \r
private:\r
\r
+ //Declare private to avoid compilation warning\r
+ AliAnalysisTaskTotEt & operator = (const AliAnalysisTaskTotEt & g) ;//copy assignment\r
+ AliAnalysisTaskTotEt(const AliAnalysisTaskTotEt & g) ; // copy ctor\r
+\r
TList *fOutputList; //output list\r
\r
AliAnalysisEtReconstructed *fRecAnalysis; // Rec \r
AliAnalysisEtMonteCarlo *fMCAnalysis; // MC\r
\r
TH2F *fHistEtRecvsEtMC; // Rec vs MC histo\r
+\r
\r
ClassDef(AliAnalysisTaskTotEt, 1); // example of analysis\r
};\r
cout << "submitting to grid" << endl;
}
+ gROOT->ProcessLine(".L AliAnalysisEtCuts.cxx+g");
gROOT->ProcessLine(".L AliAnalysisEt.cxx+g");
gROOT->ProcessLine(".L AliAnalysisEtMonteCarlo.cxx+g");
gROOT->ProcessLine(".L AliAnalysisEtMonteCarloPhos.cxx+g");