4 #include "TLorentzVector.h"
5 #include "TGraphErrors.h"
7 #include "AliAnalysisTask.h"
8 #include "AliAnalysisManager.h"
10 #include "AliESDEvent.h"
11 #include "AliESDInputHandler.h"
13 #include "AliBalance.h"
15 #include "AliAnalysisTaskBF.h"
17 // Analysis task for the BF code
18 // Authors: Panos Cristakoglou@cern.ch
20 ClassImp(AliAnalysisTaskBF)
22 //________________________________________________________________________
23 AliAnalysisTaskBF::AliAnalysisTaskBF(const char *name)
24 : AliAnalysisTask(name, ""), fESD(0), fBalance(0) {
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());
34 //________________________________________________________________________
35 void AliAnalysisTaskBF::ConnectInputData(Option_t *) {
36 // Connect ESD or AOD here
39 TTree* tree = dynamic_cast<TTree*> (GetInputData(0));
41 Printf("ERROR: Could not read chain from input slot 0");
44 AliESDInputHandler *esdH = dynamic_cast<AliESDInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
47 Printf("ERROR: Could not get ESDInputHandler");
50 fESD = esdH->GetEvent();
54 //________________________________________________________________________
55 void AliAnalysisTaskBF::CreateOutputObjects() {
59 fBalance = new AliBalance();
60 fBalance->SetAnalysisType(1);
61 fBalance->SetNumberOfBins(18);
62 fBalance->SetInterval(-0.9,0.9);
63 //cout<<fBalance->GetAnalysisType()<<endl;
66 //________________________________________________________________________
67 void AliAnalysisTaskBF::Exec(Option_t *) {
69 // Called for each event
72 Printf("ERROR: fESD not available");
76 Printf("There are %d tracks in this event", fESD->GetNumberOfTracks());
78 TObjArray *array = new TObjArray();
80 // Track loop to fill a pT spectrum
81 for (Int_t iTracks = 0; iTracks < fESD->GetNumberOfTracks(); iTracks++) {
82 AliESDtrack* track = fESD->GetTrack(iTracks);
84 Printf("ERROR: Could not receive track %d", iTracks);
89 fBalance->CalculateBalance(array);
93 PostData(0, fBalance);
96 //________________________________________________________________________
97 void AliAnalysisTaskBF::Terminate(Option_t *) {
98 // Draw result to the screen
99 // Called once at the end of the query
101 fBalance = dynamic_cast<AliBalance*> (GetOutputData(0));
103 Printf("ERROR: fBalance not available");
107 TGraphErrors *gr = fBalance->DrawBalance();
108 gr->SetMarkerStyle(20);
111 fBalance->PrintResults();