ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

//______________________________________________________________________________
// Analysis task for high pt particle correlations 
// author: R.Diaz, J. Rak,  D.J. Kim
// ALICE Group University of Jyvaskyla 
// Finland 
// Fill the analysis containers for ESD or AOD
// Adapted for AliAnalysisTaskSE and AOD objects  
//////////////////////////////////////////////////////////////////////////////

#include "AliAnalysisTaskSE.h"
#include "AliAODHandler.h"
#include "AliAnalysisManager.h"
#include "AliLog.h"

#include "AliJEfficiencyTask.h" 
#include "AliJEventHeader.h"
#include "AliJRunHeader.h"
#include "AliJCORRANTask.h"

//______________________________________________________________________________
AliJEfficiencyTask::AliJEfficiencyTask() :   
    AliAnalysisTaskSE("JEfficiencyTask"),
	fFilterTask(NULL),
	fFilterTaskName(""),
    fEfficiencyScanner(0x0),
    fEffHistDir(0x0)
{
  DefineOutput (1, TDirectory::Class());
}

//______________________________________________________________________________
AliJEfficiencyTask::AliJEfficiencyTask(const char *name, TString inputformat):
    AliAnalysisTaskSE(name), 
	fFilterTask(NULL),
	fFilterTaskName(""),
    fEfficiencyScanner(0x0),
    fEffHistDir(0x0)
{
  // Constructor
  AliInfo("---- AliJEfficiencyTask Constructor ----");

  JUNUSED(inputformat);
  DefineOutput (1, TDirectory::Class());
  fEfficiencyScanner = new AliJEfficiencyScanner( Form("%sEffScanner",name ));
}

//____________________________________________________________________________
AliJEfficiencyTask::AliJEfficiencyTask(const AliJEfficiencyTask& ap) :
    AliAnalysisTaskSE(ap.GetName()), 
	fFilterTask(ap.fFilterTask),
	fFilterTaskName(ap.fFilterTaskName),
    fEfficiencyScanner( ap.fEfficiencyScanner ),
    fEffHistDir( ap.fEffHistDir )
{ 

  AliInfo("----DEBUG AliJEfficiencyTask COPY ----");

}

//_____________________________________________________________________________
AliJEfficiencyTask& AliJEfficiencyTask::operator = (const AliJEfficiencyTask& ap)
{
  // assignment operator

  AliInfo("----DEBUG AliJEfficiencyTask operator= ----");
  this->~AliJEfficiencyTask();
  new(this) AliJEfficiencyTask(ap);
  return *this;
}

//______________________________________________________________________________
AliJEfficiencyTask::~AliJEfficiencyTask()
{
  // destructor 

   delete fEfficiencyScanner;

}

//________________________________________________________________________

void AliJEfficiencyTask::UserCreateOutputObjects()
{  
  //=== create the jcorran outputs objects
  if(fDebug > 1) printf("AliJEfficiencyTask::UserCreateOutPutData() \n");
  
  //=== Get AnalysisManager
  AliAnalysisManager *man = AliAnalysisManager::GetAnalysisManager();
  if(!man->GetOutputEventHandler()) {
    Fatal("UserCreateOutputObjects", "This task needs an AOD handler");
    return;
  }

   fFilterTask = (AliJCORRANTask*)(man->GetTask( fFilterTaskName ));

   OpenFile(1);

   fEfficiencyScanner->SetJRunHeader( fFilterTask->GetJRunHeader() );//TODO
   fEfficiencyScanner->SetJTrackList( fFilterTask->GetFilter()->GetTrackList()     );
   fEfficiencyScanner->SetJMCTrackList( fFilterTask->GetFilter()->GetMCTrackList()    );
   fEffHistDir = gDirectory;//->mkdir("EffHist"); // no need
   fEffHistDir->cd();
   fEfficiencyScanner->UserCreateOutputObjects();
   PostData( 1, fEffHistDir );

   cout << "Add(fAliRunHeader) in UserCreateObject() ======= " << endl;

}

