1 //_________________________________________________________________________
2 // Utility Class for transverse energy studies
4 // - reconstruction and MC output
7 //*-- Authors: Oystein Djuvsland (Bergen), David Silvermyr (ORNL)
8 //_________________________________________________________________________
14 #include "AliESDEvent.h"
15 #include "AliMCEvent.h"
16 #include "AliESDtrackCuts.h"
18 #include "AliAnalysisTaskTotEt.h"
19 #include "AliAnalysisEtReconstructedPhos.h"
20 #include "AliAnalysisEtReconstructedEmcal.h"
21 #include "AliAnalysisEtMonteCarloPhos.h"
22 #include "AliAnalysisEtMonteCarloEmcal.h"
28 ClassImp(AliAnalysisTaskTotEt)
30 //________________________________________________________________________
31 AliAnalysisTaskTotEt::AliAnalysisTaskTotEt(const char *name) :
32 AliAnalysisTaskSE(name)
41 // select if we should use EMCal or PHOS class
42 // PHOS by default, EMCal if name string contains EMC
45 if (t.Contains("EMC")) {
46 fRecAnalysis = new AliAnalysisEtReconstructedEmcal();
47 fMCAnalysis = new AliAnalysisEtMonteCarloEmcal();
50 fRecAnalysis = new AliAnalysisEtReconstructedPhos();
51 fMCAnalysis = new AliAnalysisEtMonteCarloPhos();
57 // Define input and output slots here
58 // Input slot #0 works with a TChain
59 DefineInput(0, TChain::Class());
60 // Output slot #1 writes into a TH1 container
62 DefineOutput(1, TList::Class());
65 AliAnalysisTaskTotEt::~AliAnalysisTaskTotEt(){//Destructor
70 delete fEsdtrackCutsTPC;
73 //________________________________________________________________________
74 void AliAnalysisTaskTotEt::UserCreateOutputObjects()
78 fMCAnalysis->CreateHistograms();
79 fRecAnalysis->CreateHistograms();
80 fOutputList = new TList;
81 fOutputList->SetOwner();
82 fRecAnalysis->FillOutputList(fOutputList);
83 fMCAnalysis->FillOutputList(fOutputList);
84 fHistEtRecvsEtMC = new TH2F("fHistEtRecvsEtMC", "Reconstructed E_{t} vs MC E_{t}", 1000, 0.000, 100, 1000, 0.0001, 100);
85 fOutputList->Add(fHistEtRecvsEtMC);
88 fEsdtrackCutsTPC = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
89 fEsdtrackCutsTPC->SetName("fEsdTrackCutsTPCOnly");
90 fOutputList->Add(fEsdtrackCutsTPC);
92 fRecAnalysis->SetTPCOnlyTrackCuts( GetTPCOnlyTrackCuts());
93 fMCAnalysis->SetTPCOnlyTrackCuts( GetTPCOnlyTrackCuts());
96 Printf("Error: no track cuts!");
101 //________________________________________________________________________
102 void AliAnalysisTaskTotEt::UserExec(Option_t *)
104 AliESDEvent *event = dynamic_cast<AliESDEvent*>(InputEvent());
106 Printf("ERROR: Could not retrieve event");
110 fRecAnalysis->AnalyseEvent(event);
112 AliMCEvent* mcEvent = MCEvent();
115 fMCAnalysis->AnalyseEvent(mcEvent);
118 fHistEtRecvsEtMC->Fill(fRecAnalysis->GetTotEtAcc(), fMCAnalysis->GetTotEt());
121 PostData(1, fOutputList);
125 //________________________________________________________________________
126 void AliAnalysisTaskTotEt::Terminate(Option_t *)
128 // Draw result to the screen
129 // Called once at the end of the query
131 fOutputList = dynamic_cast<TList*> (GetOutputData(1));
133 printf("ERROR: Output list not available\n");