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());
67 //________________________________________________________________________
68 void AliAnalysisTaskTotEt::UserCreateOutputObjects()
72 fMCAnalysis->CreateHistograms();
73 fRecAnalysis->CreateHistograms();
74 fOutputList = new TList;
75 fRecAnalysis->FillOutputList(fOutputList);
76 fMCAnalysis->FillOutputList(fOutputList);
77 fHistEtRecvsEtMC = new TH2F("fHistEtRecvsEtMC", "Reconstructed E_{t} vs MC E_{t}", 1000, 0.000, 100, 1000, 0.0001, 100);
78 fOutputList->Add(fHistEtRecvsEtMC);
81 fEsdtrackCutsTPC = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
82 fEsdtrackCutsTPC->SetName("fEsdTrackCutsTPCOnly");
83 fOutputList->Add(fEsdtrackCutsTPC);
85 fRecAnalysis->SetTPCOnlyTrackCuts( GetTPCOnlyTrackCuts());
86 fMCAnalysis->SetTPCOnlyTrackCuts( GetTPCOnlyTrackCuts());
89 Printf("Error: no track cuts!");
94 //________________________________________________________________________
95 void AliAnalysisTaskTotEt::UserExec(Option_t *)
97 AliESDEvent *event = dynamic_cast<AliESDEvent*>(InputEvent());
99 Printf("ERROR: Could not retrieve event");
103 fRecAnalysis->AnalyseEvent(event);
105 AliMCEvent* mcEvent = MCEvent();
108 fMCAnalysis->AnalyseEvent(mcEvent);
111 fHistEtRecvsEtMC->Fill(fRecAnalysis->GetTotEtAcc(), fMCAnalysis->GetTotEt());
114 PostData(1, fOutputList);
118 //________________________________________________________________________
119 void AliAnalysisTaskTotEt::Terminate(Option_t *)
121 // Draw result to the screen
122 // Called once at the end of the query
124 fOutputList = dynamic_cast<TList*> (GetOutputData(1));
126 printf("ERROR: Output list not available\n");