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 **************************************************************************/
16 //______________________________________________________________________________
17 // Analysis task for high pt particle correlations
18 // author: R.Diaz, J. Rak, D.J. Kim
19 // ALICE Group University of Jyvaskyla
21 // Fill the analysis containers for ESD or AOD
22 // Adapted for AliAnalysisTaskSE and AOD objects
23 //////////////////////////////////////////////////////////////////////////////
25 #include "AliAnalysisTaskSE.h"
26 #include "AliAODHandler.h"
27 #include "AliAnalysisManager.h"
30 #include "AliJEfficiencyTask.h"
31 #include "AliJEventHeader.h"
32 #include "AliJRunHeader.h"
33 #include "AliJCORRANTask.h"
35 //______________________________________________________________________________
36 AliJEfficiencyTask::AliJEfficiencyTask() :
37 AliAnalysisTaskSE("JEfficiencyTask"),
40 fEfficiencyScanner(0x0),
43 DefineOutput (1, TDirectory::Class());
46 //______________________________________________________________________________
47 AliJEfficiencyTask::AliJEfficiencyTask(const char *name, TString inputformat):
48 AliAnalysisTaskSE(name),
51 fEfficiencyScanner(0x0),
55 AliInfo("---- AliJEfficiencyTask Constructor ----");
58 DefineOutput (1, TDirectory::Class());
59 fEfficiencyScanner = new AliJEfficiencyScanner( Form("%sEffScanner",name ));
62 //____________________________________________________________________________
63 AliJEfficiencyTask::AliJEfficiencyTask(const AliJEfficiencyTask& ap) :
64 AliAnalysisTaskSE(ap.GetName()),
65 fFilterTask(ap.fFilterTask),
66 fFilterTaskName(ap.fFilterTaskName),
67 fEfficiencyScanner( ap.fEfficiencyScanner ),
68 fEffHistDir( ap.fEffHistDir )
71 AliInfo("----DEBUG AliJEfficiencyTask COPY ----");
75 //_____________________________________________________________________________
76 AliJEfficiencyTask& AliJEfficiencyTask::operator = (const AliJEfficiencyTask& ap)
78 // assignment operator
80 AliInfo("----DEBUG AliJEfficiencyTask operator= ----");
81 this->~AliJEfficiencyTask();
82 new(this) AliJEfficiencyTask(ap);
86 //______________________________________________________________________________
87 AliJEfficiencyTask::~AliJEfficiencyTask()
91 delete fEfficiencyScanner;
95 //________________________________________________________________________
97 void AliJEfficiencyTask::UserCreateOutputObjects()
99 //=== create the jcorran outputs objects
100 if(fDebug > 1) printf("AliJEfficiencyTask::UserCreateOutPutData() \n");
102 //=== Get AnalysisManager
103 AliAnalysisManager *man = AliAnalysisManager::GetAnalysisManager();
104 if(!man->GetOutputEventHandler()) {
105 Fatal("UserCreateOutputObjects", "This task needs an AOD handler");
109 fFilterTask = (AliJCORRANTask*)(man->GetTask( fFilterTaskName ));
113 fEfficiencyScanner->SetJRunHeader( fFilterTask->GetJRunHeader() );//TODO
114 fEfficiencyScanner->SetJTrackList( fFilterTask->GetFilter()->GetTrackList() );
115 fEfficiencyScanner->SetJMCTrackList( fFilterTask->GetFilter()->GetMCTrackList() );
116 fEffHistDir = gDirectory->mkdir("EffHist");
118 fEfficiencyScanner->UserCreateOutputObjects();
119 PostData( 1, fEffHistDir );
121 cout << "Add(fAliRunHeader) in UserCreateObject() ======= " << endl;
125 //______________________________________________________________________________
126 void AliJEfficiencyTask::UserExec(Option_t* /*option*/)
129 // Processing of one event
130 if(fDebug > 5) cout << "------- AliJEfficiencyTask Exec-------"<<endl;
131 if(!((Entry()-1)%100)) AliInfo(Form(" Processing event # %lld", Entry()));
133 if( fFilterTask->GetFilter()->GetEventSuccess() ){
134 fEfficiencyScanner->SetJEventHeader( (AliJEventHeader*) fFilterTask->GetFilter()->GetHeaderList()->At(0) );
135 fEfficiencyScanner->UserExec("");
136 PostData(1, fEffHistDir );
140 if(fDebug > 5) cout << "\t------- End UserExec "<<endl;
143 //______________________________________________________________________________
144 void AliJEfficiencyTask::Init()
146 // Intialisation of parameters
147 AliInfo("Doing initialization") ;
148 fEfficiencyScanner->Init();
151 //______________________________________________________________________________
152 void AliJEfficiencyTask::Terminate(Option_t *)
155 fEfficiencyScanner->Terminate();
157 fEffHistDir->Write();
158 cout<<"JEfficiency Analysis DONE !!"<<endl;