]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - JETAN/AliJetFinder.cxx
Debug option moved to the base class
[u/mrichter/AliRoot.git] / JETAN / AliJetFinder.cxx
index 85316aa13e4572a6ee30215b60d7e87f16a2e984..bdad6045e357270c5dfbf6fe4f551d44a080aeb7 100644 (file)
  * provided "as is" without express or implied warranty.                  *
  **************************************************************************/
    
+/* $Id$ */
+
 //---------------------------------------------------------------------
 // Jet finder base class
 // manages the search for jets 
 // Authors: jgcn@mda.cinvestav.mx
 //          andreas.morsch@cern.ch
+//          magali.estienne@subatech.in2p3.fr
 //---------------------------------------------------------------------
 
 #include <Riostream.h>
 #include <TFile.h>
+
 #include "AliJetFinder.h"
-#include "AliJet.h"
-#include "AliJetReader.h"
+#include "AliAODJet.h"
+#include "AliAODEvent.h"
+#include "AliJetUnitArray.h"
 #include "AliJetReaderHeader.h"
-#include "AliJetControlPlots.h"
-#include "AliLeading.h"
+#include "AliJetHeader.h"
+#include "AliJetReader.h"
+#include "AliAODJetEventBackground.h"
 
 ClassImp(AliJetFinder)
 
 AliJetFinder::AliJetFinder():
-    fPlotMode(kFALSE),
-    fJets(0),
-    fGenJets(0),
-    fLeading(0),
     fReader(0x0),
-    fPlots(0x0),
-    fOut(0x0)
-    
+    fHeader(0x0),
+    fAODjets(0x0),
+    fNAODjets(0),
+    fAODEvBkg(0),
+    fDebug(0)
 {
+  //
   // Constructor
-  fJets    = new AliJet();
-  fGenJets = new AliJet();
-  fLeading = new AliLeading();
+  //
+  fAODjets = 0;
 }
 
 ////////////////////////////////////////////////////////////////////////
-
 AliJetFinder::~AliJetFinder()
 {
-  // destructor
-  // here reset and delete jets
-  fJets->ClearJets();
-  delete fJets;
-  fGenJets->ClearJets();
-  delete fGenJets;
-  // close file
-  if (fOut) {
-    fOut->Close();
-    fOut->Delete();
-  }
-  delete fOut;
-  // reset and delete control plots
-  if (fPlots) delete fPlots;
+  //
+  // Destructor
+  //
 }
 
-////////////////////////////////////////////////////////////////////////
 
-void AliJetFinder::SetOutputFile(const char *name)
-{
-  // opens output file 
-  fOut = new TFile(name,"recreate");
-}
 
 ////////////////////////////////////////////////////////////////////////
-
-void AliJetFinder::PrintJets()
+void AliJetFinder::WriteRHeaderToFile()
 {
-  // Print jet information
-  cout << " Jets found with jet algorithm:" << endl;
-  fJets->PrintJets();
-  cout << " Jets found by pythia:" << endl;
-  fGenJets->PrintJets();
+  // write reader header
+    AliJetReaderHeader *rh = fReader->GetReaderHeader();
+    rh->Write();
 }
 
-////////////////////////////////////////////////////////////////////////
 
-void AliJetFinder::SetPlotMode(Bool_t b)
+////////////////////////////////////////////////////////////////////////
+void AliJetFinder::ConnectTree(TTree* tree, TObject* data)
 {
-  // Sets the plotting mode
-  fPlotMode=b;
-  if (b && !fPlots) fPlots = new AliJetControlPlots(); 
+    // Connect the input file
+    fReader->ConnectTree(tree, data);
 }
 
 ////////////////////////////////////////////////////////////////////////
-
-void AliJetFinder::WriteJetsToFile(Int_t i)
+void AliJetFinder::WriteHeaders()
 {
-  // Writes the jets to file
-  fOut->cd();
-  char hname[30];
-  sprintf(hname,"TreeJ%d",i);
-  TTree* jetT = new TTree(hname,"AliJet");
-  jetT->Branch("FoundJet",&fJets,1000);
-  jetT->Branch("GenJet",&fGenJets,1000);
-  jetT->Branch("LeadingPart",&fLeading,1000);
-  jetT->Fill();
-  jetT->Write(hname);
-  delete jetT;
+    // Write the Headers
+    TFile* f = new TFile("jets_local.root", "recreate");
+    WriteRHeaderToFile();
+    WriteJHeaderToFile();
+    f->Close();
 }
 
 ////////////////////////////////////////////////////////////////////////
-
-void AliJetFinder::WriteRHeaderToFile()
+Bool_t AliJetFinder::ProcessEvent()
 {
-  // write reader header
-  fOut->cd();
-  AliJetReaderHeader *rh = fReader->GetReaderHeader();
-  rh->Write();
+  //
+  // Process one event
+  // Charged only jets
+  //
+
+  Bool_t ok = fReader->FillMomentumArray();
+  if (!ok) return kFALSE;
+  // Jets
+  FindJets(); // V1
+  Reset();  
+  return kTRUE;
 }
 
 ////////////////////////////////////////////////////////////////////////
