**************************************************************************/
//_________________________________________________________________________
-// An analysis task to check the PHOS photon data in simulated data
+// An analysis task to check the PHOS/EMCAL simulated trigger
//
-//*-- Yves Schutz
+//*-- Yves Schutz & Gustavo Conesa Balbastre
//////////////////////////////////////////////////////////////////////////////
#include <TChain.h>
#include <TNtuple.h>
#include <TVector3.h>
-#include "AliTriggerPHOS.h"
+#include "AliAnaCaloTrigger.h"
#include "AliESD.h"
#include "AliLog.h"
//______________________________________________________________________________
-AliTriggerPHOS::AliTriggerPHOS(const char *name) :
+AliAnaCaloTrigger::AliAnaCaloTrigger(const char *name) :
AliAnalysisTask(name,""),
fChain(0),
fESD(0),
fOutputContainer(0),
+ fCalorimeter("PHOS"),
fNtTrigger22(0),
fNtTriggerNN(0)
}
//______________________________________________________________________________
-AliTriggerPHOS::~AliTriggerPHOS()
+AliAnaCaloTrigger::~AliAnaCaloTrigger()
{
// dtor
fOutputContainer->Clear() ;
//______________________________________________________________________________
-void AliTriggerPHOS::ConnectInputData(const Option_t*)
+void AliAnaCaloTrigger::ConnectInputData(const Option_t*)
{
// Initialisation of branch container and histograms
//________________________________________________________________________
-void AliTriggerPHOS::CreateOutputObjects()
+void AliAnaCaloTrigger::CreateOutputObjects()
{
// create histograms
- fNtTrigger22 = new TNtuple("PHOStrigger22", "Trigger data 2x2 patch", "a22:a220:enMax:phEnMax:eta22:phi22:etaMax:phiMax:phEtaMax:phPhiMax");
- fNtTriggerNN = new TNtuple("PHOStriggerNN", "Trigger data NxN patch", "aNN:aNN0:enMax:phEnMax:etaNN:phiNN:etaMax:phiMax:phEtaMax:phPhiMax");
+ fNtTrigger22 = new TNtuple(fCalorimeter+"trigger22", "Trigger data 2x2 patch", "a22:a220:enMax:phEnMax:eta22:phi22:etaMax:phiMax:phEtaMax:phPhiMax");
+ fNtTriggerNN = new TNtuple(fCalorimeter+"triggerNN", "Trigger data NxN patch", "aNN:aNN0:enMax:phEnMax:etaNN:phiNN:etaMax:phiMax:phEtaMax:phPhiMax");
// create output container
}
//______________________________________________________________________________
-void AliTriggerPHOS::Exec(Option_t *)
+void AliAnaCaloTrigger::Exec(Option_t *)
{
// Processing of one event
if ( !((entry-1)%100) )
AliInfo(Form("%s ----> Processing event # %lld", (dynamic_cast<TChain *>(fChain))->GetFile()->GetName(), entry)) ;
- // ************************ PHOS *************************************
- // Get trigger information
+ // Get trigger information of fCalorimeter
+ TArrayF * triggerAmplitudes = 0x0 ;
+ TArrayF * triggerPosition = 0x0 ;
+ Int_t firstCaloCluster = 0 ;
+ Int_t numberOfCaloClusters = 0 ;
+
+ if(fCalorimeter == "PHOS"){
+ triggerAmplitudes = fESD->GetPHOSTriggerAmplitudes();
+ triggerPosition = fESD->GetPHOSTriggerPosition();
+ firstCaloCluster = fESD->GetFirstPHOSCluster() ;
+ numberOfCaloClusters = fESD->GetNumberOfPHOSClusters() ;
+ }
+ else if(fCalorimeter == "EMCAL"){
+ triggerAmplitudes = fESD->GetEMCALTriggerAmplitudes();
+ triggerPosition = fESD->GetEMCALTriggerPosition();
+ firstCaloCluster = fESD->GetFirstEMCALCluster() ;
+ numberOfCaloClusters = fESD->GetNumberOfEMCALClusters() ;
+ }
// trigger amplitudes
- const TArrayF * triggerAmplitudes = fESD->GetPHOSTriggerAmplitudes();
const Float_t a22 = static_cast<Float_t>(triggerAmplitudes->At(0)) ;
const Float_t a22O = static_cast<Float_t>(triggerAmplitudes->At(1)) ;
const Float_t aNN = static_cast<Float_t>(triggerAmplitudes->At(2)) ;
const Float_t aNNO = static_cast<Float_t>(triggerAmplitudes->At(3)) ;
// trigger position
- const TArrayF * triggerPosition = fESD->GetPHOSTriggerPosition();
const Float_t x22 = static_cast<Float_t>(triggerPosition->At(0)) ;
const Float_t y22 = static_cast<Float_t>(triggerPosition->At(1)) ;
const Float_t z22 = static_cast<Float_t>(triggerPosition->At(2)) ;
const Float_t yNN = static_cast<Float_t>(triggerPosition->At(4)) ;
const Float_t zNN = static_cast<Float_t>(triggerPosition->At(5)) ;
- Int_t firstPhosCluster = fESD->GetFirstPHOSCluster() ;
- const Int_t numberOfPhosClusters = fESD->GetNumberOfPHOSClusters() ;
+
Float_t enMax = 0. ;
Float_t phEnMax = 0. ;
Float_t etaNN = vposNN.Eta() ;
Float_t phiNN = vposNN.Phi() * TMath::RadToDeg() + 360. ;
- Int_t phosCluster ;
+ Int_t icaloCluster ;
- // loop over the PHOS Cluster
+ // loop over the Calorimeters Clusters
- for(phosCluster = firstPhosCluster ; phosCluster < firstPhosCluster + numberOfPhosClusters ; phosCluster++) {
- AliESDCaloCluster * caloCluster = fESD->GetCaloCluster(phosCluster) ;
- if (caloCluster) {
+ for(icaloCluster = firstCaloCluster ; icaloCluster < firstCaloCluster + numberOfCaloClusters ; icaloCluster++) {
+ AliESDCaloCluster * cluster = fESD->GetCaloCluster(icaloCluster) ;
+ if (cluster) {
- Float_t cluEnergy = caloCluster->GetClusterEnergy() ;
+ Float_t cluEnergy = cluster->GetClusterEnergy() ;
Float_t pos[3] ;
TVector3 vpos ;
- caloCluster->GetGlobalPosition( pos ) ;
+ cluster->GetGlobalPosition( pos ) ;
if ( cluEnergy > enMax) {
enMax = cluEnergy ;
phiMax = vpos.Phi() ;
}
- Float_t * pid = caloCluster->GetPid() ;
+ Float_t * pid = cluster->GetPid() ;
if(pid[AliPID::kPhoton] > 0.9) {
if ( cluEnergy > phEnMax) {
}
//______________________________________________________________________________
-void AliTriggerPHOS::Terminate(Option_t *)
+void AliAnaCaloTrigger::Terminate(Option_t *)
{
// Processing when the event loop is ended
-#ifndef ALIPHOSQATASK_H
-#define ALIPHOSQATASK_H
+#ifndef ALIANACALOTRIGGER_H
+#define ALIANACALOTRIGGER_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
* See cxx source for full Copyright notice */
//______________________________________________________________________________
class TH1D ;
class TH1I ;
-class AliTriggerPHOS : public AliAnalysisTask {
+class AliAnaCaloTrigger : public AliAnalysisTask {
public:
- AliTriggerPHOS(const char *name) ;
- virtual ~AliTriggerPHOS() ;
+ AliAnaCaloTrigger(const char *name) ;
+ virtual ~AliAnaCaloTrigger() ;
virtual void Exec(Option_t * opt = "") ;
virtual void ConnectInputData(Option_t *);
virtual void CreateOutputObjects();
virtual void Terminate(Option_t * opt = "") ;
+ TString GetCalorimeter() const {return fCalorimeter ; }
+ void SetCalorimeter(TString calo) {fCalorimeter = calo ; }
+
private:
TTree * fChain ; //!pointer to the analyzed TTree or TChain
AliESD * fESD ; //! Declaration of leave types
TObjArray * fOutputContainer ; //! output data container
+ TString fCalorimeter ; // "PHOS" or "EMCAL"
+
// Histograms
TNtuple * fNtTrigger22 ;
TNtuple * fNtTriggerNN ;
- ClassDef(AliTriggerPHOS, 0); // a PHOS photon analysis task
+ ClassDef(AliAnaCaloTrigger, 0); // a PHOS photon analysis task
};
-#endif // ALIPHOSQATASK_H
+#endif // ALIANACALOTRIGGER_H