X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=JETAN%2FAliJetReader.cxx;h=c1684bb94ea8bc512547f48f11a0cfa0f6376bfd;hb=7b00a6836969f3416988ae7e38fcc30334a80e5e;hp=0c90c95b307e792885484c25c4e9475f4a4af0ae;hpb=9e4cc50d36e1a922f8ef44ee621f59de0b64ba7d;p=u%2Fmrichter%2FAliRoot.git diff --git a/JETAN/AliJetReader.cxx b/JETAN/AliJetReader.cxx old mode 100755 new mode 100644 index 0c90c95b307..c1684bb94ea --- a/JETAN/AliJetReader.cxx +++ b/JETAN/AliJetReader.cxx @@ -12,89 +12,190 @@ * 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@IReS.in2p3.fr +// 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 -#include -#include "TTask.h" +#include + //AliRoot +#include "AliVEvent.h" +#include "AliAODEvent.h" +#include "AliESDEvent.h" #include "AliJetReader.h" #include "AliJetReaderHeader.h" -#include "AliESDEvent.h" -#include "AliHeader.h" -#include "AliJetFillUnitArrayTracks.h" -#include "AliJetFillUnitArrayEMCalDigits.h" -#include "AliJetUnitArray.h" -#include "AliJetHadronCorrectionv1.h" +#include "AliAnalysisManager.h" +#include "AliJetFillCalTrkTrack.h" +#include "AliJetFillCalTrkTrackMC.h" +#include "AliJetCalTrk.h" +using std::cout; +using std::endl; ClassImp(AliJetReader) //////////////////////////////////////////////////////////////////////// + + AliJetReader::AliJetReader(): - // Constructor - fChain(0), - fMomentumArray(new TClonesArray("TLorentzVector",2000)), - fArrayMC(0), - fFillUnitArray(new TTask("fillUnitArray","Fill unit array jet finder")), - fESD(0), + fCalTrkEvent(0x0), + fFillEvent(0x0), fReaderHeader(0), - fSignalFlag(0), - fCutFlag(0), - fUnitArray(new TClonesArray("AliJetUnitArray",60000)), - fRefArray(new TRefArray()), - fUnitArrayNoCuts(new TClonesArray("AliJetUnitArray",60000)), - fArrayInitialised(0), - fFillUAFromTracks(new AliJetFillUnitArrayTracks()), - fFillUAFromEMCalDigits(new AliJetFillUnitArrayEMCalDigits()), - fNumCandidate(0), - fNumCandidateCut(0) + fFillEventwTrks(0x0), + fDebug(0), + fVEvent(0x0), + fMCEvent(0x0), + fOpt(0) { // Default constructor - fSignalFlag = TArrayI(); - fCutFlag = TArrayI(); } -//////////////////////////////////////////////////////////////////////// - +//----------------------------------------------------------------------- AliJetReader::~AliJetReader() { // Destructor - if (fMomentumArray) { - fMomentumArray->Delete(); - delete fMomentumArray; + if (fCalTrkEvent) { + fCalTrkEvent->Delete(); + delete fCalTrkEvent; } - - if (fUnitArray) { - fUnitArray->Delete(); - delete fUnitArray; + + 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 - if (fUnitArrayNoCuts) { - fUnitArrayNoCuts->Delete(); - delete fUnitArrayNoCuts; + fDebug = fReaderHeader->GetDebug(); + + if(!fVEvent && !fMCEvent) { + return kFALSE; } - if (fFillUnitArray) { - fFillUnitArray->Delete(); - delete fFillUnitArray; + // 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"); } - delete fArrayMC; - -} + return kTRUE; -//////////////////////////////////////////////////////////////////////// +} + +//----------------------------------------------------------------------- +void AliJetReader::WriteRHeaderToFile() const +{ + // write reader header + AliJetReaderHeader *rh = GetReaderHeader(); + rh->Write(); -void AliJetReader::ClearArray() +} +//----------------------------------------------------------------------- +void AliJetReader::WriteReaderHeader() { - if (fMomentumArray) fMomentumArray->Clear(); - if (fFillUnitArray) fFillUnitArray->Clear(); + // Write the Headers + TFile* f = new TFile("jets_local.root", "recreate"); + WriteRHeaderToFile(); + f->Close(); + } +