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 **************************************************************************/
18 //------------------------------------------------------------------------
19 // Jet reader base class
20 // manages the reading of input for jet algorithms
21 // Authors: jgcn@mda.cinvestav.mx
22 // magali.estienne@subatech.in2p3.fr
23 // alexandre.shabetai@cern.ch
26 // implemented standard geometry (AliEMCALGeometry) (was AliJetDummyGeo implented separately in ESDReader and AODReader
27 // local2master matrices are now get from $ALICE_ROOT/OADB/PWG4/JetReconstruction/EMCALlocal2master.root
28 // you can choose the geometry (EMCAL_COMPLETE, EMCAL_FIRSTYEARv1, etc) via SetEMCALgeo2bLoad('Name_of_Geometry') in the Readerheader
29 // different options for survey(ed) matrice are provided too
31 // OADB path changed from '../OADB/PWG4/JetReconstruction/' to '../OADB/EMCAL/'
32 // marco.bregant@subatech.in2p3.fr
34 // - AliJetESD/AODReader classes removed from JETAN. Reader now ESD/AOD independent. It uses VEvent in the AliJetFill* classes.
35 // - EMCal utilities added for bad cells id, calibration, etc.
36 //------------------------------------------------------------------------
42 #include "AliVEvent.h"
43 #include "AliAODEvent.h"
44 #include "AliESDEvent.h"
45 #include "AliJetReader.h"
46 #include "AliJetReaderHeader.h"
47 #include "AliAnalysisManager.h"
48 #include "AliJetFillCalTrkTrack.h"
49 #include "AliJetFillCalTrkTrackMC.h"
50 #include "AliJetCalTrk.h"
54 ClassImp(AliJetReader)
56 ////////////////////////////////////////////////////////////////////////
59 AliJetReader::AliJetReader():
69 // Default constructor
72 //-----------------------------------------------------------------------
73 AliJetReader::~AliJetReader()
77 fCalTrkEvent->Delete();
81 if (fFillEventwTrks) {
82 delete fFillEventwTrks;
87 //-----------------------------------------------------------------------
88 void AliJetReader::InitTasks()
91 fOpt = GetReaderHeader()->GetDetector();
93 TString datatype = fReaderHeader->GetDataType();
95 Bool_t kIsKine = kFALSE;
96 if((!datatype.Contains("AOD") && datatype.Contains("MC")) ||
97 (!datatype.Contains("AOD") && datatype.Contains("MC2")) ){
100 Bool_t kIsHighMult = GetReaderHeader()->GetIsHighMult();
101 fCalTrkEvent = new AliJetCalTrkEvent(fOpt,kIsKine,kIsHighMult);
103 // Initialize jet analysis
108 //-----------------------------------------------------------------------
109 Bool_t AliJetReader::ProcessEvent()
112 // Charged only or charged+neutral jets
114 Bool_t ok = ExecTasks();
116 if(!ok) {return kFALSE;}
122 //-----------------------------------------------------------------------
123 void AliJetReader::SetInputEvent(const TObject* esd, const TObject* aod, const AliMCEvent* mc)
125 // set input event pointers
126 if( fReaderHeader->GetDataType().Contains("AOD") && aod) {fVEvent = (AliAODEvent*) aod;}
127 else if( fReaderHeader->GetDataType().Contains("ESD") && esd) {fVEvent = (AliESDEvent*) esd;}
128 else if ( fReaderHeader->GetDataType().Contains("MC") || fReaderHeader->GetDataType().Contains("MC2")) { fMCEvent = (AliMCEvent*) mc;}
129 else {printf("No input event ! ");}
133 //-----------------------------------------------------------------------
134 Bool_t AliJetReader::CreateTasks()
136 // For reader task initialization
138 fDebug = fReaderHeader->GetDebug();
140 fFillEvent = new AliJetFillCalTrkEvent();
143 if(fOpt%2==!0 && fOpt!=0){
144 fFillEventwTrks = new AliJetFillCalTrkTrack();
145 fFillEventwTrks->SetReaderHeader(fReaderHeader);
148 else { // MC/Kine cases
149 fFillEventwTrks = new AliJetFillCalTrkTrackMC();
150 fFillEventwTrks->SetReaderHeader(fReaderHeader);
153 if(fDebug>1) cout << "Tasks instantiated at that stage ! " << endl;
159 //-----------------------------------------------------------------------
160 Bool_t AliJetReader::ExecTasks()
163 // Fill the reader part
165 fDebug = fReaderHeader->GetDebug();
167 if(!fVEvent && !fMCEvent) {
171 // TPC only or Digits+TPC or Clusters+TPC
172 if(fOpt%2==!0 || fOpt==0){
173 fFillEventwTrks->SetVEvent(fVEvent);
174 fFillEventwTrks->SetMCEvent(fMCEvent);
175 fFillEventwTrks->SetCalTrkEvent(fCalTrkEvent);
176 fFillEventwTrks->Exec("tpc");
183 //-----------------------------------------------------------------------
184 void AliJetReader::WriteRHeaderToFile() const
186 // write reader header
187 AliJetReaderHeader *rh = GetReaderHeader();
192 //-----------------------------------------------------------------------
193 void AliJetReader::WriteReaderHeader()
196 TFile* f = new TFile("jets_local.root", "recreate");
197 WriteRHeaderToFile();