]> git.uio.no Git - u/mrichter/AliRoot.git/blame - TPC/AliTPCCalibKrTask.cxx
- Small fix for CAF that messed-up user tasks after filters
[u/mrichter/AliRoot.git] / TPC / AliTPCCalibKrTask.cxx
CommitLineData
97ce6a20 1/**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
15
16//----------------------------------------------------------------------------
17// The AliTPCCalibKrTask class description (TPC Kr calibration).
18// The AliTPCCalibKrTask loops over tree of TPC Kr clusters and fills AliTPCCalibKr
19// calibration component.
20//
21// As the input it requires the tree with reconstructed Kr clusters (AliTPCclusterKr objects).
22// The AliTPCCalibKr output calibration component contains an array of TH3F histograms which can be stored
23// in the ouptut file.
24//
25
26/*
27
28// Usage example:
29//
30
31// -- Load toolkit
32gSystem->AddIncludePath("-I$ALICE_ROOT/TPC/macros");
33gROOT->LoadMacro("$ALICE_ROOT/TPC/macros/AliXRDPROOFtoolkit.cxx+");
34AliXRDPROOFtoolkit tool;
35
36// -- Make chain of files
37TChain * chain = tool.MakeChain("KrClusters.txt","Kr","",1000,0);
38
39// -- Create the analysis manager
40AliAnalysisManager *mgr = new AliAnalysisManager("testAnalysis");
41
42// -- Calibration component
43AliTPCCalibKr *calibObj = new AliTPCCalibKr;
44
45// -- Add task
46AliTPCCalibKrTask *task = new AliTPCCalibKrTask;
47task->SetInputChain(chain);
48task->SetTPCCalibKr(calibObj);
49mgr->AddTask(task);
50
51// -- Attach input
52cInput = mgr->CreateContainer("cInput", TChain::Class(), AliAnalysisManager::kInputContainer);
53mgr->ConnectInput(task, 0, cInput);
54
55// -- Attach output
56cOutput = mgr->CreateContainer("cOutput", TList::Class(), AliAnalysisManager::kOutputContainer,"outHistFile.root");
57mgr->ConnectOutput(task, 0, cOutput);
58
59// -- Run analysis
60mgr->InitAnalysis();
61mgr->PrintStatus();
62mgr->StartAnalysis("local", chain);
63
64*/
65
66//Root includes
67#include <TH1F.h>
68#include <TH2F.h>
69#include <TH3F.h>
70#include <TString.h>
71#include <TMath.h>
72#include <TF1.h>
73#include <TRandom.h>
74#include <TDirectory.h>
75#include <TFile.h>
76//AliRoot includes
77#include "AliRawReader.h"
78#include "AliRawReaderRoot.h"
79#include "AliRawReaderDate.h"
80#include "AliTPCRawStream.h"
81#include "AliTPCCalROC.h"
82#include "AliTPCCalPad.h"
83#include "AliTPCROC.h"
84#include "AliMathBase.h"
85#include "TTreeStream.h"
86#include "AliTPCRawStreamFast.h"
87
88//date
89#include "event.h"
90
91//header file
92#include "AliTPCCalibKr.h"
93#include "AliTPCCalibKrTask.h"
94
95Int_t AliTPCCalibKrTask::evtNumber = 0;
96
97ClassImp(AliTPCCalibKrTask)
98
99AliTPCCalibKrTask::AliTPCCalibKrTask(const char *name) :
100 AliAnalysisTask(name,""),
101 fClustKr(0),
102 fTPCCalibKr(0),
103 fTree(0),
104 fOutput(0)
105{
106 //
107 // default constructor
108 //
109
110 DefineInput(0, TChain::Class());
111 DefineOutput(0, TList::Class());
112}
113
114//_____________________________________________________________________
115AliTPCCalibKrTask::~AliTPCCalibKrTask()
116{
117 //
118 // destructor
119 //
120 if(fClustKr) delete fClustKr; fClustKr = 0;
121}
122
123//_____________________________________________________________________
124void AliTPCCalibKrTask::ConnectInputData(Option_t *)
125{
126 // Connect input data
127 // Called once
128
129 fTree = dynamic_cast<TTree*> (GetInputData(0));
130
131 if(!fTree) {
132 Printf("ERROR: Could not read chain from input");
133 }
134 else {
135 fTree->SetBranchStatus("*",1);
136 }
137
138 // set branch address
139 if(!fTree->GetBranch("Cl.")) {
140 Printf("ERROR: Could not get Cl. branch from input");
141 } else {
142 fTree->GetBranch("Cl.")->SetAddress(&fClustKr);
143 }
144}
145
146//_____________________________________________________________________
147void AliTPCCalibKrTask::CreateOutputObjects()
148{
149 // create object to the output
150 fOutput = new TList;
151 fOutput->SetOwner();
152
153 if(fTPCCalibKr) fOutput->Add(fTPCCalibKr);
154 //fTPCCalibKr = new AliTPCCalibKr;
155 //if(fTPCCalibKr) fOutput->Add(fTPCCalibKr);
156 else
157 Printf("WARNING: AliTPCCalibKr is not added to the output");
158}
159
160//_____________________________________________________________________
161Bool_t AliTPCCalibKrTask::ReadEntry(Int_t evt)
162{
163 // read entry
164 Long64_t centry = fTree->LoadTree(evt);
165 if(centry < 0) return kFALSE;
166
167 if(!fTree->GetBranch("Cl."))
168 {
169 Printf("ERROR: Could not get Cl. branch from input");
170 return kFALSE;
171 } else {
172 fTree->GetBranch("Cl.")->SetAddress(&fClustKr);
173 }
174
175 fTree->GetEntry(evt);
176
177return kTRUE;
178}
179
180//_____________________________________________________________________
181void AliTPCCalibKrTask::Exec(Option_t *)
182{
183 // Main loop
184 // Called for each event
185
186 // read entry
187 if(fClustKr) delete fClustKr; fClustKr=0;
188 Bool_t status = ReadEntry(evtNumber);
189 if(status==kTRUE)
190 {
191 // Process output objects
192 if(fClustKr) fTPCCalibKr->Process(fClustKr);
193 }
194
195 if( !( evtNumber % 10000) ) {
196 cout << evtNumber << endl; }
197
198 evtNumber++;
199
200 // Post output data.
201 PostData(0, fOutput);
202}
203
204//_____________________________________________________________________
205void AliTPCCalibKrTask::Terminate(Option_t *)
206{
207 // Called once at the end of the event loop
208 cout << "Terminate " << endl;
209
210 fOutput = dynamic_cast<TList*> (GetOutputData(0));
211 if (!fOutput) {
212 Printf("ERROR: fOutput not available");
213 return;
214 }
215
216 fTPCCalibKr = dynamic_cast<AliTPCCalibKr*> (fOutput->FindObject("AliTPCCalibKr"));
217 if (!fTPCCalibKr) {
218 Printf("WARNING: AliTPCCalibKr not available");
219 return;
220 }
221
222 for(int i=0; i<72; ++i) {
223 if( fTPCCalibKr->IsCSide(i) == kTRUE )
224 printf("C side chamber: %d, 3D histo entries: %10.f \n",i,fTPCCalibKr->GetHistoKr(i)->GetEntries());
225
226 if( fTPCCalibKr->IsCSide(i) == kFALSE )
227 printf("A side chamber: %d, 3D histo entries: %10.f \n",i,fTPCCalibKr->GetHistoKr(i)->GetEntries());
228 }
229}