-
-
-void AliJetFinder::Run()
+Bool_t AliJetFinder::ProcessEvent2()
 {
-  // Do some initialization
-  Init();
-  // connect files
-  fReader->OpenInputFiles();
-
-  // write headers
-  WriteHeaders();
-  // loop over events
-  Int_t nFirst,nLast;
-  nFirst = fReader->GetReaderHeader()->GetFirstEvent();
-  nLast = fReader->GetReaderHeader()->GetLastEvent();
-  // loop over events
-  for (Int_t i=nFirst;i<nLast;i++) {
-      fReader->FillMomentumArray(i);
-      fLeading->FindLeading(fReader);
-      fReader->GetGenJets(fGenJets);
-      FindJets();
-      if (fOut) WriteJetsToFile(i);
-      if (fPlots) fPlots->FillHistos(fJets);
-      fLeading->Reset();
-      fGenJets->ClearJets();
-      Reset();
-  } 
-  // write out
-  if (fPlots) {
-      fPlots->Normalize();
-      fPlots->PlotHistos();
-  }
-  if (fOut) {
-      fOut->cd();
-      fPlots->Write();
-      fOut->Close();
-  }
-}
+  //
+  // Process one event
+  // Charged only or charged+neutral jets
+  //
+
+  TRefArray* ref = new TRefArray();
+  Bool_t procid = kFALSE;
+  Bool_t ok = fReader->ExecTasks(procid,ref);
+
+  // Delete reference pointer  
+  if (!ok) {delete ref; return kFALSE;}
+  // Jets
+  FindJets();
+  
+  Int_t nEntRef = ref->GetEntries();
+
+  for(Int_t i=0; i<nEntRef; i++)
+    { 
+      // Reset the UnitArray content which were referenced
+      ((AliJetUnitArray*)ref->At(i))->SetUnitTrackID(0);
+      ((AliJetUnitArray*)ref->At(i))->SetUnitEnergy(0.);
+      ((AliJetUnitArray*)ref->At(i))->SetUnitCutFlag(kPtSmaller);
+      ((AliJetUnitArray*)ref->At(i))->SetUnitCutFlag2(kPtSmaller);
+      ((AliJetUnitArray*)ref->At(i))->SetUnitSignalFlag(kBad);
+      ((AliJetUnitArray*)ref->At(i))->SetUnitSignalFlagC(kTRUE,kBad);
+      ((AliJetUnitArray*)ref->At(i))->SetUnitDetectorFlag(kTpc);
+      ((AliJetUnitArray*)ref->At(i))->SetUnitFlag(kOutJet);
+      ((AliJetUnitArray*)ref->At(i))->ClearUnitTrackRef();
+
+      // Reset process ID
+      AliJetUnitArray* uA = (AliJetUnitArray*)ref->At(i);
+      uA->ResetBit(kIsReferenced);
+      uA->SetUniqueID(0);     
+    }
 
+  // Delete the reference pointer
+  ref->Delete();
+  delete ref;
 
-//
-// The following methods have been added to allow for event steering from the outside
-//
+  Reset();
 
-void AliJetFinder::ConnectTree(TTree* tree)
-{
-    // Connect the input file
-    fReader->ConnectTree(tree);
+  return kTRUE;
 }
 
-void AliJetFinder::WriteHeaders()
+
+void AliJetFinder::AddJet(AliAODJet p)
 {
-    // Write the Headers
-    if (fOut) {
-       fOut->cd();
-       WriteRHeaderToFile();
-       WriteJHeaderToFile();
-    }
+// Add new jet to the list
+  new ((*fAODjets)[fNAODjets++]) AliAODJet(p);
 }
 
-
-Bool_t AliJetFinder::ProcessEvent(Long64_t entry)
+void AliJetFinder::ConnectAOD(AliAODEvent* aod)
 {
-//
-// Process one event
-//
-    printf("<<<<< Processing Event %5d >>>>> \n", (Int_t) entry);
-    Bool_t ok = fReader->FillMomentumArray(entry);
-    if (!ok) return kFALSE;
-    fLeading->FindLeading(fReader);
-    FindJets();
-    if (fOut)   WriteJetsToFile(entry);
-    if (fPlots) fPlots->FillHistos(fJets);
-    fLeading->Reset();
-    fGenJets->ClearJets();
-    Reset();  
-    return kTRUE;
+// Connect to the AOD
+    fAODjets = aod->GetJets();
+    fAODEvBkg = (AliAODJetEventBackground*)(aod->FindListObject(AliAODJetEventBackground::StdBranchName()));
 }
 
-void AliJetFinder::FinishRun()
+////////////////////////////////////////////////////////////////////////
+void AliJetFinder::ConnectAODNonStd(AliAODEvent* aod,const char *bname)
 {
-    // Finish a run
-  if (fPlots) {
-      fPlots->Normalize();
-      fPlots->PlotHistos();
-  }
-  if (fOut) {
-      fOut->cd();
-      fPlots->Write();
-      fOut->Close();
-  }   
+
+  fAODjets = dynamic_cast<TClonesArray*>(aod->FindListObject(bname));
+  fAODEvBkg = (AliAODJetEventBackground*)(aod->FindListObject(Form("%s_%s",AliAODJetEventBackground::StdBranchName(),bname)));
+  // how is this is reset? Cleared? -> by the UserExec!!
 }