]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/EBYE/AliAnalysisTaskBF.cxx
4679eafc77879329881aa9e2482f1faab2872eb8
[u/mrichter/AliRoot.git] / PWG2 / EBYE / AliAnalysisTaskBF.cxx
1 #include "TChain.h"
2 #include "TTree.h"
3 #include "TCanvas.h"
4 #include "TLorentzVector.h"
5 #include "TGraphErrors.h"
6
7 #include "AliAnalysisTask.h"
8 #include "AliAnalysisManager.h"
9
10 #include "AliESDEvent.h"
11 #include "AliESDInputHandler.h"
12
13 #include "AliBalance.h"
14
15 #include "AliAnalysisTaskBF.h"
16
17 // Analysis task for the BF code
18 // Authors: Panos Cristakoglou@cern.ch
19
20 ClassImp(AliAnalysisTaskBF)
21
22 //________________________________________________________________________
23 AliAnalysisTaskBF::AliAnalysisTaskBF(const char *name) 
24   : AliAnalysisTask(name, ""), fESD(0), fBalance(0) {
25   // Constructor
26
27   // Define input and output slots here
28   // Input slot #0 works with a TChain
29   DefineInput(0, TChain::Class());
30   // Output slot #0 writes into a TH1 container
31   DefineOutput(0, AliBalance::Class());
32 }
33
34 //________________________________________________________________________
35 void AliAnalysisTaskBF::ConnectInputData(Option_t *) {
36   // Connect ESD or AOD here
37   // Called once
38
39   TTree* tree = dynamic_cast<TTree*> (GetInputData(0));
40   if (!tree) {
41     Printf("ERROR: Could not read chain from input slot 0");
42   } 
43   else {
44     AliESDInputHandler *esdH = dynamic_cast<AliESDInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
45     
46     if (!esdH) {
47       Printf("ERROR: Could not get ESDInputHandler");
48     } 
49     else
50       fESD = esdH->GetEvent();
51   }
52 }
53
54 //________________________________________________________________________
55 void AliAnalysisTaskBF::CreateOutputObjects() {
56   // Create histograms
57   // Called once
58
59   fBalance = new AliBalance();
60   fBalance->SetAnalysisType(1);
61   fBalance->SetNumberOfBins(18);
62   fBalance->SetInterval(-0.9,0.9);
63   //cout<<fBalance->GetAnalysisType()<<endl;
64 }
65
66 //________________________________________________________________________
67 void AliAnalysisTaskBF::Exec(Option_t *) {
68   // Main loop
69   // Called for each event
70   
71   if (!fESD) {
72     Printf("ERROR: fESD not available");
73     return;
74   }
75
76   Printf("There are %d tracks in this event", fESD->GetNumberOfTracks());
77
78   TObjArray *array = new TObjArray();
79
80   // Track loop to fill a pT spectrum
81   for (Int_t iTracks = 0; iTracks < fESD->GetNumberOfTracks(); iTracks++) {
82     AliESDtrack* track = fESD->GetTrack(iTracks);
83     if (!track) {
84       Printf("ERROR: Could not receive track %d", iTracks);
85       continue;
86     }
87     array->Add(track);
88   } //track loop 
89   fBalance->CalculateBalance(array);
90   
91   delete array;
92   // Post output data.
93   PostData(0, fBalance);
94 }      
95
96 //________________________________________________________________________
97 void AliAnalysisTaskBF::Terminate(Option_t *) {
98   // Draw result to the screen
99   // Called once at the end of the query
100
101   fBalance = dynamic_cast<AliBalance*> (GetOutputData(0));
102   if (!fBalance) {
103     Printf("ERROR: fBalance not available");
104     return;
105   }
106   
107   TGraphErrors *gr = fBalance->DrawBalance();
108   gr->SetMarkerStyle(20);
109   gr->Draw("AP");
110
111   fBalance->PrintResults();
112 }