//______________________________________________________________________________
void AliJEfficiencyTask::UserExec(Option_t* /*option*/) 
{

	// Processing of one event
	if(fDebug > 5) cout << "------- AliJEfficiencyTask Exec-------"<<endl;
	if(!((Entry()-1)%100))  AliInfo(Form(" Processing event # %lld",  Entry())); 
	if( fFilterTask->GetFilterEntry() != fEntry ) return;

	if( fFilterTask->GetFilter()->GetEventSuccess() ){
		fEfficiencyScanner->SetJEventHeader( (AliJEventHeader*) fFilterTask->GetFilter()->GetHeaderList()->At(0) );
		fEfficiencyScanner->UserExec("");
		PostData(1, fEffHistDir );
	}


	if(fDebug > 5) cout << "\t------- End UserExec "<<endl;
}

//______________________________________________________________________________
void AliJEfficiencyTask::Init()
{
	// Intialisation of parameters
	AliInfo("Doing initialization") ; 
	fEfficiencyScanner->Init();
}

//______________________________________________________________________________
void AliJEfficiencyTask::Terminate(Option_t *)
{

	//fEfficiencyScanner->Terminate();
	//OpenFile(1);
	//fEffHistDir->Write();
	cout<<"JEfficiency Analysis DONE !!"<<endl; 

}
 AliJEfficiencyTask.cxx:1
 AliJEfficiencyTask.cxx:2
 AliJEfficiencyTask.cxx:3
 AliJEfficiencyTask.cxx:4
 AliJEfficiencyTask.cxx:5
 AliJEfficiencyTask.cxx:6
 AliJEfficiencyTask.cxx:7
 AliJEfficiencyTask.cxx:8
 AliJEfficiencyTask.cxx:9
 AliJEfficiencyTask.cxx:10
 AliJEfficiencyTask.cxx:11
 AliJEfficiencyTask.cxx:12
 AliJEfficiencyTask.cxx:13
 AliJEfficiencyTask.cxx:14
 AliJEfficiencyTask.cxx:15
 AliJEfficiencyTask.cxx:16
 AliJEfficiencyTask.cxx:17
 AliJEfficiencyTask.cxx:18
 AliJEfficiencyTask.cxx:19
 AliJEfficiencyTask.cxx:20
 AliJEfficiencyTask.cxx:21
 AliJEfficiencyTask.cxx:22
 AliJEfficiencyTask.cxx:23
 AliJEfficiencyTask.cxx:24
 AliJEfficiencyTask.cxx:25
 AliJEfficiencyTask.cxx:26
 AliJEfficiencyTask.cxx:27
 AliJEfficiencyTask.cxx:28
 AliJEfficiencyTask.cxx:29
 AliJEfficiencyTask.cxx:30
 AliJEfficiencyTask.cxx:31
 AliJEfficiencyTask.cxx:32
 AliJEfficiencyTask.cxx:33
 AliJEfficiencyTask.cxx:34
 AliJEfficiencyTask.cxx:35
 AliJEfficiencyTask.cxx:36
 AliJEfficiencyTask.cxx:37
 AliJEfficiencyTask.cxx:38
 AliJEfficiencyTask.cxx:39
 AliJEfficiencyTask.cxx:40
 AliJEfficiencyTask.cxx:41
 AliJEfficiencyTask.cxx:42
 AliJEfficiencyTask.cxx:43
 AliJEfficiencyTask.cxx:44
 AliJEfficiencyTask.cxx:45
 AliJEfficiencyTask.cxx:46
 AliJEfficiencyTask.cxx:47
 AliJEfficiencyTask.cxx:48
 AliJEfficiencyTask.cxx:49
 AliJEfficiencyTask.cxx:50
 AliJEfficiencyTask.cxx:51
 AliJEfficiencyTask.cxx:52
 AliJEfficiencyTask.cxx:53
 AliJEfficiencyTask.cxx:54
 AliJEfficiencyTask.cxx:55
 AliJEfficiencyTask.cxx:56
 AliJEfficiencyTask.cxx:57
 AliJEfficiencyTask.cxx:58
 AliJEfficiencyTask.cxx:59
 AliJEfficiencyTask.cxx:60
 AliJEfficiencyTask.cxx:61
 AliJEfficiencyTask.cxx:62
 AliJEfficiencyTask.cxx:63
 AliJEfficiencyTask.cxx:64
 AliJEfficiencyTask.cxx:65
 AliJEfficiencyTask.cxx:66
 AliJEfficiencyTask.cxx:67
 AliJEfficiencyTask.cxx:68
 AliJEfficiencyTask.cxx:69
 AliJEfficiencyTask.cxx:70
 AliJEfficiencyTask.cxx:71
 AliJEfficiencyTask.cxx:72
 AliJEfficiencyTask.cxx:73
 AliJEfficiencyTask.cxx:74
 AliJEfficiencyTask.cxx:75
 AliJEfficiencyTask.cxx:76
 AliJEfficiencyTask.cxx:77
 AliJEfficiencyTask.cxx:78
 AliJEfficiencyTask.cxx:79
 AliJEfficiencyTask.cxx:80
 AliJEfficiencyTask.cxx:81
 AliJEfficiencyTask.cxx:82
 AliJEfficiencyTask.cxx:83
 AliJEfficiencyTask.cxx:84
 AliJEfficiencyTask.cxx:85
 AliJEfficiencyTask.cxx:86
 AliJEfficiencyTask.cxx:87
 AliJEfficiencyTask.cxx:88
 AliJEfficiencyTask.cxx:89
 AliJEfficiencyTask.cxx:90
 AliJEfficiencyTask.cxx:91
 AliJEfficiencyTask.cxx:92
 AliJEfficiencyTask.cxx:93
 AliJEfficiencyTask.cxx:94
 AliJEfficiencyTask.cxx:95
 AliJEfficiencyTask.cxx:96
 AliJEfficiencyTask.cxx:97
 AliJEfficiencyTask.cxx:98
 AliJEfficiencyTask.cxx:99
 AliJEfficiencyTask.cxx:100
 AliJEfficiencyTask.cxx:101
 AliJEfficiencyTask.cxx:102
 AliJEfficiencyTask.cxx:103
 AliJEfficiencyTask.cxx:104
 AliJEfficiencyTask.cxx:105
 AliJEfficiencyTask.cxx:106
 AliJEfficiencyTask.cxx:107
 AliJEfficiencyTask.cxx:108
 AliJEfficiencyTask.cxx:109
 AliJEfficiencyTask.cxx:110
 AliJEfficiencyTask.cxx:111
 AliJEfficiencyTask.cxx:112
 AliJEfficiencyTask.cxx:113
 AliJEfficiencyTask.cxx:114
 AliJEfficiencyTask.cxx:115
 AliJEfficiencyTask.cxx:116
 AliJEfficiencyTask.cxx:117
 AliJEfficiencyTask.cxx:118
 AliJEfficiencyTask.cxx:119
 AliJEfficiencyTask.cxx:120
 AliJEfficiencyTask.cxx:121
 AliJEfficiencyTask.cxx:122
 AliJEfficiencyTask.cxx:123
 AliJEfficiencyTask.cxx:124
 AliJEfficiencyTask.cxx:125
 AliJEfficiencyTask.cxx:126
 AliJEfficiencyTask.cxx:127
 AliJEfficiencyTask.cxx:128
 AliJEfficiencyTask.cxx:129
 AliJEfficiencyTask.cxx:130
 AliJEfficiencyTask.cxx:131
 AliJEfficiencyTask.cxx:132
 AliJEfficiencyTask.cxx:133
 AliJEfficiencyTask.cxx:134
 AliJEfficiencyTask.cxx:135
 AliJEfficiencyTask.cxx:136
 AliJEfficiencyTask.cxx:137
 AliJEfficiencyTask.cxx:138
 AliJEfficiencyTask.cxx:139
 AliJEfficiencyTask.cxx:140
 AliJEfficiencyTask.cxx:141
 AliJEfficiencyTask.cxx:142
 AliJEfficiencyTask.cxx:143
 AliJEfficiencyTask.cxx:144
 AliJEfficiencyTask.cxx:145
 AliJEfficiencyTask.cxx:146
 AliJEfficiencyTask.cxx:147
 AliJEfficiencyTask.cxx:148
 AliJEfficiencyTask.cxx:149
 AliJEfficiencyTask.cxx:150
 AliJEfficiencyTask.cxx:151
 AliJEfficiencyTask.cxx:152
 AliJEfficiencyTask.cxx:153
 AliJEfficiencyTask.cxx:154
 AliJEfficiencyTask.cxx:155
 AliJEfficiencyTask.cxx:156
 AliJEfficiencyTask.cxx:157
 AliJEfficiencyTask.cxx:158
 AliJEfficiencyTask.cxx:159
 AliJEfficiencyTask.cxx:160
 AliJEfficiencyTask.cxx:161