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$ */
 
//------------------------------------------------------------------------
// Jet reader base class
// manages the reading of input for jet algorithms
// Authors: jgcn@mda.cinvestav.mx
//          magali.estienne@subatech.in2p3.fr
//          alexandre.shabetai@cern.ch
//
// **February 2011
// implemented  standard geometry (AliEMCALGeometry) (was AliJetDummyGeo implented separately in ESDReader and AODReader
// local2master matrices are now get from $ALICE_ROOT/OADB/PWG4/JetReconstruction/EMCALlocal2master.root
// you can choose the geometry (EMCAL_COMPLETE, EMCAL_FIRSTYEARv1, etc) via SetEMCALgeo2bLoad('Name_of_Geometry') in the Readerheader
// different options for survey(ed) matrice are provided too
// ** August 2011
// OADB path changed from  '../OADB/PWG4/JetReconstruction/'  to   '../OADB/EMCAL/'
// marco.bregant@subatech.in2p3.fr
// ** 2011
// - AliJetESD/AODReader classes removed from JETAN. Reader now ESD/AOD independent. It uses VEvent in the AliJetFill* classes.
// - EMCal utilities added for bad cells id, calibration, etc.
//------------------------------------------------------------------------

// root
#include <TFile.h>

//AliRoot
#include "AliVEvent.h"
#include "AliAODEvent.h"
#include "AliESDEvent.h"
#include "AliJetReader.h"
#include "AliJetReaderHeader.h"
#include "AliAnalysisManager.h"
#include "AliJetFillCalTrkTrack.h" 
#include "AliJetFillCalTrkTrackMC.h"
#include "AliJetCalTrk.h"

using std::cout;
using std::endl;
ClassImp(AliJetReader)

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


AliJetReader::AliJetReader():
  fCalTrkEvent(0x0),
  fFillEvent(0x0),
  fReaderHeader(0),
  fFillEventwTrks(0x0), 
  fDebug(0),
  fVEvent(0x0),
  fMCEvent(0x0),
  fOpt(0)
{
  // Default constructor
}

//-----------------------------------------------------------------------
AliJetReader::~AliJetReader()
{
  // Destructor
  if (fCalTrkEvent) {
    fCalTrkEvent->Delete();
    delete fCalTrkEvent;
  }

  if (fFillEventwTrks) {
    delete fFillEventwTrks;
  }

}

//-----------------------------------------------------------------------
void AliJetReader::InitTasks()
{
  // Initialization
  fOpt = GetReaderHeader()->GetDetector();

  TString datatype = fReaderHeader->GetDataType();
  datatype.ToUpper();
  Bool_t kIsKine = kFALSE;
  if((!datatype.Contains("AOD") && datatype.Contains("MC")) ||
     (!datatype.Contains("AOD") && datatype.Contains("MC2")) ){
    kIsKine = kTRUE;
  } 
  Bool_t kIsHighMult = GetReaderHeader()->GetIsHighMult();
  fCalTrkEvent = new AliJetCalTrkEvent(fOpt,kIsKine,kIsHighMult);

  // Initialize jet analysis
  CreateTasks();

}

//-----------------------------------------------------------------------
Bool_t AliJetReader::ProcessEvent()
{
  // Process one event
  // Charged only or charged+neutral jets

  Bool_t ok = ExecTasks();

  if(!ok) {return kFALSE;}

  return kTRUE;

}

//-----------------------------------------------------------------------
void AliJetReader::SetInputEvent(const TObject* esd, const TObject* aod, const AliMCEvent* mc)
{
  // set input event pointers
  if( fReaderHeader->GetDataType().Contains("AOD") && aod) {fVEvent = (AliAODEvent*) aod;}
  else if( fReaderHeader->GetDataType().Contains("ESD") && esd) {fVEvent = (AliESDEvent*) esd;}
  else if ( fReaderHeader->GetDataType().Contains("MC") || fReaderHeader->GetDataType().Contains("MC2")) { fMCEvent = (AliMCEvent*) mc;}
  else {printf("No input event ! ");}

}

