1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
17 ///////////////////////////////////////////////////////////////////////////////
19 // blaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa //
21 ///////////////////////////////////////////////////////////////////////////////
22 #include "AliTPCAnalysisTaskcalib.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"
32 ClassImp(AliTPCAnalysisTaskcalib)
34 AliTPCAnalysisTaskcalib::AliTPCAnalysisTaskcalib(const char *name)
35 :AliAnalysisTask(name,""),
43 DefineInput(0, TChain::Class());
44 DefineOutput(0, TObjArray::Class());
47 AliTPCAnalysisTaskcalib::~AliTPCAnalysisTaskcalib() {
53 void AliTPCAnalysisTaskcalib::Exec(Option_t *) {
56 // Loop over tracks and call Process function
58 Printf("ERROR: fESD not available");
61 fESDfriend=static_cast<AliESDfriend*>(fESD->FindListObject("AliESDfriend"));
63 Printf("ERROR: fESDfriend not available");
66 Int_t n=fESD->GetNumberOfTracks();
67 for (Int_t i=0;i<n;++i) {
68 AliESDfriendTrack *friendTrack=fESDfriend->GetTrack(i);
69 TObject *calibObject=0;
71 for (Int_t j=0;(calibObject=friendTrack->GetCalibObject(j));++j)
72 if ((seed=dynamic_cast<AliTPCseed*>(calibObject)))
77 PostData(0,&fCalibJobs);
80 void AliTPCAnalysisTaskcalib::ConnectInputData(Option_t *) {
84 TTree* tree=dynamic_cast<TTree*>(GetInputData(0));
86 Printf("ERROR: Could not read chain from input slot 0");
89 AliESDInputHandler *esdH = dynamic_cast<AliESDInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
91 Printf("ERROR: Could not get ESDInputHandler");
94 fESD = esdH->GetEvent();
95 Printf("*** CONNECTED NEW EVENT ****");
100 void AliTPCAnalysisTaskcalib::CreateOutputObjects() {
105 void AliTPCAnalysisTaskcalib::Terminate(Option_t */*option*/) {
109 TIterator *i=fCalibJobs.MakeIterator();
110 AliTPCcalibBase *job;
111 while ((job=dynamic_cast<AliTPCcalibBase*>(i->Next()))){
116 // we could have been living inside a master class...
117 void AliTPCAnalysisTaskcalib::Process(AliESDEvent *event) {
118 TIterator *i=fCalibJobs.MakeIterator();
119 AliTPCcalibBase *job;
120 while ((job=dynamic_cast<AliTPCcalibBase*>(i->Next())))
124 void AliTPCAnalysisTaskcalib::Process(AliTPCseed *track) {
125 TIterator *i=fCalibJobs.MakeIterator();
126 AliTPCcalibBase *job;
127 while ((job=dynamic_cast<AliTPCcalibBase*>(i->Next())))
131 Long64_t AliTPCAnalysisTaskcalib::Merge(TCollection *li) {
132 TIterator *i=fCalibJobs.MakeIterator();
133 AliTPCcalibBase *job;
135 while ((job=dynamic_cast<AliTPCcalibBase*>(i->Next())))
140 void AliTPCAnalysisTaskcalib::Analyze() {
141 TIterator *i=fCalibJobs.MakeIterator();
142 AliTPCcalibBase *job;
143 while ((job=dynamic_cast<AliTPCcalibBase*>(i->Next())))