]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - JETAN/AliJetReader.cxx
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / JETAN / AliJetReader.cxx
old mode 100755 (executable)
new mode 100644 (file)
index 6cc730a..c1684bb
  * 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 <TClonesArray.h>
-#include <TRefArray.h>
-#include "TTask.h"
+#include <TFile.h>
+
 //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) {
-      delete fUnitArray;
+
+  if (fFillEventwTrks) {
+    delete fFillEventwTrks;
   }
-  
-  if (fUnitArrayNoCuts) {
-    fUnitArrayNoCuts->Delete();
-    delete fUnitArrayNoCuts;
+
+}
+
+//-----------------------------------------------------------------------
+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 (fFillUnitArray) {
-    fFillUnitArray->Delete();
-    delete fFillUnitArray;
+  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;
   }
 
-  if (fArrayMC) {
-    fArrayMC->Delete();
-    delete fArrayMC;
+  // 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::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();
+
 }
+