]> git.uio.no Git - u/mrichter/AliRoot.git/blame - TPC/AliTPCAnalysisTaskcalib.cxx
Reset rawReader in MakeRaws (Yves)
[u/mrichter/AliRoot.git] / TPC / AliTPCAnalysisTaskcalib.cxx
CommitLineData
73d51118 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///////////////////////////////////////////////////////////////////////////////
18// //
19// blaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa //
20// //
21///////////////////////////////////////////////////////////////////////////////
22#include "AliTPCAnalysisTaskcalib.h"
23#include "TChain.h"
24#include "AliTPCcalibBase.h"
25#include "AliESDEvent.h"
26#include "AliESDfriend.h"
f7f33dec 27#include "AliESDtrack.h"
73d51118 28#include "AliESDfriendTrack.h"
29#include "AliTPCseed.h"
30#include "AliESDInputHandler.h"
31#include "AliAnalysisManager.h"
32
33ClassImp(AliTPCAnalysisTaskcalib)
34
f7f33dec 35
36AliTPCAnalysisTaskcalib::AliTPCAnalysisTaskcalib()
37 :AliAnalysisTask(),
38 fCalibJobs(0),
39 fESD(0),
40 fESDfriend(0),
41 fDebugOutputPath()
42{
43 //
44 // default constructor
45 //
46
47}
48
49
73d51118 50AliTPCAnalysisTaskcalib::AliTPCAnalysisTaskcalib(const char *name)
51 :AliAnalysisTask(name,""),
52 fCalibJobs(0),
0db06ea6 53 fESD(0),
f7f33dec 54 fESDfriend(0),
55 fDebugOutputPath()
73d51118 56{
57 //
58 // Constructor
59 //
60 DefineInput(0, TChain::Class());
61 DefineOutput(0, TObjArray::Class());
f7f33dec 62 fCalibJobs = new TObjArray(0);
63 fCalibJobs->SetOwner(kFALSE);
73d51118 64}
65
66AliTPCAnalysisTaskcalib::~AliTPCAnalysisTaskcalib() {
67 //
68 // destructor
69 //
f7f33dec 70 printf("AliTPCAnalysisTaskcalib::~AliTPCAnalysisTaskcalib");
71 //fCalibJobs->Delete();
73d51118 72}
73
74void AliTPCAnalysisTaskcalib::Exec(Option_t *) {
75 //
76 // Exec function
77 // Loop over tracks and call Process function
78 if (!fESD) {
79 Printf("ERROR: fESD not available");
80 return;
81 }
82 fESDfriend=static_cast<AliESDfriend*>(fESD->FindListObject("AliESDfriend"));
83 if (!fESDfriend) {
84 Printf("ERROR: fESDfriend not available");
85 return;
86 }
87 Int_t n=fESD->GetNumberOfTracks();
f7f33dec 88 Process(fESD);
5822e507 89 Int_t run = fESD->GetRunNumber();
73d51118 90 for (Int_t i=0;i<n;++i) {
91 AliESDfriendTrack *friendTrack=fESDfriend->GetTrack(i);
f7f33dec 92 AliESDtrack *track=fESD->GetTrack(i);
0db06ea6 93 TObject *calibObject=0;
73d51118 94 AliTPCseed *seed=0;
0db06ea6 95 for (Int_t j=0;(calibObject=friendTrack->GetCalibObject(j));++j)
96 if ((seed=dynamic_cast<AliTPCseed*>(calibObject)))
73d51118 97 break;
5822e507 98 if (track) Process(track, run);
73d51118 99 if (seed)
100 Process(seed);
101 }
f7f33dec 102 PostData(0,fCalibJobs);
73d51118 103}
104
105void AliTPCAnalysisTaskcalib::ConnectInputData(Option_t *) {
106 //
107 //
108 //
109 TTree* tree=dynamic_cast<TTree*>(GetInputData(0));
110 if (!tree) {
111 Printf("ERROR: Could not read chain from input slot 0");
112 }
113 else {
114 AliESDInputHandler *esdH = dynamic_cast<AliESDInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
115 if (!esdH) {
116 Printf("ERROR: Could not get ESDInputHandler");
117 }
118 else {
119 fESD = esdH->GetEvent();
120 Printf("*** CONNECTED NEW EVENT ****");
121 }
122 }
123}
124
125void AliTPCAnalysisTaskcalib::CreateOutputObjects() {
126 //
127 //
128 //
129}
0db06ea6 130void AliTPCAnalysisTaskcalib::Terminate(Option_t */*option*/) {
7eaa723e 131 //
08825fb4 132 // Terminate
7eaa723e 133 //
08825fb4 134 AliTPCcalibBase *job=0;
f7f33dec 135 Int_t njobs = fCalibJobs->GetEntriesFast();
08825fb4 136 for (Int_t i=0;i<njobs;i++){
f7f33dec 137 job = (AliTPCcalibBase*)fCalibJobs->UncheckedAt(i);
08825fb4 138 if (job) job->Terminate();
7eaa723e 139 }
73d51118 140}
141
f7f33dec 142void AliTPCAnalysisTaskcalib::FinishTaskOutput()
143{
144 //
145 // According description in AliAnalisysTask this method is call
146 // on the slaves before sending data
147 //
148 Terminate("slave");
149 RegisterDebugOutput();
150}
151
152
73d51118 153void AliTPCAnalysisTaskcalib::Process(AliESDEvent *event) {
08825fb4 154 //
155 // Process ESD event
156 //
157 AliTPCcalibBase *job=0;
f7f33dec 158 Int_t njobs = fCalibJobs->GetEntriesFast();
08825fb4 159 for (Int_t i=0;i<njobs;i++){
f7f33dec 160 job = (AliTPCcalibBase*)fCalibJobs->UncheckedAt(i);
08825fb4 161 if (job) job->Process(event);
162 }
73d51118 163}
164
165void AliTPCAnalysisTaskcalib::Process(AliTPCseed *track) {
08825fb4 166 //
167 // Process TPC track
168 //
169 AliTPCcalibBase *job=0;
f7f33dec 170 Int_t njobs = fCalibJobs->GetEntriesFast();
08825fb4 171 for (Int_t i=0;i<njobs;i++){
f7f33dec 172 job = (AliTPCcalibBase*)fCalibJobs->UncheckedAt(i);
173 if (job) job->Process(track);
174 }
175}
176
5822e507 177void AliTPCAnalysisTaskcalib::Process(AliESDtrack *track, Int_t run) {
f7f33dec 178 //
179 // Process ESD track
180 //
181 AliTPCcalibBase *job=0;
182 Int_t njobs = fCalibJobs->GetEntriesFast();
183 for (Int_t i=0;i<njobs;i++){
184 job = (AliTPCcalibBase*)fCalibJobs->UncheckedAt(i);
5822e507 185 if (job) job->Process(track,run);
08825fb4 186 }
73d51118 187}
188
189Long64_t AliTPCAnalysisTaskcalib::Merge(TCollection *li) {
f7f33dec 190 TIterator *i=fCalibJobs->MakeIterator();
73d51118 191 AliTPCcalibBase *job;
192 Long64_t n=0;
0db06ea6 193 while ((job=dynamic_cast<AliTPCcalibBase*>(i->Next())))
73d51118 194 n+=job->Merge(li);
195 return n;
196}
197
198void AliTPCAnalysisTaskcalib::Analyze() {
08825fb4 199 //
200 // Analyze the content of the task
201 //
202 AliTPCcalibBase *job=0;
f7f33dec 203 Int_t njobs = fCalibJobs->GetEntriesFast();
08825fb4 204 for (Int_t i=0;i<njobs;i++){
f7f33dec 205 job = (AliTPCcalibBase*)fCalibJobs->UncheckedAt(i);
08825fb4 206 if (job) job->Analyze();
207 }
73d51118 208}
f7f33dec 209
210
211void AliTPCAnalysisTaskcalib::RegisterDebugOutput(){
212 //
213 //
214 //
215 AliTPCcalibBase *job=0;
216 Int_t njobs = fCalibJobs->GetEntriesFast();
217 for (Int_t i=0;i<njobs;i++){
218 job = (AliTPCcalibBase*)fCalibJobs->UncheckedAt(i);
219 if (job) job->RegisterDebugOutput(fDebugOutputPath.Data());
220 }
221}