//-----------------------------------------------------------------------
Bool_t AliJetReader::CreateTasks()
{
  // For reader task initialization

  fDebug = fReaderHeader->GetDebug();

  fFillEvent = new AliJetFillCalTrkEvent();
  if (fOpt>0) {
    // Tracks
    if(fOpt%2==!0 && fOpt!=0){
      fFillEventwTrks = new AliJetFillCalTrkTrack();
      fFillEventwTrks->SetReaderHeader(fReaderHeader);
    }
  }
  else { // MC/Kine cases
    fFillEventwTrks = new AliJetFillCalTrkTrackMC();
    fFillEventwTrks->SetReaderHeader(fReaderHeader);
  }

  if(fDebug>1) cout << "Tasks instantiated at that stage ! " << endl;

  return kTRUE;

}

//-----------------------------------------------------------------------
Bool_t AliJetReader::ExecTasks()
{
  // Main function
  // Fill the reader part
  
  fDebug = fReaderHeader->GetDebug();

  if(!fVEvent && !fMCEvent) {
    return kFALSE;
  }

  // TPC only or Digits+TPC or Clusters+TPC
  if(fOpt%2==!0 || fOpt==0){
    fFillEventwTrks->SetVEvent(fVEvent);
    fFillEventwTrks->SetMCEvent(fMCEvent);
    fFillEventwTrks->SetCalTrkEvent(fCalTrkEvent);    
    fFillEventwTrks->Exec("tpc");
  }

  return kTRUE;

}

//-----------------------------------------------------------------------
void AliJetReader::WriteRHeaderToFile() const
{
  // write reader header
  AliJetReaderHeader *rh = GetReaderHeader();
  rh->Write();

}

