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.                  *
 **************************************************************************/

/* $Id$ */

//----------------------------------------------------------------
// Analysis task for interfacing the jet reader with the analysis framework
//
// Author: magali.estienne@subatech.in2p3.fr 
//         alexandre.shabetai@cern.ch
//----------------------------------------------------------------

#include <Riostream.h> 
#include <TROOT.h>
#include <TInterpreter.h>
#include <TTree.h>

#include "AliAnalysisTaskJetsReader.h"
#include "AliAnalysisManager.h"
#include "AliJetReader.h"
#include "AliAODEvent.h"
#include "AliMCEvent.h"
#include "AliJetCalTrk.h"

ClassImp(AliAnalysisTaskJetsReader)

////////////////////////////////////////////////////////////////////////

AliAnalysisTaskJetsReader::AliAnalysisTaskJetsReader():
  AliAnalysisTaskSE(),
  fConfigFile("ConfigJetReaderAnalysis.C"),
  fJetReader(0x0),
  fReadAODFromOutput(0),
  fReaderEvent(0x0),
  fExchangeTree(0x0)
{
  // Default constructor
}

//----------------------------------------------------------------
AliAnalysisTaskJetsReader::AliAnalysisTaskJetsReader(const char* name):
  AliAnalysisTaskSE(name),
  fConfigFile("ConfigJetReaderAnalysis.C"),
  fJetReader(0x0),
  fReadAODFromOutput(0),
  fReaderEvent(0x0),
  fExchangeTree(0x0)
{
  // Default constructor
  DefineOutput(1, TTree::Class());

}

//----------------------------------------------------------------
AliAnalysisTaskJetsReader::~AliAnalysisTaskJetsReader()
{
  // Destructor

  if (fExchangeTree)
   delete fExchangeTree;

}

//----------------------------------------------------------------
void AliAnalysisTaskJetsReader::UserCreateOutputObjects()
{
  // Create the TTree to be exchanged between the reader and finder
  //
   
  if (fDebug > 1) printf("AnalysisTaskJetsReader::CreateOutPutData() \n");

  fExchangeTree = new TTree("jets_ExchangeContainer","ExchangeTree");

  fJetReader->InitTasks();

  fReaderEvent = fJetReader->GetCalTrkEvent();

  fExchangeTree->Branch("AliJetCalTrkEvent", &fReaderEvent);

  PostData(1, fExchangeTree);

}

//----------------------------------------------------------------
void AliAnalysisTaskJetsReader::Init()
{
  // Initialization
  if (fDebug > 1) printf("AnalysisTaskJets::Init() \n");
 
  // Call configuration file
  if (fConfigFile.Length()) {
    gROOT->LoadMacro(fConfigFile);
    fJetReader = (AliJetReader*) gInterpreter->ProcessLine("ConfigJetReaderAnalysis()");
  }

}

//----------------------------------------------------------------
void AliAnalysisTaskJetsReader::UserExec(Option_t */*option*/)
{

  // Execute analysis for current event
  //

  // Clear current CalTrkEvent 
  fReaderEvent->Clear();

  fExchangeTree->Reset();

  // Give InputEvent to the reader
  if (dynamic_cast<AliAODEvent*>(InputEvent()) !=  0 && !fReadAODFromOutput) {
    // AOD is input event..........................................V                                       
    fJetReader->SetInputEvent(InputEvent(), InputEvent(), MCEvent());
  } else {
    // AOD is read from output ....................................V     
    fJetReader->SetInputEvent(InputEvent(), AODEvent(), MCEvent());
  }

  // Process current event
  fJetReader->ProcessEvent();

  // Fill object to be exchanged between reader and finder tasks
  fExchangeTree->Fill();

  // Post the data
  PostData(1, fExchangeTree);

  return;

}

//----------------------------------------------------------------
void AliAnalysisTaskJetsReader::Terminate(Option_t */*option*/)
{
  // Terminate analysis
  if (fDebug > 1) printf("AnalysisJets: Terminate() \n");

}

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