-// $Id$
-//
-//
-//
-//
-
#include "TChain.h"
#include "TTree.h"
#include "TH1F.h"
#include "TH2F.h"
#include "TCanvas.h"
+
#include "AliAnalysisTask.h"
#include "AliAnalysisManager.h"
+
#include "AliESDEvent.h"
#include "AliESDHeader.h"
#include "AliESDUtils.h"
#include "AliESDInputHandler.h"
#include "AliESDpid.h"
#include "AliKFParticle.h"
+
#include "AliMCEventHandler.h"
#include "AliMCEvent.h"
#include "AliStack.h"
+
+
#include "AliESDtrackCuts.h"
#include "AliESDv0.h"
#include "AliV0vertexer.h"
#include "AliEMCALRecoUtils.h"
#include "TLorentzVector.h"
#include "AliVCluster.h"
+
+
#include "AliAnalysisTaskTrgContam.h"
#include "TFile.h"
+
ClassImp(AliAnalysisTaskTrgContam)
//________________________________________________________________________
AliAnalysisTaskTrgContam::AliAnalysisTaskTrgContam(const char *name)
: AliAnalysisTaskSE(name),
fCaloClusters(0),
- fEMCalCells(0),
fGeom(0x0),
fGeoName("EMCAL_COMPLETEV1"),
fPeriod("LHC11c"),
fIsTrain(0),
fTrigThresh(4.8),
fExoticCut(0.97),
+
+
fESD(0),
+
fOutputList(0),
+
fEvtSel(0),
+
fClusEt(0),
fClusEtTM(0),
fClusEtLead(0),
fClusEtExotic(0),
fClusEtExoticTM(0),
fClusEtSingleExotic(0),
+ fCellEnergy(0),
fM02Et(0),
fM02EtTM(0),
fM02EtExot(0),
fM02EtExotTM(0)
+
+
+
{
// Constructor
// Output slot #1 writes into a TH1 container
DefineOutput(1, TList::Class());
}
-
//________________________________________________________________________
void AliAnalysisTaskTrgContam::UserCreateOutputObjects()
{
fClusEtSingleExotic = new TH1F("hClusEtSingleExotic","Exotic trigger clusters (only this above thrs.) E_{T} ;E_{T} ;dN/dE_{T}",400,0,200);
fOutputList->Add(fClusEtSingleExotic);
+
+ fCellEnergy = new TH1F("hCellE","cell energy spectrum;E_{cell} (GeV);entries",200,0,20);
+ fOutputList->Add(fCellEnergy);
fM02Et = new TH2F("hM02Et","#lambda_{0}^{2} vs. E_{T} for trigger clusters ;E_{T} ;#lambda_{0}^{2}",400,0,200, 400,0,4);
fOutputList->Add(fM02Et);
if(fPeriod.Contains("11a"))
isSelected = (((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & AliVEvent::kEMC1);
else
- isSelected = (((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & AliVEvent::kEMC7);
+ isSelected = ((((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & AliVEvent::kCentral) ||
+ (((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & AliVEvent::kSemiCentral));
if(!isSelected )
- return;
+ return;
// Main loop
// Called for each event
// Post output data.
+
fESD = dynamic_cast<AliESDEvent*>(InputEvent());
- if (!fESD) {
+if (!fESD) {
printf("ERROR: fESD not available\n");
return;
}
+
+fEvtSel->Fill(0);
- fEvtSel->Fill(0);
-
- AliESDVertex *pv = (AliESDVertex*)fESD->GetPrimaryVertex();
+ /* AliESDVertex *pv = (AliESDVertex*)fESD->GetPrimaryVertex();
if(!pv)
return;
if(TMath::Abs(pv->GetZ())>15)
- return;
+ return;*/
- fEvtSel->Fill(1);
+fEvtSel->Fill(1);
- if(!fIsTrain){
- for(Int_t mod=0; mod < (fGeom->GetEMCGeometry())->GetNumberOfSuperModules(); mod++){
- if(fGeoName=="EMCAL_FIRSTYEARV1" && mod>3)
- break;
- fGeom->SetMisalMatrix(fESD->GetEMCALMatrix(mod), mod);
- }
+if(!fIsTrain){
+ for(Int_t mod=0; mod < (fGeom->GetEMCGeometry())->GetNumberOfSuperModules(); mod++){
+ if(fGeoName=="EMCAL_FIRSTYEARV1" && mod>3)
+ break;
+ fGeom->SetMisalMatrix(fESD->GetEMCALMatrix(mod), mod);
}
- fESD->GetEMCALClusters(fCaloClusters);
- fEMCalCells = fESD->GetEMCALCells();
-
-
- FillClusHists();
+ }
+fESD->GetEMCALClusters(fCaloClusters);
+fEMCalCells = fESD->GetEMCALCells();
+for(int i=0;i<fEMCalCells->GetNumberOfCells();i++){
+ Double_t e = fEMCalCells->GetCellAmplitude(TMath::Abs(fEMCalCells->GetAmplitude(i)));
+ fCellEnergy->Fill(e);
+}
+FillClusHists();
- fCaloClusters->Clear();
- PostData(1, fOutputList);
+fCaloClusters->Clear();
+PostData(1, fOutputList);
}
-
//________________________________________________________________________
void AliAnalysisTaskTrgContam::FillClusHists()
{
const Int_t nclus = fCaloClusters->GetEntries();
if(nclus==0)
return;
- Double_t EtArray[nclus]; memset(EtArray,0,nclus*sizeof(Double_t));
- Bool_t isTM[nclus]; memset(isTM,0,nclus*sizeof(Bool_t));
- Bool_t isEx[nclus]; memset(isEx,0,nclus*sizeof(Bool_t));
- Int_t index[nclus]; memset(index,0,nclus*sizeof(Int_t));
+ Double_t EtArray[nclus];
+ Bool_t isTM[nclus];
+ Bool_t isEx[nclus];
+ Int_t index[nclus];
Int_t nthresholds = 0;
for(Int_t ic=0;ic<nclus;ic++){
EtArray[ic]=0;
if(nclus>1)if(isTM[index[1]] && EtArray[index[1]]>0)
fClusEtSubLeadTM->Fill(EtArray[index[1]]);
}
-
//________________________________________________________________________
Double_t AliAnalysisTaskTrgContam::GetCrossEnergy(const AliVCluster *cluster, Short_t &idmax)
{
return crossEnergy;
}
+
+
//________________________________________________________________________
Double_t AliAnalysisTaskTrgContam ::GetMaxCellEnergy(const AliVCluster *cluster, Short_t &id) const
{
}
return maxe;
}
-
//________________________________________________________________________
void AliAnalysisTaskTrgContam::Terminate(Option_t *)
{
// Draw result to the screen
// Called once at the end of the query
+
}
#ifndef AliAnalysisTaskTrgContam_cxx\r
#define AliAnalysisTaskTrgContam_cxx\r
\r
-// $Id$\r
-\r
class TH1;\r
class TH2;\r
class TObjArray;\r
class AliAnalysisTaskTrgContam : public AliAnalysisTaskSE {\r
public:\r
AliAnalysisTaskTrgContam() : \r
- AliAnalysisTaskSE(), \r
+ AliAnalysisTaskSE(), \r
+ \r
fCaloClusters(0),\r
- fEMCalCells(0),\r
+\r
fGeom(0x0),\r
- fGeoName(),\r
- fPeriod(),\r
- fIsTrain(0),\r
- fTrigThresh(0),\r
- fExoticCut(0),\r
+ \r
fESD(0),\r
+ \r
fOutputList(0),\r
+\r
fEvtSel(0),\r
+\r
fClusEt(0),\r
fClusEtTM(0),\r
fClusEtLead(0),\r
fClusEtExotic(0), \r
fClusEtExoticTM(0),\r
fClusEtSingleExotic(0),\r
+ fCellEnergy(0),\r
fM02Et(0),\r
fM02EtTM(0),\r
fM02EtExot(0),\r
- fM02EtExotTM(0) {}\r
+ fM02EtExotTM(0)\r
+\r
+ \r
+ \r
+ \r
+ {}\r
AliAnalysisTaskTrgContam(const char *name);\r
virtual ~AliAnalysisTaskTrgContam() {}\r
\r
void FillClusHists();\r
Double_t GetCrossEnergy(const AliVCluster *cluster, Short_t &idmax);\r
Double_t GetMaxCellEnergy(const AliVCluster *cluster, Short_t &id) const; \r
+\r
+\r
+\r
+\r
\r
protected:\r
TRefArray *fCaloClusters; //!pointer to EMCal clusters\r
\r
private:\r
AliESDEvent *fESD; //! ESD object\r
+\r
+\r
+ \r
TList *fOutputList; //! Output list\r
//histograms for events with 1+ track pt>1\r
+ \r
TH1F *fEvtSel; //!evt selection counter: 0=all trg, 1=pv cut \r
+\r
TH1F *fClusEt; //!cluster Et spectrum\r
TH1F *fClusEtTM; //!cluster(matched to a track) Et spectrum\r
TH1F *fClusEtLead; //!leading trigger cluster Et\r
TH1F *fClusEtExotic; //!exotic trigger clusters Et\r
TH1F *fClusEtExoticTM; //!exotic trigger clusters (TM) Et\r
TH1F *fClusEtSingleExotic; //!exotic trigger only clusters Et \r
+ TH1F *fCellEnergy; //!cell energy spectrum (all)\r
+ \r
TH2F *fM02Et; //!M02xEt for trigger clusters\r
TH2F *fM02EtTM; //!M02xEt for trigger clusters with track matched\r
TH2F *fM02EtExot; //!M02xEt for trigger clusters of exotic\r
TH2F *fM02EtExotTM; //!M02xEt for trigger TM clusters of exotic\r
+\r
\r
AliAnalysisTaskTrgContam(const AliAnalysisTaskTrgContam&); // not implemented\r
AliAnalysisTaskTrgContam& operator=(const AliAnalysisTaskTrgContam&); // not implemented\r
\r
ClassDef(AliAnalysisTaskTrgContam, 1); // example of analysis\r
};\r
+\r
#endif\r