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" |
27 | #include "AliESDfriendTrack.h" |
28 | #include "AliTPCseed.h" |
29 | #include "AliESDInputHandler.h" |
30 | #include "AliAnalysisManager.h" |
31 | |
32 | ClassImp(AliTPCAnalysisTaskcalib) |
33 | |
34 | AliTPCAnalysisTaskcalib::AliTPCAnalysisTaskcalib(const char *name) |
35 | :AliAnalysisTask(name,""), |
36 | fCalibJobs(0), |
0db06ea6 |
37 | fESD(0), |
38 | fESDfriend(0) |
73d51118 |
39 | { |
40 | // |
41 | // Constructor |
42 | // |
43 | DefineInput(0, TChain::Class()); |
44 | DefineOutput(0, TObjArray::Class()); |
08825fb4 |
45 | fCalibJobs.SetOwner(kTRUE); |
73d51118 |
46 | } |
47 | |
48 | AliTPCAnalysisTaskcalib::~AliTPCAnalysisTaskcalib() { |
49 | // |
50 | // destructor |
51 | // |
08825fb4 |
52 | fCalibJobs.Delete(); |
73d51118 |
53 | } |
54 | |
55 | void AliTPCAnalysisTaskcalib::Exec(Option_t *) { |
56 | // |
57 | // Exec function |
58 | // Loop over tracks and call Process function |
59 | if (!fESD) { |
60 | Printf("ERROR: fESD not available"); |
61 | return; |
62 | } |
63 | fESDfriend=static_cast<AliESDfriend*>(fESD->FindListObject("AliESDfriend")); |
64 | if (!fESDfriend) { |
65 | Printf("ERROR: fESDfriend not available"); |
66 | return; |
67 | } |
68 | Int_t n=fESD->GetNumberOfTracks(); |
69 | for (Int_t i=0;i<n;++i) { |
70 | AliESDfriendTrack *friendTrack=fESDfriend->GetTrack(i); |
0db06ea6 |
71 | TObject *calibObject=0; |
73d51118 |
72 | AliTPCseed *seed=0; |
0db06ea6 |
73 | for (Int_t j=0;(calibObject=friendTrack->GetCalibObject(j));++j) |
74 | if ((seed=dynamic_cast<AliTPCseed*>(calibObject))) |
73d51118 |
75 | break; |
76 | if (seed) |
77 | Process(seed); |
78 | } |
79 | PostData(0,&fCalibJobs); |
80 | } |
81 | |
82 | void AliTPCAnalysisTaskcalib::ConnectInputData(Option_t *) { |
83 | // |
84 | // |
85 | // |
86 | TTree* tree=dynamic_cast<TTree*>(GetInputData(0)); |
87 | if (!tree) { |
88 | Printf("ERROR: Could not read chain from input slot 0"); |
89 | } |
90 | else { |
91 | AliESDInputHandler *esdH = dynamic_cast<AliESDInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()); |
92 | if (!esdH) { |
93 | Printf("ERROR: Could not get ESDInputHandler"); |
94 | } |
95 | else { |
96 | fESD = esdH->GetEvent(); |
97 | Printf("*** CONNECTED NEW EVENT ****"); |
98 | } |
99 | } |
100 | } |
101 | |
102 | void AliTPCAnalysisTaskcalib::CreateOutputObjects() { |
103 | // |
104 | // |
105 | // |
106 | } |
0db06ea6 |
107 | void AliTPCAnalysisTaskcalib::Terminate(Option_t */*option*/) { |
7eaa723e |
108 | // |
08825fb4 |
109 | // Terminate |
7eaa723e |
110 | // |
08825fb4 |
111 | AliTPCcalibBase *job=0; |
112 | Int_t njobs = fCalibJobs.GetEntriesFast(); |
113 | for (Int_t i=0;i<njobs;i++){ |
114 | job = (AliTPCcalibBase*)fCalibJobs.UncheckedAt(i); |
115 | if (job) job->Terminate(); |
7eaa723e |
116 | } |
73d51118 |
117 | } |
118 | |
73d51118 |
119 | void AliTPCAnalysisTaskcalib::Process(AliESDEvent *event) { |
08825fb4 |
120 | // |
121 | // Process ESD event |
122 | // |
123 | AliTPCcalibBase *job=0; |
124 | Int_t njobs = fCalibJobs.GetEntriesFast(); |
125 | for (Int_t i=0;i<njobs;i++){ |
126 | job = (AliTPCcalibBase*)fCalibJobs.UncheckedAt(i); |
127 | if (job) job->Process(event); |
128 | } |
73d51118 |
129 | } |
130 | |
131 | void AliTPCAnalysisTaskcalib::Process(AliTPCseed *track) { |
08825fb4 |
132 | // |
133 | // Process TPC track |
134 | // |
135 | AliTPCcalibBase *job=0; |
136 | Int_t njobs = fCalibJobs.GetEntriesFast(); |
137 | for (Int_t i=0;i<njobs;i++){ |
138 | job = (AliTPCcalibBase*)fCalibJobs.UncheckedAt(i); |
139 | if (job) job->Process(track); |
140 | } |
73d51118 |
141 | } |
142 | |
143 | Long64_t AliTPCAnalysisTaskcalib::Merge(TCollection *li) { |
144 | TIterator *i=fCalibJobs.MakeIterator(); |
145 | AliTPCcalibBase *job; |
146 | Long64_t n=0; |
0db06ea6 |
147 | while ((job=dynamic_cast<AliTPCcalibBase*>(i->Next()))) |
73d51118 |
148 | n+=job->Merge(li); |
149 | return n; |
150 | } |
151 | |
152 | void AliTPCAnalysisTaskcalib::Analyze() { |
08825fb4 |
153 | // |
154 | // Analyze the content of the task |
155 | // |
156 | AliTPCcalibBase *job=0; |
157 | Int_t njobs = fCalibJobs.GetEntriesFast(); |
158 | for (Int_t i=0;i<njobs;i++){ |
159 | job = (AliTPCcalibBase*)fCalibJobs.UncheckedAt(i); |
160 | if (job) job->Analyze(); |
161 | } |
73d51118 |
162 | } |