//-----------------------------------------------------------------------
void AliJetReader::WriteReaderHeader()
{
  // Write the Headers
  TFile* f = new TFile("jets_local.root", "recreate");
  WriteRHeaderToFile();
  f->Close();

}

 AliJetReader.cxx:1
 AliJetReader.cxx:2
 AliJetReader.cxx:3
 AliJetReader.cxx:4
 AliJetReader.cxx:5
 AliJetReader.cxx:6
 AliJetReader.cxx:7
 AliJetReader.cxx:8
 AliJetReader.cxx:9
 AliJetReader.cxx:10
 AliJetReader.cxx:11
 AliJetReader.cxx:12
 AliJetReader.cxx:13
 AliJetReader.cxx:14
 AliJetReader.cxx:15
 AliJetReader.cxx:16
 AliJetReader.cxx:17
 AliJetReader.cxx:18
 AliJetReader.cxx:19
 AliJetReader.cxx:20
 AliJetReader.cxx:21
 AliJetReader.cxx:22
 AliJetReader.cxx:23
 AliJetReader.cxx:24
 AliJetReader.cxx:25
 AliJetReader.cxx:26
 AliJetReader.cxx:27
 AliJetReader.cxx:28
 AliJetReader.cxx:29
 AliJetReader.cxx:30
 AliJetReader.cxx:31
 AliJetReader.cxx:32
 AliJetReader.cxx:33
 AliJetReader.cxx:34
 AliJetReader.cxx:35
 AliJetReader.cxx:36
 AliJetReader.cxx:37
 AliJetReader.cxx:38
 AliJetReader.cxx:39
 AliJetReader.cxx:40
 AliJetReader.cxx:41
 AliJetReader.cxx:42
 AliJetReader.cxx:43
 AliJetReader.cxx:44
 AliJetReader.cxx:45
 AliJetReader.cxx:46
 AliJetReader.cxx:47
 AliJetReader.cxx:48
 AliJetReader.cxx:49
 AliJetReader.cxx:50
 AliJetReader.cxx:51
 AliJetReader.cxx:52
 AliJetReader.cxx:53
 AliJetReader.cxx:54
 AliJetReader.cxx:55
 AliJetReader.cxx:56
 AliJetReader.cxx:57
 AliJetReader.cxx:58
 AliJetReader.cxx:59
 AliJetReader.cxx:60
 AliJetReader.cxx:61
 AliJetReader.cxx:62
 AliJetReader.cxx:63
 AliJetReader.cxx:64
 AliJetReader.cxx:65
 AliJetReader.cxx:66
 AliJetReader.cxx:67
 AliJetReader.cxx:68
 AliJetReader.cxx:69
 AliJetReader.cxx:70
 AliJetReader.cxx:71
 AliJetReader.cxx:72
 AliJetReader.cxx:73
 AliJetReader.cxx:74
 AliJetReader.cxx:75
 AliJetReader.cxx:76
 AliJetReader.cxx:77
 AliJetReader.cxx:78
 AliJetReader.cxx:79
 AliJetReader.cxx:80
 AliJetReader.cxx:81
 AliJetReader.cxx:82
 AliJetReader.cxx:83
 AliJetReader.cxx:84
 AliJetReader.cxx:85
 AliJetReader.cxx:86
 AliJetReader.cxx:87
 AliJetReader.cxx:88
 AliJetReader.cxx:89
 AliJetReader.cxx:90
 AliJetReader.cxx:91
 AliJetReader.cxx:92
 AliJetReader.cxx:93
 AliJetReader.cxx:94
 AliJetReader.cxx:95
 AliJetReader.cxx:96
 AliJetReader.cxx:97
 AliJetReader.cxx:98
 AliJetReader.cxx:99
 AliJetReader.cxx:100
 AliJetReader.cxx:101
 AliJetReader.cxx:102
 AliJetReader.cxx:103
 AliJetReader.cxx:104
 AliJetReader.cxx:105
 AliJetReader.cxx:106
 AliJetReader.cxx:107
 AliJetReader.cxx:108
 AliJetReader.cxx:109
 AliJetReader.cxx:110
 AliJetReader.cxx:111
 AliJetReader.cxx:112
 AliJetReader.cxx:113
 AliJetReader.cxx:114
 AliJetReader.cxx:115
 AliJetReader.cxx:116
 AliJetReader.cxx:117
 AliJetReader.cxx:118
 AliJetReader.cxx:119
 AliJetReader.cxx:120
 AliJetReader.cxx:121
 AliJetReader.cxx:122
 AliJetReader.cxx:123
 AliJetReader.cxx:124
 AliJetReader.cxx:125
 AliJetReader.cxx:126
 AliJetReader.cxx:127
 AliJetReader.cxx:128
 AliJetReader.cxx:129
 AliJetReader.cxx:130
 AliJetReader.cxx:131
 AliJetReader.cxx:132
 AliJetReader.cxx:133
 AliJetReader.cxx:134
 AliJetReader.cxx:135
 AliJetReader.cxx:136
 AliJetReader.cxx:137
 AliJetReader.cxx:138
 AliJetReader.cxx:139
 AliJetReader.cxx:140
 AliJetReader.cxx:141
 AliJetReader.cxx:142
 AliJetReader.cxx:143
 AliJetReader.cxx:144
 AliJetReader.cxx:145
 AliJetReader.cxx:146
 AliJetReader.cxx:147
 AliJetReader.cxx:148
 AliJetReader.cxx:149
 AliJetReader.cxx:150
 AliJetReader.cxx:151
 AliJetReader.cxx:152
 AliJetReader.cxx:153
 AliJetReader.cxx:154
 AliJetReader.cxx:155
 AliJetReader.cxx:156
 AliJetReader.cxx:157
 AliJetReader.cxx:158
 AliJetReader.cxx:159
 AliJetReader.cxx:160
 AliJetReader.cxx:161
 AliJetReader.cxx:162
 AliJetReader.cxx:163
 AliJetReader.cxx:164
 AliJetReader.cxx:165
 AliJetReader.cxx:166
 AliJetReader.cxx:167
 AliJetReader.cxx:168
 AliJetReader.cxx:169
 AliJetReader.cxx:170
 AliJetReader.cxx:171
 AliJetReader.cxx:172
 AliJetReader.cxx:173
 AliJetReader.cxx:174
 AliJetReader.cxx:175
 AliJetReader.cxx:176
 AliJetReader.cxx:177
 AliJetReader.cxx:178
 AliJetReader.cxx:179
 AliJetReader.cxx:180
 AliJetReader.cxx:181
 AliJetReader.cxx:182
 AliJetReader.cxx:183
 AliJetReader.cxx:184
 AliJetReader.cxx:185
 AliJetReader.cxx:186
 AliJetReader.cxx:187
 AliJetReader.cxx:188
 AliJetReader.cxx:189
 AliJetReader.cxx:190
 AliJetReader.cxx:191
 AliJetReader.cxx:192
 AliJetReader.cxx:193
 AliJetReader.cxx:194
 AliJetReader.cxx:195
 AliJetReader.cxx:196
 AliJetReader.cxx:197
 AliJetReader.cxx:198
 AliJetReader.cxx:199
 AliJetReader.cxx:200
 AliJetReader.cxx:201