8 #include "AliAnalysisTask.h"
9 #include "AliAnalysisManager.h"
11 #include "AliESDEvent.h"
12 #include "AliESDInputHandler.h"
14 #include "AliT0CalibSeasonTimeShift.h"
15 #include "AliT0CalibOffsetChannelsTask.h"
17 #include "AliCDBMetaData.h"
19 #include "AliCDBEntry.h"
20 #include "AliCDBManager.h"
21 #include "AliCDBStorage.h"
23 // Task should calculate channels offset
26 ClassImp(AliT0CalibOffsetChannelsTask)
27 //________________________________________________________________________
28 AliT0CalibOffsetChannelsTask::AliT0CalibOffsetChannelsTask()
29 : AliAnalysisTaskSE(), fESD(0), fTzeroObject(0),fRunNumber(0)
33 // Define input and output slots here
34 // Input slot #0 works with a TChain
35 DefineInput(0, TChain::Class());
36 DefineOutput(1, TObjArray::Class());
37 fTzeroObject = new TObjArray(0);
38 fTzeroObject->SetOwner(kTRUE);
39 // Output slot #0 id reserved by the base class for AOD
40 // Output slot #1 writes into a TH1 container
41 // DefineOutput(1, TList::Class());
45 //________________________________________________________________________
46 AliT0CalibOffsetChannelsTask::AliT0CalibOffsetChannelsTask(const char *name)
47 : AliAnalysisTaskSE(name), fESD(0), fTzeroObject(0),fRunNumber(0)
51 // Define input and output slots here
52 // Input slot #0 works with a TChain
53 DefineInput(0, TChain::Class());
54 DefineOutput(1, TObjArray::Class());
55 // Output slot #0 id reserved by the base class for AOD
56 // Output slot #1 writes into a TH1 container
57 // DefineOutput(1, TList::Class());
60 //________________________________________________________________________
61 AliT0CalibOffsetChannelsTask::~AliT0CalibOffsetChannelsTask()
64 printf("AliT0CalibOffsetChannels~AliT0CalibOffsetChannels() ");
65 if( fTzeroObject )fTzeroObject->Delete();
68 //________________________________________________________________________
69 void AliT0CalibOffsetChannelsTask::ConnectInputData(Option_t *) {
73 TTree* tree=dynamic_cast<TTree*>(GetInputData(0));
75 printf("ERROR: Could not read chain from input slot 0");
78 AliESDInputHandler *esdH = dynamic_cast<AliESDInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
80 printf ("ERROR: Could not get ESDInputHandler");
83 fESD = esdH->GetEvent();
84 printf ("*** CONNECTED NEW EVENT ****");
89 //________________________________________________________________________
90 void AliT0CalibOffsetChannelsTask::UserCreateOutputObjects()
93 for (Int_t i=0; i<24; i++) {
94 fTimeDiff[i] = new TH1F (Form("CFD1minCFD%d",i+1),"fTimeDiff",300, -300, 300);
95 fCFD[i] = new TH1F("CFD","CFD",500, 6000, 7000);
97 fTzeroObject = new TObjArray(0);
98 fTzeroObject->SetOwner(kTRUE);
100 PostData(1, fTzeroObject);
105 //________________________________________________________________________
106 void AliT0CalibOffsetChannelsTask::UserExec(Option_t *)
109 // Called for each event
112 fESD = dynamic_cast<AliESDEvent*>(InputEvent());
114 printf("ERROR: fESD not available\n");
118 const Double32_t* time = fESD->GetT0time();
119 for (Int_t i=0; i<12; i++) {
121 fCFD[i]->Fill( time[i]);
123 fTimeDiff[i]->Fill( time[i]-time[0]);
126 for (Int_t i=12; i<24; i++) {
128 fCFD[i]->Fill( time[i]);
130 fTimeDiff[i]->Fill( time[i]-time[12]);
133 fRunNumber = fESD->GetRunNumber() ;
135 // printf("%lf %lf %lf\n",orA,orC,time);
136 PostData(1, fTzeroObject);
138 //________________________________________________________________________
139 void AliT0CalibOffsetChannelsTask::Terminate(Option_t *)
142 // Called once at the end of the query
143 for (Int_t i=0; i<24; i++)
144 fTzeroObject->AddAtAndExpand(fTimeDiff[i],i);
146 for (Int_t i=24; i<48; i++)
147 fTzeroObject->AddAtAndExpand(fCFD[i],i);