* All Cone finder in compile flow, not yet added to cmake
authorjthaeder <jthaeder@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 1 Jun 2009 17:07:47 +0000 (17:07 +0000)
committerjthaeder <jthaeder@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 1 Jun 2009 17:07:47 +0000 (17:07 +0000)
* Fastjet not yet checked,...  (I haven't found out how to make it work again, yet)
* run.sh macro works after, fix of bug https://savannah.cern.ch/bugs/?51088

16 files changed:
HLT/BASE/util/AliHLTJets.cxx
HLT/JET/AliHLTJETFastJetComponent.cxx
HLT/JET/AliHLTJETReader.cxx
HLT/JET/AliHLTJETReader.h
HLT/JET/AliHLTJETReaderHeader.cxx
HLT/JET/AliHLTJETReaderHeader.h
HLT/JET/AliHLTJETTrackCuts.cxx
HLT/JET/AliHLTJETTrackCuts.h
HLT/JET/cone/AliHLTJETConeFinder.cxx
HLT/JET/cone/AliHLTJETConeFinder.h
HLT/JET/cone/AliHLTJETConeJetComponent.cxx
HLT/JET/cone/AliHLTJETConeJetComponent.h
HLT/JET/macros/HLTJetReconstruction.C
HLT/JET/macros/readJets.C
HLT/JET/macros/run.sh
HLT/libAliHLTJET.pkg

index fb1ae40..ebf8d8e 100644 (file)
@@ -164,3 +164,19 @@ void AliHLTJets::AddJet( AliAODJet* jet ) {
 
   return;
 }
+
+/*
+ * ---------------------------------------------------------------------------------
+ *                                     Helper
+ * ---------------------------------------------------------------------------------
+ */
+
+/** Sort Jets with decreasing Et */
+void AliHLTJets::Sort() {
+  // see header file for class documentation
+
+  fAODJets->Sort();
+  ResetEvent();
+
+  return;
+}
index 656ea2c..45ee2a0 100644 (file)
@@ -120,6 +120,8 @@ AliHLTComponent* AliHLTJETFastJetComponent::Spawn() {
 Int_t AliHLTJETFastJetComponent::DoInit( Int_t /*argc*/, const Char_t** /*argv*/ ) {
   // see header file for class documentation
 
+#if 0
+
   if ( fJetFinder || fJetHeader || fJetReader || fJetReader || fJetTrackCuts)
     return -EINPROGRESS;
 
@@ -173,7 +175,7 @@ Int_t AliHLTJETFastJetComponent::DoInit( Int_t /*argc*/, const Char_t** /*argv*/
   // -- Initialize Jet Finder
   // -------------------------------------------
   fJetFinder->Init();
-
+#endif 
   return 0;
 }
 
@@ -212,7 +214,7 @@ Int_t AliHLTJETFastJetComponent::DoEvent( const AliHLTComponentEventData& /*evtD
   // see header file for class documentation
 
   Int_t iResult = 0;
-
+#if 0
   const TObject* iter = NULL;
 
   // -- Start-Of-Run
@@ -262,6 +264,6 @@ Int_t AliHLTJETFastJetComponent::DoEvent( const AliHLTComponentEventData& /*evtD
   
   // -- PushBack
   // -------------
-
-  return 0;
+#endif
+  return iResult;
 }
index 51494b5..bfe738b 100644 (file)
@@ -19,7 +19,7 @@
 /** @file   AliHLTJETReader.cxx
     @author Jochen Thaeder
     @date   
-    @brief   Reader for jet finder
+    @brief  Reader for jet finder
 */
 
 // see header file for class documentation
 using namespace std;
 #endif
 
-#include "AliHLTJETReader.h"
-
-#include "AliHLTJETTrackCuts.h"
-
 #include "TLorentzVector.h"
 #include "TParticle.h"
 #include "TParticlePDG.h"
 
+#include "AliHLTJETReader.h"
+
+#include "AliHLTJETConeJetCandidate.h"
+
 /** ROOT macro for the implementation of ROOT specific class methods */
 ClassImp(AliHLTJETReader)
 
@@ -55,7 +55,15 @@ AliHLTJETReader::AliHLTJETReader()
   AliJetReader(),
   fESD(NULL), 
   fMC(NULL),
-  fAOD(NULL) {
+  fAOD(NULL),
+#ifdef HAVE_FASTJET
+  fMomentumVector( new vector<fastjet::PseudoJet> ),
+#endif
+  fGrid(NULL),
+  fNJetCandidates(0),
+  fJetCandidates(NULL),
+  fSeedCuts(NULL),
+  fTrackCuts(NULL) {
   // see header file for class documentation
   // or
   // refer to README to build package
@@ -68,98 +76,348 @@ AliHLTJETReader::AliHLTJETReader()
 AliHLTJETReader::~AliHLTJETReader() {
   // see header file for class documentation
 
+#ifdef HAVE_FASTJET
+  if ( fMomentumVector )
+    delete fMomentumVector;
+  fMomentumVector = NULL;
+#endif
+
+  if ( fGrid )
+    delete fGrid;
+  fGrid = NULL;
+
+  if ( fJetCandidates ) {
+    fJetCandidates->Clear();
+    delete fJetCandidates;
+  }
+  fJetCandidates = NULL;
+
+}
+
+// #################################################################################
+Int_t AliHLTJETReader::Initialize() {
+  // see header file for class documentation
+
+  Int_t iResult = 0;
+  AliHLTJETReaderHeader* readerHeader = NULL;
+
+  HLTInfo(" -= AliHLTJETReader =- " );
+
+  // -- Initialize reader header
+  // -----------------------------
+  if ( fReaderHeader ) {
+    readerHeader = GetReaderHeader();
+
+    iResult = readerHeader->Initialize();
+    if ( iResult )
+      HLTError("Error initializing HLT jet reader header");
+  }
+  else {
+    HLTError("Reader Header not present");
+    iResult = -EINPROGRESS;
+  }
+  
+  // -- Initialize grid
+  // --------------------
+  if ( ! iResult ) {
+   
+    if ( fGrid )
+      delete fGrid;
+
+    if ( ! (fGrid = new AliHLTJETConeGrid()) ) {
+      HLTError("Error instanciating grid.");
+      iResult = -EINPROGRESS;
+    }
+  }
+  
+  if ( ! iResult ) {
+      fGrid->SetEtaRange(   readerHeader->GetFiducialEtaMin(),
+                           readerHeader->GetFiducialEtaMax(),
+                           readerHeader->GetGridEtaRange() );
+
+      fGrid->SetPhiRange(   readerHeader->GetFiducialPhiMin(),
+                           readerHeader->GetFiducialPhiMax(),
+                           readerHeader->GetGridPhiRange() );
+      
+      fGrid->SetBinning(    readerHeader->GetGridEtaBinning(),
+                           readerHeader->GetGridEtaBinning() );
+
+      fGrid->SetConeRadius( readerHeader->GetConeRadius() );
+
+      iResult = fGrid->Initialize();
+  }
+  // -- Initialize jet candidates
+  // ------------------------------
+  if ( ! iResult ) {
+    fJetCandidates = new TClonesArray("AliHLTJETConeJetCandidate", 30);
+    if ( ! fJetCandidates) {
+      HLTError("Error instanciating jet candidates.");
+      iResult = -EINPROGRESS;
+    }
+  }
+  // -- Initialize cuts
+  // --------------------
+  // -- Seed cuts
+  if ( ! iResult ) {
+    fSeedCuts = readerHeader->GetSeedCuts();
+    if ( ! fSeedCuts ) {
+      HLTError("Error getting ptr to seed cuts.");
+      iResult = -EINPROGRESS;
+    }
+    else {
+      HLTInfo(" -= SeedCuts =- " );
+    }
+  }
+
+  // -- Track cuts
+  if ( ! iResult ) {
+    fTrackCuts = readerHeader->GetTrackCuts();
+    if ( ! fTrackCuts ) {
+      HLTError("Error getting ptr to track cuts.");
+      iResult = -EINPROGRESS;
+    }
+  }
+
+  // -- Final check
+  // ----------------
+  if ( iResult )
+    HLTError("Error initializing HLT jet reader");
+  return iResult;
+}
+
+//#################################################################################
+void AliHLTJETReader::ResetEvent() {
+  // see header file for class documentation
+
+  // -- clear grid
+  fGrid->Reset();
+
+  // -- clear jet candidates
+  fJetCandidates->Clear();
+
+  fNJetCandidates = 0;
+
+  return;  
 }
 
 /*
  * ---------------------------------------------------------------------------------
- *                               Reader functionality
+ *                            Fastjet Reader functionality
  * ---------------------------------------------------------------------------------
  */
-
+#ifdef HAVE_FASTJET
 // #################################################################################
-Bool_t AliHLTJETReader::FillMomentumArray() {
+Bool_t AliHLTJETReader::FillMomentumArrayFast() {
   // see header file for class documentation
 
   Bool_t bResult = kFALSE;
 
   if ( fESD )
-    bResult = FillMomentumArrayESD();
+    bResult = FillMomentumArrayFastESD();
   else if ( fMC )
-    bResult = FillMomentumArrayMC();
+    bResult = FillMomentumArrayFastMC();
   else if ( fAOD )
-    bResult = FillMomentumArrayAOD();
+    bResult = FillMomentumArrayFastAOD();
   
   return bResult;
 }
 
 // #################################################################################
-Bool_t AliHLTJETReader::FillMomentumArrayMC() {
+Bool_t AliHLTJETReader::FillMomentumArrayFastMC() {
   // see header file for class documentation
 
   if ( ! fMC ) {
-    HLTError( "No MC Event!" );
+    HLTError( "No MC Event present!" );
     return kFALSE;
   }
 
+  // -- Clear input vector
+  if ( fMomentumVector )
+    fMomentumVector->clear();
+      
   Int_t nTracks = 0;
 
-  // -- Clear Array
-  ClearArray(); 
-
-  // -- Get cuts
-  AliHLTJETTrackCuts *trackCuts = reinterpret_cast<AliHLTJETTrackCuts*>(GetReaderHeader()->GetAnalysisCuts()) ;
-                                               
-  //---------------------------------------------------------------------------
-  //  XXX fAliHeader = fMCEvent->Header();
-  //---------------------------------------------------------------------------
-
-  TLorentzVector p4;
-
   TParticle* particle = NULL;
-  
+
   // -- Loop over particles
   // ------------------------
   while ( (particle = fMC->NextParticle() ) ) {
-
+    
     // -- Apply cuts 
-    if ( ! trackCuts->IsSelected(particle) )
+    if ( ! fTrackCuts->IsSelected(particle) )
       continue;
+    
+    // -- Create PseudoJet object      
+    fastjet::PseudoJet part( particle->Px(), particle->Py(), 
+                            particle->Pz(), particle->Energy() ); 
+    
+    // -- label the particle into Fastjet algortihm
+    part.set_user_index( fMC->GetIndex() ); 
+
+    // -- Add to input_particles vector  
+    fMomentumVector->push_back(part);  
 
-    // -- Fill vector
-    p4 = TLorentzVector( particle->Px(), particle->Py(), particle->Pz(), particle->Energy() );
-        
-    // -- new TClonesArray entry
-    new ( (*fMomentumArray)[nTracks] ) TLorentzVector(p4);
-  
     nTracks++;    
     
   } // while ( (particle = fMC->NextParticle() ) ) {
-
+  
   HLTInfo(" Number of selected tracks %d \n", nTracks);
 
   return kTRUE;
 }
 
 // #################################################################################
-Bool_t AliHLTJETReader::FillMomentumArrayESD() {
+Bool_t AliHLTJETReader::FillMomentumArrayFastESD() {
   // see header file for class documentation
 
   return kTRUE;
 }
 
 // #################################################################################
-Bool_t AliHLTJETReader::FillMomentumArrayAOD() {
+Bool_t AliHLTJETReader::FillMomentumArrayFastAOD() {
   // see header file for class documentation
 
   return kFALSE;
 }
+#endif
 
 /*
  * ---------------------------------------------------------------------------------
- *                                     Setter
+ *                               Grid functionality
  * ---------------------------------------------------------------------------------
  */
 
+// #################################################################################
+Bool_t AliHLTJETReader::FillGrid() {
+  // see header file for class documentation
+
+  Bool_t bResult = kFALSE;
+
+  if ( fESD )
+    bResult = FillGridESD();
+  else if ( fMC )
+    bResult = FillGridMC();
+  else if ( fAOD )
+    bResult = FillGridAOD();
+  
+  return bResult;
+}
+
+// #################################################################################
+Bool_t AliHLTJETReader::FillGridMC() {
+  // see header file for class documentation
+
+  if ( ! fMC ) {
+    HLTError( "No MC Event present!" );
+    return kFALSE;
+  }
+
+  AliHLTJETReaderHeader* readerHeader = GetReaderHeader();
+
+  Int_t nTracks = 0;
+  TParticle* particle = NULL;
+
+  // -- Loop over particles
+  // ------------------------
+  while ( ( particle = fMC->NextParticle() ) ) {
+    
+    // -- Apply track cuts 
+    if ( ! fTrackCuts->IsSelected(particle) )
+      continue;
+
+    const Float_t aEtaPhi[]  = { particle->Eta(), particle->Phi(), particle->Pt() }; 
+          Int_t   aGridIdx[] = { -1, -1, -1, -1, -1 };
+
+    fGrid->FillTrack(particle, aEtaPhi, aGridIdx);
+
+    nTracks++;    
+
+    // -- Apply seed cuts 
+    if ( ! fSeedCuts->IsSelected(particle) )
+      continue;  
+
+    // -- Add Seed
+    AddSeed(aEtaPhi, const_cast<const Int_t*> (aGridIdx),
+           readerHeader->GetConeRadius());
+  
+  } // while ( (particle = fMC->NextParticle() ) ) {
+  
+  HLTDebug(" Number of selected tracks %d", nTracks);
+  HLTDebug(" Number of seeds %d", fNJetCandidates);
+
+  return kTRUE;
+}
+
+// #################################################################################
+Bool_t AliHLTJETReader::FillGridESD() {
+  // see header file for class documentation
+
+  Bool_t bResult = kTRUE;
+
+  if ( ! fESD ) {
+    HLTError( "No ESD Event present!" );
+    return kFALSE;
+  }
+
+  AliHLTJETReaderHeader* readerHeader = GetReaderHeader();
+
+  Int_t nTracks = 0;
+
+  // -- Loop over particles
+  // ------------------------
+  for ( Int_t iter = 0; iter < fESD->GetNumberOfTracks() && !bResult; iter++ ) {
+
+    AliESDtrack* esdTrack = fESD->GetTrack(iter);
+    if ( ! esdTrack ) {
+      HLTError("Could not read ESD track %d from %d\n", iter, fESD->GetNumberOfTracks() );
+      bResult = kFALSE;
+      continue;
+    }
+
+    // -- Apply track cuts 
+    if ( ! fTrackCuts->IsSelected(esdTrack) )
+      continue;
+
+    const Float_t aEtaPhi[]  = { esdTrack->Eta(), esdTrack->Phi(), esdTrack->Pt() }; 
+          Int_t   aGridIdx[] = { -1, -1, -1, -1, -1 };
+
+    // -- Fill grid
+         fGrid->FillTrack(esdTrack, aEtaPhi, aGridIdx);
+
+    nTracks++;    
+
+    // -- Apply seed cuts 
+    if ( ! fSeedCuts->IsSelected(esdTrack) )
+      continue;
+
+    // -- Add Seed
+    AddSeed(aEtaPhi, const_cast<const Int_t*> (aGridIdx),
+           readerHeader->GetConeRadius());
+  
+  } // for ( Int_t iter = 0; iter < fESD->GetNumberOfTracks() && !iResult; iter++ ) {
+  
+  HLTDebug(" Number of selected tracks %d", nTracks);
+  HLTDebug(" Number of seeds %d", fNJetCandidates);
+
+  return bResult;
+}
+
+// #################################################################################
+Bool_t AliHLTJETReader::FillGridAOD() {
+  // see header file for class documentation
+
+  return kFALSE;
+}
+
+/*
+ * ---------------------------------------------------------------------------------
+ *                                     Setter
+ * ---------------------------------------------------------------------------------
+ */
 
 // #################################################################################
 void AliHLTJETReader::SetInputEvent(TObject* esd, TObject* aod, TObject* mc) {
@@ -174,3 +432,30 @@ void AliHLTJETReader::SetInputEvent(TObject* esd, TObject* aod, TObject* mc) {
   
   return;
 }
+
+/*
+ * ---------------------------------------------------------------------------------
+ *                                     Seeds
+ * ---------------------------------------------------------------------------------
+ */
+
+//#################################################################################
+void AliHLTJETReader::AddSeed( const Float_t* aEtaPhi, const Int_t* aGridIdx, 
+                              const Float_t coneRadius ) {
+  // see header file for class documentation
+
+  Bool_t useWholeCell = kTRUE ; // XXXXXXXXXXXXXXXXx get reader header finder type balhh
+  useWholeCell = kFALSE ;
+  // -- Add track / particle
+
+  new( (*fJetCandidates) [fNJetCandidates] ) AliHLTJETConeJetCandidate( aEtaPhi, 
+                                                                       aGridIdx,
+                                                                       coneRadius,
+                                                                       useWholeCell );
+  fNJetCandidates++;
+
+  HLTDebug("Added Seed Pt=%f, Eta=%f, Phi=%f", aEtaPhi[kIdxPt], 
+         aEtaPhi[kIdxEta], aEtaPhi[kIdxPhi] );
+
+  return;
+}
index 32dc39f..690de20 100644 (file)
     @brief  Reader for jet finder
 */
 
-#include "AliHLTLogging.h"
+#ifdef HAVE_FASTJET
+#include "fastjet/PseudoJet.hh"
+#endif
 
 #include "AliJetReader.h"
 #include "AliJetReaderHeader.h"
 
-#include "AliHLTJETReaderHeader.h"
+#include "AliESDEvent.h"
+#include "AliAODEvent.h"
+
 
+#include "AliHLTLogging.h"
 #include "AliHLTMCEvent.h"
 
-#include "AliESDEvent.h"
-#include "AliAODEvent.h"
+#include "AliHLTJETBase.h"
+#include "AliHLTJETTrackCuts.h"
+#include "AliHLTJETReaderHeader.h"
 
+#include "AliHLTJETConeSeedCuts.h"
+#include "AliHLTJETConeGrid.h"
 
 /**
  * @class  AliHLTJETReader
@@ -53,29 +61,75 @@ public:
 
   /*
    * ---------------------------------------------------------------------------------
-   *                               Reader functionality
+   *                                Initialize / Reset
+   * ---------------------------------------------------------------------------------
+   */
+
+
+  void SetTrackCuts( AliHLTJETTrackCuts * cuts) {fTrackCuts = cuts; }
+
+  /** Initialize reader for cone jet finder
+   *  Calls AliHLTJETReaderHeader::Initialize
+   *  @return 0 on success, otherwise <0
+   */
+  Int_t Initialize();
+  /** Reset the event */
+  void ResetEvent();
+
+  /*
+   * ---------------------------------------------------------------------------------
+   *                            Fastjet Reader functionality
    * ---------------------------------------------------------------------------------
    */
 
+#ifdef HAVE_FASTJET
+  /** Fill tracks in fastjet momemtum vector
+   *  @return kTRUE on success, otherwise kFALSE
+   */
+  Bool_t FillMomentumArrayFast();
+
+  /** Fill MC tracks in fastjet momemtum vector
+   *  @return kTRUE on success, otherwise kFALSE
+   */
+  Bool_t FillMomentumArrayFastMC();
+
+  /** Fill ESD tracks in fastjet momemtum vector
+   *  @return kTRUE on success, otherwise kFALSE
+   */
+  Bool_t FillMomentumArrayFastESD();
+
+  /** Fill AOD tracks in fastjet momemtum vector
+   *  @return kTRUE on success, otherwise kFALSE
+   */
+  Bool_t FillMomentumArrayFastAOD();
+#endif
+
+  /*
+   * ---------------------------------------------------------------------------------
+   *                               Grid functionality
+   * ---------------------------------------------------------------------------------
+   */
+  
   /** Fill tracks in momentum array 
    *  @return kTRUE on success, otherwise kFALSE
    */
-  Bool_t FillMomentumArray();
+  Bool_t FillGrid();
 
   /** Fill MC tracks in momentum array 
    *  @return kTRUE on success, otherwise kFALSE
    */
-  Bool_t FillMomentumArrayMC();
+  Bool_t FillGridMC();
 
   /** Fill ESD tracks in momentum array 
    *  @return kTRUE on success, otherwise kFALSE
    */
-  Bool_t FillMomentumArrayESD();
+  Bool_t FillGridESD();
 
   /** Fill AOD tracks in momentum array 
    *  @return kTRUE on success, otherwise kFALSE
    */
-  Bool_t FillMomentumArrayAOD();
+  Bool_t FillGridAOD();
 
   /*
    * ---------------------------------------------------------------------------------
@@ -90,6 +144,9 @@ public:
    */
   void SetInputEvent(TObject* esd, TObject* aod, TObject* mc);
 
+  /** Set number of jet candates = seeds */
+  void SetNJetCandidates( Int_t i ) { fNJetCandidates = i; }
+
   /*
    * ---------------------------------------------------------------------------------
    *                                     Getter
@@ -99,7 +156,39 @@ public:
   /** Get Ptr to AliHLTJETReaderHeader
    *  @return ptr to AliHLTJETReaderHeader
    */
-  AliHLTJETReaderHeader* GetReaderHeader() {return dynamic_cast<AliHLTJETReaderHeader*>(fReaderHeader);}
+  AliHLTJETReaderHeader* GetReaderHeader() { return dynamic_cast<AliHLTJETReaderHeader*>(fReaderHeader);}
+
+#ifdef HAVE_FASTJET
+  /** Get Ptr to input vector of Fastjet
+   *  @return ptr to input vector of Fastjet
+   */
+  vector<fastjet::PseudoJet>* GetMomentumVectorFast() { return fMomentumVector; }
+#endif
+
+  /** Get Ptr to grid of cone finder
+   *  @return ptr to grid of cone finder
+   */
+  AliHLTJETConeGrid* GetGrid() { return fGrid; }
+  
+  /** Get number of jet candates = seeds */
+  Int_t         GetNJetCandidates() { return fNJetCandidates; }
+
+  /** Get ptr to jet candiates = seeds for cone finder */
+  TClonesArray* GetJetCandidates()  { return fJetCandidates; }
+
+  /*
+   * ---------------------------------------------------------------------------------
+   *                                     Seeds
+   * ---------------------------------------------------------------------------------
+   */
+
+  /** Add new seed
+   *  @param aEtaPhi     eta and phi of the seed
+   *  @param aGridIdx    indeces in the grid
+   *  @param coneRadius  coneRadius
+   */
+  void AddSeed( const Float_t* aEtaPhi, const Int_t* aGridIdx, 
+               const Float_t coneRadius );
 
   ///////////////////////////////////////////////////////////////////////////////////
 
@@ -118,13 +207,33 @@ private:
    */
 
   /** ESD event */
-  AliESDEvent*       fESD;                     //! transient
+  AliESDEvent                 *fESD;            //! transient
 
   /** MC event */
-  AliHLTMCEvent*     fMC;                      //! transient
+  AliHLTMCEvent               *fMC;             //! transient
 
   /** AOD event */
-  AliAODEvent*       fAOD;                     //! transient
+  AliAODEvent                 *fAOD;            //! transient
+
+#ifdef HAVE_FASTJET
+  /** Vector of fastjet momemtum entries */
+  vector<fastjet::PseudoJet>  *fMomentumVector; //! transient
+#endif
+
+  /** Grid for cone finder */
+  AliHLTJETConeGrid           *fGrid;           //! transient
+
+  /** Number of jet candates = seeds */
+  Int_t                        fNJetCandidates; // see above
+
+  /** Jet candiates = seeds for cone finder */
+  TClonesArray                *fJetCandidates;  //! transient
+
+  /** Ptr to seed cuts */
+  AliHLTJETConeSeedCuts       *fSeedCuts;       //! transient
+
+  /** Ptr to track cuts */
+  AliHLTJETTrackCuts          *fTrackCuts;      //! transient
 
   ClassDef(AliHLTJETReader, 1)
 
index 41b5318..b3089db 100644 (file)
@@ -33,6 +33,7 @@ using namespace std;
 #endif
 
 #include "AliHLTJETReaderHeader.h"
+#include "AliHLTJETTrackCuts.h"
 
 /** ROOT macro for the implementation of ROOT specific class methods */
 ClassImp(AliHLTJETReaderHeader)
@@ -47,7 +48,13 @@ ClassImp(AliHLTJETReaderHeader)
 AliHLTJETReaderHeader::AliHLTJETReaderHeader()
   : 
   AliJetReaderHeader("AliHLTJETReaderHeader"),
-  fCuts(NULL) {
+  fTrackCuts(NULL),
+  fSeedCuts(NULL),
+  fGridEtaBinning(0.0),
+  fGridPhiBinning(0.0),
+  fGridEtaRange(0.0),
+  fGridPhiRange(0.0),
+  fConeRadius(0.0) {
   // see header file for class documentation
   // or
   // refer to README to build package
@@ -61,3 +68,42 @@ AliHLTJETReaderHeader::~AliHLTJETReaderHeader() {
   // see header file for class documentation
 
 }
+
+/*
+ * ---------------------------------------------------------------------------------
+ *                                   Initialize
+ * ---------------------------------------------------------------------------------
+ */
+
+// #################################################################################
+Int_t AliHLTJETReaderHeader::Initialize() {
+  // see header file for class documentation
+
+  Int_t iResult = 0;
+
+  // -- Set eta and phi range for grid
+  fGridPhiRange = fFiducialPhiMin + 
+    fFiducialPhiMax + ( 2.0 * fConeRadius );
+
+  fGridEtaRange = TMath::Abs( fFiducialEtaMin ) + fFiducialEtaMax;
+
+  HLTInfo(" -= ReaderHeader =- ");
+  HLTInfo(" Cone radius      %f", fConeRadius );
+  HLTInfo(" Grid eta binning %f", fGridEtaBinning );
+  HLTInfo(" Grid phi binning %f", fGridPhiBinning );
+  HLTInfo(" Grid eta range   %f", fGridEtaRange );
+  HLTInfo(" Grid phi range   %f", fGridPhiRange );
+
+  if ( ! fTrackCuts ) {
+    HLTError("No track cuts set in reader header");
+    iResult = -EINPROGRESS;
+  }
+  else {
+    fTrackCuts->SetEtaRange( fFiducialEtaMin, fFiducialEtaMax );
+    fTrackCuts->SetPhiRange( fFiducialPhiMin, fFiducialPhiMax );
+    HLTInfo(" -= TrackCuts =- " );
+  }
+
+  return iResult;
+}
+
index 3375952..4a8c535 100644 (file)
@@ -15,7 +15,8 @@
     @brief  ReaderHeader for jet finder
 */
 
-#include "AliAnalysisCuts.h"
+#include "AliHLTJETTrackCuts.h"
+#include "AliHLTJETConeSeedCuts.h"
 
 #include "AliJetReaderHeader.h"
 #include "AliHLTLogging.h"
@@ -43,6 +44,17 @@ public:
   /** destructor */
   virtual ~AliHLTJETReaderHeader();
 
+  /*
+   * ---------------------------------------------------------------------------------
+   *                                   Initialize
+   * ---------------------------------------------------------------------------------
+   */
+  
+  /** Initialize reader haeder for cone jet finder
+   *  @return 0 on success, otherwise <0
+   */
+  Int_t Initialize();
+
   /*
    * ---------------------------------------------------------------------------------
    *                                     Setter
@@ -50,21 +62,54 @@ public:
    */
   
   /** Set Analysis Cuts
-   *  @param cuts ptr to AnalysisCuts
+   *  @param cuts ptr to AliHLTJETTrackCuts 
    */
-  void SetAnalysisCuts( AliAnalysisCuts* cuts ) { fCuts = cuts; }
+  void SetTrackCuts( AliHLTJETTrackCuts* cuts )  { fTrackCuts = cuts; }
+  /** Get Analysis Cuts
+   *  @param cuts ptr to AliHLTJETConeSeedCuts 
+   */
+  void SetSeedCuts( AliHLTJETConeSeedCuts* cuts ){ fSeedCuts = cuts; }
+
+  /** Set the cone radius */
+  void SetConeRadius( Float_t f ) { fConeRadius = f; }
+
+  /** Set grid binning in eta */
+  void SetGridEtaBinning( Float_t f ) { fGridEtaBinning = f; }
+
+  /** Set grid binning in phi */
+  void SetGridPhiBinning( Float_t f ) { fGridPhiBinning = f; }
 
   /*
    * ---------------------------------------------------------------------------------
    *                                     Getter
    * ---------------------------------------------------------------------------------
    */
-  
+
+  /** Get Analysis Cuts
+   *  @return ptr to AliHLTJETTrackCuts 
+   */
+  AliHLTJETTrackCuts* GetTrackCuts()     { return fTrackCuts; }
   /** Get Analysis Cuts
-   *  @return ptr to AnalysisCuts
+   *  @return ptr to AliHLTJETConeSeedCuts
    */
-   AliAnalysisCuts* GetAnalysisCuts() { return fCuts; }
+  AliHLTJETConeSeedCuts* GetSeedCuts()   { return fSeedCuts; }
+  
+  /** Get grid eta range */
+  Float_t GetGridEtaRange()              { return fGridEtaRange; }
+
+  /** Get grid phi range */
+  Float_t GetGridPhiRange()              { return fGridPhiRange; }
+
+  /** Get grid eta binning */
+  Float_t GetGridEtaBinning()            { return fGridEtaBinning; }
+  
+  /** Get grid phi binning */
+  Float_t GetGridPhiBinning()            { return fGridPhiBinning; }
 
+  /** Get cone radius */
+  Float_t GetConeRadius()                { return fConeRadius; }
 
   ///////////////////////////////////////////////////////////////////////////////////
 
@@ -82,8 +127,34 @@ private:
    * ---------------------------------------------------------------------------------
    */
 
-  /** Minimum pt  */
-  AliAnalysisCuts           *fCuts;                   // see above
+  /** Cuts on track selection */
+  AliHLTJETTrackCuts        *fTrackCuts;            //! transient
+
+  /** Cuts on seed selection */
+  AliHLTJETConeSeedCuts     *fSeedCuts;             //! transient
+
+  // -- Grid members
+
+  /** Grid binning in eta */
+  Float_t                    fGridEtaBinning;       // see above
+
+  /** Grid binning in phi */
+  Float_t                    fGridPhiBinning;       // see above
+
+  // -- Grid binning 
+
+  /** Grid eta range */
+  Float_t                    fGridEtaRange;         // see above
+
+  /** Grid phi range 
+   *  abs(phimin)+phiMax + 2*coneRadius;
+   */
+  Float_t                    fGridPhiRange;         // see above
+
+  // -- cone members
+
+  /** Cone radius */
+  Float_t                    fConeRadius;           // see above
 
   ClassDef(AliHLTJETReaderHeader, 1)
 
index 0c4acbe..fe44fec 100644 (file)
@@ -47,7 +47,12 @@ ClassImp(AliHLTJETTrackCuts)
 AliHLTJETTrackCuts::AliHLTJETTrackCuts(const Char_t* name, const Char_t* title )
   : 
   AliAnalysisCuts(name, title),
-  fPtMin(0.) {
+  fChargedOnly(kFALSE),
+  fPtMin(0.0),
+  fEtaMin(-0.9),
+  fEtaMax(0.9),
+  fPhiMin(0.0),
+  fPhiMax(6.3) {
   // see header file for class documentation
   // or
   // refer to README to build package
@@ -92,31 +97,61 @@ Bool_t AliHLTJETTrackCuts::IsSelected( TObject *obj ) {
 Bool_t AliHLTJETTrackCuts::IsSelected( TParticle *particle ) {
   // see header file for class documentation
 
+  // ----------------------------------
+  //  Applied before in AliHLTMCEvent:
+  //  - Is Physical Primary  
+  //   stack->IsPhysicalPrimary(iter)
+  //  - final state
+  //   particle->GetNDaughters() == 0
+  // ----------------------------------
+
   Bool_t bResult = kTRUE;
 
   Int_t   status  = particle->GetStatusCode();
-  Int_t   pdg     = TMath::Abs( particle->GetPdgCode() );
+  Int_t   pdgCode = TMath::Abs( particle->GetPdgCode() );
   
   // -- Skip non-final state particles (status != 1), neutrinos (12,14,16)
-  if ( (status != 1) || (pdg == 12 || pdg == 14 || pdg == 16) )
+  if ( (status != 1) || (pdgCode == 12 || pdgCode == 14 || pdgCode == 16) )
+    bResult = kFALSE;
+
+  // -- Charged particles only
+  if ( fChargedOnly && !particle->GetPDG()->Charge() )
+    bResult = kFALSE;
+
+  // -- cut on min Pt
+  if ( particle->Pt() < fPtMin )
+    bResult = kFALSE;
+
+  // -- cut on eta acceptance
+  if ( ( particle->Eta() < fEtaMin ) || ( particle->Eta() > fEtaMax ) )
+    bResult = kFALSE;
+
+  // -- cut on phi acceptance
+  if ( ( particle->Phi() < fPhiMin ) || ( particle->Phi() > fPhiMax ) )
     bResult = kFALSE;
-  else
-    HLTInfo("Is selected !");
 
   return bResult;
 }
 
 // #################################################################################
-Bool_t AliHLTJETTrackCuts::IsSelected( AliESDtrack */*esdTrack*/ ) {
+Bool_t AliHLTJETTrackCuts::IsSelected( AliESDtrack *esdTrack ) {
   // see header file for class documentation
 
   Bool_t bResult = kTRUE;
 
+  // -- cut on min Pt
+  if ( esdTrack->Pt() < fPtMin )
+    bResult = kFALSE;
+
+  // -- cut on eta acceptance
+  if ( ( esdTrack->Eta() < fEtaMin ) || ( esdTrack->Eta() > fEtaMax ) )
+    bResult = kFALSE;
+
+  cout << esdTrack->Phi() << endl;
+
+  // -- cut on phi acceptance
+  if ( ( esdTrack->Phi() < fPhiMin ) || ( esdTrack->Phi() > fPhiMax ) )
+    bResult = kFALSE;
+
   return bResult;
 }
-
-/*
- * ---------------------------------------------------------------------------------
- *                                     Setter
- * ---------------------------------------------------------------------------------
- */
index 6f57cff..6ce0493 100644 (file)
@@ -1,6 +1,6 @@
 //-*- Mode: C++ -*-
 
-// $Id:  $
+// $Id: AliHLTJETTrackCuts.h $
 
 #ifndef ALIHLTJETTRACKCUTS_H
 #define ALIHLTJETTRACKCUTS_H
@@ -80,6 +80,17 @@ public:
    * ---------------------------------------------------------------------------------
    */
   
+  /** Set selction of charged particles only */
+  void SetChargedOnly( Bool_t b ) { fChargedOnly = b; }
+
+  /** Set cut on min pt */
+  void SetMinPt( Float_t f )      { fPtMin = f; }
+
+  /** Set cut on eta acceptance */
+  void SetEtaRange( Float_t etaMin, Float_t etaMax ) { fEtaMin = etaMin; fEtaMax = etaMax; }
+
+  /** Set cut on phi acceptance */
+  void SetPhiRange( Float_t phiMin, Float_t phiMax ) { fPhiMin = phiMin; fPhiMax = phiMax; }
 
   ///////////////////////////////////////////////////////////////////////////////////
 
@@ -97,8 +108,23 @@ private:
    * ---------------------------------------------------------------------------------
    */
 
-  /** Minimum pt  */
-  Double_t           fPtMin;                   // see above
+  /** Only charged tracks */
+  Bool_t             fChargedOnly;              // see above
+
+  /** Minimum pt */
+  Float_t            fPtMin;                    // see above
+
+  /** Minimum eta */
+  Float_t            fEtaMin;                   // see above
+
+  /** Maximum eta */
+  Float_t            fEtaMax;                   // see above
+
+  /** Minimum phi */
+  Float_t            fPhiMin;                   // see above
+
+  /** Maximum phi */
+  Float_t            fPhiMax;                   // see above
 
   ClassDef(AliHLTJETTrackCuts, 1)
 
index 6bf9be4..79dcc2b 100644 (file)
@@ -306,8 +306,8 @@ Int_t AliHLTJETConeFinder::FillConeJets() {
       continue;
 
     // -- Add jet as AliAODJet
-    fJets->AddJet(jet);
-
+    fJets->AddJet(jet->GetEta(), jet->GetPhi(), jet->GetPt(), jet->GetEt());
+    
   } // for ( Int_t iter = 0; iter < reader->GetNJetCandidates(); iter++ ) {
   
   HLTDebug( "Added %d jets", fJets->GetNAODJets());
index c46f66d..41ff9d3 100644 (file)
 
 #include "AliJetFinder.h"
 
+#include "AliHLTJets.h"
 #include "AliHLTLogging.h"
-#include "AliHLTJETBase.h"
 
-#include "AliHLTJETJets.h"
+#include "AliHLTJETBase.h"
 #include "AliHLTJETConeGrid.h"
 
 /**
@@ -99,7 +99,7 @@ public:
    */
   
   /** Set ptr to output container */
-  void SetOutputJets( AliHLTJETJets* jets ) { fJets = jets; }
+  void SetOutputJets( AliHLTJets* jets ) { fJets = jets; }
   
   /*
    * ---------------------------------------------------------------------------------
@@ -164,7 +164,7 @@ private:
   /** Grid for cone finder */
   AliHLTJETConeGrid           *fGrid;           //! transient
 
-  AliHLTJETJets               *fJets;           //! transient
+  AliHLTJets                  *fJets;           //! transient
 
   ClassDef(AliHLTJETConeFinder, 1)
 
index 6d78be7..dc03b17 100644 (file)
@@ -20,7 +20,7 @@
 /** @file   AliHLTJETConeJetComponent.cxx
     @author Jochen Thaeder <thaeder@kip.uni-heidelberg.de>
     @date   
-    @brief   Component to run the ConeJet jetfinder
+    @brief  Component to run the ConeJet jetfinder
 */
 
 #if __GNUC__>= 3
@@ -36,6 +36,8 @@ using namespace std;
 #include "TString.h"
 #include "TObjString.h"
 
+#include "AliAODJet.h"
+
 /** ROOT macro for the implementation of ROOT specific class methods */
 ClassImp(AliHLTJETConeJetComponent)
 
@@ -46,13 +48,15 @@ ClassImp(AliHLTJETConeJetComponent)
  */
 
 // #################################################################################
-AliHLTJETConeJetComponent::AliHLTJETConeJetComponent() 
-  :
-  //fJetFinder(NULL),
-  //  fJetHeader(NULL),*/
+AliHLTJETConeJetComponent::AliHLTJETConeJetComponent() :
+  fJetFinder(NULL),
+  fJetHeader(NULL),
+  fSeedCuts(NULL),
   fJetReader(NULL),
   fJetReaderHeader(NULL),
-  fJetTrackCuts(NULL) {
+  fTrackCuts(NULL),
+  fJetCuts(NULL),
+  fJets(NULL) {
   // see header file for class documentation
   // or
   // refer to README to build package
@@ -83,7 +87,6 @@ const Char_t* AliHLTJETConeJetComponent::GetComponentID() {
 void AliHLTJETConeJetComponent::GetInputDataTypes( vector<AliHLTComponentDataType>& list) {
   // see header file for class documentation
   list.clear(); 
-  list.push_back( kAliHLTDataTypeMCObject|kAliHLTDataOriginOffline );
   list.push_back( kAliHLTDataTypeMCObject|kAliHLTDataOriginHLT );
   list.push_back( kAliHLTDataTypeESDObject|kAliHLTDataOriginOffline );
   list.push_back( kAliHLTDataTypeESDObject|kAliHLTDataOriginHLT );
@@ -92,14 +95,14 @@ void AliHLTJETConeJetComponent::GetInputDataTypes( vector<AliHLTComponentDataTyp
 // #################################################################################
 AliHLTComponentDataType AliHLTJETConeJetComponent::GetOutputDataType() {
   // see header file for class documentation
-  return (kAliHLTDataTypeESDObject| kAliHLTDataOriginHLT);
+  return (kAliHLTDataTypeJet|kAliHLTDataOriginHLT);
 }
 
 // #################################################################################
 void AliHLTJETConeJetComponent::GetOutputDataSize( ULong_t& constBase, Double_t& inputMultiplier ) {
   // see header file for class documentation
 
-  constBase = 0;
+  constBase = 1000;
   inputMultiplier = 0.3;
 }
 
@@ -118,66 +121,247 @@ AliHLTComponent* AliHLTJETConeJetComponent::Spawn() {
  */
 
 // #################################################################################
-Int_t AliHLTJETConeJetComponent::DoInit( Int_t /*argc*/, const Char_t** /*argv*/ ) {
+Int_t AliHLTJETConeJetComponent::DoInit( Int_t argc, const Char_t** argv ) {
   // see header file for class documentation
 
-  if ( /*fJetFinder || fJetHeader ||*/ fJetReader || fJetReader || fJetTrackCuts)
+  if ( fJetFinder || fJetHeader || fJetReader || fJetReaderHeader || 
+       fTrackCuts || fSeedCuts || fJetCuts || fJets )
     return -EINPROGRESS;
 
+  // ---------------------------------------------------------------------
+  // -- Defaults
+  // ---------------------------------------------------------------------
+
+  Float_t coneRadius    =  0.4;
+  Float_t trackCutMinPt =  1.0;
+  Float_t seedCutMinPt  =  5.0;
+  Float_t jetCutMinEt   = 15.0;
+
+  // ---------------------------------------------------------------------
+  // -- Get Arguments
+  // ---------------------------------------------------------------------
+
+  TString comment;
+
+  Int_t iResult = 0;
+  Int_t bMissingParam=0;
+  
+  TString argument="";
+
+  // -- Loop over all arguments
+  for ( Int_t iter = 0; iter<argc && iResult>=0; iter++) {
+    argument=argv[iter];
+
+    if (argument.IsNull()) 
+      continue;
 
+    // -- coneRadius
+    if ( !argument.CompareTo("-coneRadius") ) {
+      if ((bMissingParam=(++iter>=argc))) break;
+      
+      TString parameter(argv[iter]);
+      parameter.Remove(TString::kLeading, ' ');
+      
+      if ( parameter.IsFloat() ) {
+       coneRadius = parameter.Atof();
+       comment += argument;
+       comment += " ";
+       comment += parameter;
+       comment += ' ';
+      }
+      else {
+       HLTError("Wrong parameter %s for argument %s.", parameter.Data(), argument.Data());
+       iResult=-EINVAL;
+      }
+    } 
+
+    // -- trackCutMinPt
+    else if ( !argument.CompareTo("-trackCutMinPt") ) {
+      if ((bMissingParam=(++iter>=argc))) break;
+      
+      TString parameter(argv[iter]);
+      parameter.Remove(TString::kLeading, ' ');
+      
+      if ( parameter.IsFloat() ) {
+       trackCutMinPt = parameter.Atof();
+       comment += argument;
+       comment += " ";
+       comment += parameter;
+       comment += ' ';
+      }
+      else {
+       HLTError("Wrong parameter %s for argument %s.", parameter.Data(), argument.Data());
+       iResult=-EINVAL;
+      }
+    } 
+
+    // -- seedCutMinPt
+    else if ( !argument.CompareTo("-seedCutMinPt") ) {
+      if ((bMissingParam=(++iter>=argc))) break;
+      
+      TString parameter(argv[iter]);
+      parameter.Remove(TString::kLeading, ' ');
+      
+      if ( parameter.IsFloat() ) {
+       seedCutMinPt = parameter.Atof();
+       comment += argument;
+       comment += " ";
+       comment += parameter;
+       comment += ' ';
+      }
+      else {
+       HLTError("Wrong parameter %s for argument %s.", parameter.Data(), argument.Data());
+       iResult=-EINVAL;
+      }
+    } 
+
+    // -- jetCutMinEt
+    else if ( !argument.CompareTo("-jetCutMinEt") ) {
+      if ((bMissingParam=(++iter>=argc))) break;
+      
+      TString parameter(argv[iter]);
+      parameter.Remove(TString::kLeading, ' ');
+      
+      if ( parameter.IsFloat() ) {
+       jetCutMinEt = parameter.Atof();
+       comment += argument;
+       comment += " ";
+       comment += parameter;
+       comment += ' ';
+      }
+      else {
+       HLTError("Wrong parameter %s for argument %s.", parameter.Data(), argument.Data());
+       iResult=-EINVAL;
+      }
+    } 
+    
+    // -- Argument not known
+    else {
+      HLTError("Unknown argument %s.", argument.Data());
+      iResult = -EINVAL;
+    }
+  } // for ( Int iter = 0; iter<argc && iResult>=0; iter++) {
+  
+  // -- Check if parameter is missing
+  if ( bMissingParam ) {
+    HLTError("Missing parameter for argument %s.", argument.Data());
+    iResult=-EINVAL;
+  }
+
+  if (iResult)
+    return iResult;
+
+
+  // ---------------------------------------------------------------------
   // -- Jet Track Cuts
-  // -------------------------------------------
-  if ( ! (fJetTrackCuts = new AliHLTJETTrackCuts()) ) {
-    HLTError("Error initializing Track Cuts");
+  // ---------------------------------------------------------------------
+  if ( ! (fTrackCuts = new AliHLTJETTrackCuts()) ) {
+    HLTError("Error instantiating track cuts");
     return -EINPROGRESS;
   }
 
-  // fJetTrackCuts->Set ...
-  
+  fTrackCuts->SetChargedOnly( kTRUE );
+  fTrackCuts->SetMinPt( trackCutMinPt );
+
+  // ---------------------------------------------------------------------
+  // -- Jet Seed Cuts
+  // ---------------------------------------------------------------------
+  if ( ! (fSeedCuts = new AliHLTJETConeSeedCuts()) ) {
+    HLTError("Error instantiating seed cuts");
+    return -EINPROGRESS;
+  }
+
+  // Set pt cut
+  fSeedCuts->SetMinPt( seedCutMinPt );
+
+  // Set Eta min/max and Phi min/max
+  fSeedCuts->SetEtaRange( (-0.9+coneRadius), (0.9-coneRadius) );
+  fSeedCuts->SetPhiRange( 0.0, TMath::TwoPi() );
+
+  // ---------------------------------------------------------------------
+  // -- Jet Jet Cuts
+  // ---------------------------------------------------------------------
+  if ( ! (fJetCuts = new AliHLTJETJetCuts()) ) {
+    HLTError("Error instantiating jet cuts");
+    return -EINPROGRESS;
+  }
+
+  // Set pt cut
+  fJetCuts->SetMinEt( jetCutMinEt );
+
+  // ---------------------------------------------------------------------
   // -- Jet Reader Header
-  // -------------------------------------------
+  // ---------------------------------------------------------------------
   if ( ! (fJetReaderHeader = new AliHLTJETReaderHeader()) ) {
-    HLTError("Error initializing Jet Reader Header");
+    HLTError("Error instantiating jet reader header");
     return -EINPROGRESS;
   }
 
-  fJetReaderHeader->SetAnalysisCuts( dynamic_cast<AliAnalysisCuts*>(fJetTrackCuts) );
+  // Set prt to track cuts
+  fJetReaderHeader->SetTrackCuts( fTrackCuts );
+  fJetReaderHeader->SetSeedCuts( fSeedCuts );
+
+  // Set Eta min/max and Phi min/max
+  fJetReaderHeader->SetFiducialEta( -0.9, 0.9) ;
+  fJetReaderHeader->SetFiducialPhi(  0.0, TMath::TwoPi() ) ;
 
+  // Set grid binning
+  fJetReaderHeader->SetGridEtaBinning( 0.05 );
+  fJetReaderHeader->SetGridPhiBinning( 0.05 );
+  // Set cone radius
+  fJetReaderHeader->SetConeRadius(coneRadius);
+
+  // ---------------------------------------------------------------------
   // -- Jet Reader
-  // -------------------------------------------
+  // ---------------------------------------------------------------------
   if ( ! (fJetReader = new AliHLTJETReader()) ) {
-    HLTError("Error initializing Jet Reader");
+    HLTError("Error instantiating jet reader");
     return -EINPROGRESS;
   }
 
+  // Set reader header
   fJetReader->SetReaderHeader(fJetReaderHeader);
 
-#if 0
-  // -- Jet Header
-  // -------------------------------------------
-  if ( ! (fJetHeader = new AliFastJetHeader()) ) {
-    HLTError("Error initializing Jet Header");
+  // ---------------------------------------------------------------------
+  // -- Jet Container
+  // ---------------------------------------------------------------------
+  if ( ! (fJets = new AliHLTJets()) ) {
+    HLTError("Error instantiating jet container");
     return -EINPROGRESS;
   }
 
-  fJetHeader->SetRparam(0.7); 
+  fJets->SetComment(comment);
 
+  // ---------------------------------------------------------------------
+  // -- Jet Header
+  // ---------------------------------------------------------------------
+  if ( ! (fJetHeader = new AliHLTJETConeHeader()) ) {
+    HLTError("Error instantiating cone jet header");
+    return -EINPROGRESS;
+  }
+  fJetHeader->SetJetCuts(fJetCuts);
+  fJetHeader->SetUseLeading(kTRUE);
+
+  // ---------------------------------------------------------------------
   // -- Jet Finder
-  // -------------------------------------------
-  if ( ! (fJetFinder = new AliFastJetFinder()) ) {
-    HLTError("Error initializing Jet Finder");
+  // ---------------------------------------------------------------------
+  if ( ! (fJetFinder = new AliHLTJETConeFinder()) ) {
+    HLTError("Error instantiating jet finder");
     return -EINPROGRESS;
   }
 
   fJetFinder->SetJetHeader(fJetHeader);
   fJetFinder->SetJetReader(fJetReader);
-  fJetFinder->SetOutputFile("jets.root");
+  fJetFinder->SetOutputJets(fJets);
 
+  // ---------------------------------------------------------------------
   // -- Initialize Jet Finder
-  // -------------------------------------------
-  fJetFinder->Init();
-#endif
-
+  // ---------------------------------------------------------------------
+  if ( (fJetFinder->Initialize()) ) {
+    HLTError("Error initializing cone jet finder");
+    return -EINPROGRESS;
+  }
 
   return 0;
 }
@@ -186,7 +370,6 @@ Int_t AliHLTJETConeJetComponent::DoInit( Int_t /*argc*/, const Char_t** /*argv*/
 Int_t AliHLTJETConeJetComponent::DoDeinit() {
   // see header file for class documentation
 
-  /*
   if ( fJetFinder )
     delete fJetFinder;
   fJetFinder = NULL;
@@ -194,8 +377,7 @@ Int_t AliHLTJETConeJetComponent::DoDeinit() {
   if ( fJetHeader )
     delete fJetHeader;
   fJetHeader = NULL;
-  */
-  /*
+
   if ( fJetReader )
     delete fJetReader;
   fJetReader = NULL;
@@ -204,13 +386,22 @@ Int_t AliHLTJETConeJetComponent::DoDeinit() {
     delete fJetReaderHeader;
   fJetReaderHeader = NULL;
 
-  if ( fJetTrackCuts )
-    delete fJetTrackCuts;
-  fJetTrackCuts = NULL;
+  if ( fTrackCuts )
+    delete fTrackCuts;
+  fTrackCuts = NULL;
 
+  if ( fSeedCuts )
+    delete fSeedCuts;
+  fSeedCuts = NULL;
 
+  if ( fJetCuts )
+    delete fJetCuts;
+  fJetCuts = NULL;
 
-  */
+  if ( fJets )
+    delete fJets;
+  fJets = NULL;
+  
   return 0;
 }
 
@@ -229,52 +420,98 @@ Int_t AliHLTJETConeJetComponent::DoEvent( const AliHLTComponentEventData& /*evtD
     HLTInfo("On-line SOR Event");
   }
 
-  // -- ADD MC Object -- Off-line
-  // ------------------------------
-  for ( iter=GetFirstInputObject(kAliHLTDataTypeMCObject|kAliHLTDataOriginOffline); iter != NULL && !iResult; iter=GetNextInputObject() ) {
-    HLTInfo("Off-line MC Event");
-  }
-
   // -- ADD MC Object -- On-line
   // ------------------------------
-  for ( iter=GetFirstInputObject(kAliHLTDataTypeMCObject|kAliHLTDataOriginHLT); iter != NULL && !iResult; iter=GetNextInputObject() ) {
-    HLTInfo("On-line MC Event");
+  for ( iter=GetFirstInputObject(kAliHLTDataTypeMCObject|kAliHLTDataOriginHLT); 
+       iter != NULL && !iResult; iter=GetNextInputObject() ) {
+
+    // -- Reset 
+    fJetFinder->Reset();
     
     // -- Set input event
     fJetReader->SetInputEvent( NULL, NULL, const_cast<TObject*>(iter) );    
 
-    // -- FillMomentumArrayMC
-    if ( ! (fJetReader->FillMomentumArrayMC()) )
-      iResult = -1;  
-
-    // -- Process Event
-    // fJetFinder->ProcessEvent();
-
+    // -- Fill grid with MC
+    if ( ! fJetReader->FillGridMC() ) {
+      HLTError("Error filling grid.");
+      iResult = -EINPROGRESS;
+    }
+
+    // -- Find jets
+    if ( !iResult) {
+      if ( ! fJetFinder->ProcessConeEvent() ) {
+       HLTError("Error processing cone event.");
+       iResult = -EINPROGRESS;
+      }
+    }
+    
+    // -- PushBack
+    if ( !iResult) {
+      PushBack(fJets, kAliHLTDataTypeJet|kAliHLTDataOriginHLT, GetSpecification());
+    }
   }
 
   // -- ADD ESD Object -- Off-line
   // -------------------------------
-  for ( iter=GetFirstInputObject(kAliHLTDataTypeESDObject|kAliHLTDataOriginOffline); iter != NULL && !iResult; iter=GetNextInputObject() ) {
-    HLTInfo("Off-line ESD Event");
+  for ( iter=GetFirstInputObject(kAliHLTDataTypeESDObject|kAliHLTDataOriginOffline); 
+       iter != NULL && !iResult; iter=GetNextInputObject() ) {
+
+    // -- Reset 
+    fJetFinder->Reset();
+
+    // -- Set input event
+    fJetReader->SetInputEvent( const_cast<TObject*>(iter), NULL, NULL );    
+  
+    // -- Fill grid with ESD
+    if ( ! fJetReader->FillGridESD() ) {
+      HLTError("Error filling grid.");
+      iResult = -1;  
+    }
+
+    // -- Find jets
+    if ( !iResult) {
+      if ( ! fJetFinder->ProcessConeEvent() ) {
+       HLTError("Error processing cone event.");
+       iResult = -EINPROGRESS;
+      }
+    }
+
+    // -- PushBack
+    if ( !iResult) {
+      PushBack(fJets, kAliHLTDataTypeJet|kAliHLTDataOriginHLT, GetSpecification());
+    }
   }
 
   // -- ADD ESD Object -- On-line
   // ------------------------------
-  for ( iter=GetFirstInputObject(kAliHLTDataTypeESDObject|kAliHLTDataOriginHLT); iter != NULL && !iResult; iter=GetNextInputObject() ) {
-    HLTInfo("On-line ESD Event");
-  }
+  for ( iter=GetFirstInputObject(kAliHLTDataTypeESDObject|kAliHLTDataOriginHLT); 
+       iter != NULL && !iResult; iter=GetNextInputObject() ) {
 
-  // -- End-Of-Run
-  // ---------------
-  if ( GetFirstInputObject(kAliHLTDataTypeEOR) && !iResult ) {
-    HLTInfo("On-line EOR Event");
-    
-    // -- Finish Event ?
-    // fJetFinder->FinishRun();
+    // -- Set input event
+    fJetReader->SetInputEvent( const_cast<TObject*>(iter), NULL, NULL );    
+
+    // -- Reset 
+    fJetFinder->Reset();
+
+    // -- Fill grid with ESD
+    if ( ! fJetReader->FillGridESD() ) {
+      HLTError("Error filling grid.");
+      iResult = -1;  
+    }
+
+    // -- Find jets
+    if ( !iResult) {
+      if ( ! fJetFinder->ProcessConeEvent() ) {
+       HLTError("Error processing cone event.");
+       iResult = -EINPROGRESS;
+      }
+    }
+
+    // -- PushBack
+    if ( !iResult) {
+      PushBack(fJets, kAliHLTDataTypeJet|kAliHLTDataOriginHLT, GetSpecification());
+    }
   }
-      
-  // -- PushBack
-  // -------------
-  
-  return 0;
+
+  return iResult;
 }
index 3fc912c..e8e33cc 100644 (file)
 #include "AliHLTJETReaderHeader.h"
 
 #include "AliHLTJETTrackCuts.h"
+#include "AliHLTJETJetCuts.h"
+#include "AliHLTJETConeSeedCuts.h"
+
+#include "AliHLTJETConeFinder.h"
+#include "AliHLTJETConeHeader.h"
 
 /**
  * @class AliHLTJETConeJetComponent
  * Component to run the ConeJet jetfinder
  *
+ * <h2>General properties:</h2>
+ *
+ * Component ID: \b JETConeJetFinder <br>
+ * Library: \b libAliHLTJET.so     <br>
+ * Input Data Types: <br>
+ *  -  kAliHLTDataTypeMCObject|kAliHLTDataOriginHLT --> class AliHLTMCEvent<br>
+ *  -  kAliHLTDataTypeESDObject|kAliHLTDataOriginOffline --> class AliHLTESDEvent <br>
+ *  -  kAliHLTDataTypeESDObject|kAliHLTDataOriginHLT --> class AliHLTESDEvent<br>
+ * Output Data Types: <br>
+ *  - kAliHLTDataTypeJet|kAliHLTDataOriginHLT --> class AliHLTJets<br>
+ *
+ * <h2>Mandatory arguments:</h2>
+ * There are no mandatrory arguments <br>
+ *
+ * <h2>Optional arguments:</h2>
+ * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
+ * \li -coneRadius    <i> Cone radius for cone finder </i> <br>
+ *      - Default : 0.4 <br>
+ *
+ * \li -trackCutMinPt <i> min pt for cut on tracks, in GeV/c </i> <br>
+ *      - Default : 1.0 <br>
+ *
+ * \li -seedCutMinPt  <i> min pt for cut on cone seeds, in GeV/c </i> <br>
+ *      - Default : 5.0 <br>
+ *
+ * \li -jetCutMinPt   <i> min Et for cut on found jets, in GeV/c </i> <br>
+ *      - Default : 15.0 <br>
+ *
  * @ingroup alihlt_jet
+ * @ingroup alihlt_jet_cone
  */
 
 class AliHLTJETConeJetComponent : public AliHLTProcessor {
@@ -125,13 +159,16 @@ private:
    *                             Members - private
    * ---------------------------------------------------------------------------------
    */
-#if 0  
+
   /** Ptr to the jet finder */
-  AliHLTJETConeJetFinder    *fJetFinder;                      //!transient
+  AliHLTJETConeFinder       *fJetFinder;                      //!transient
 
   /** Ptr to the jet finder header */
-  AliHLTJETConeJetHeader    *fJetHeader;                      //!transient
-#endif
+  AliHLTJETConeHeader       *fJetHeader;                      //!transient
+
+  /** Ptr to track cuts */ 
+  AliHLTJETConeSeedCuts     *fSeedCuts;                       //!transient
+
   /** Ptr to jet reader */ 
   AliHLTJETReader           *fJetReader;                      //!transient
   
@@ -139,8 +176,14 @@ private:
   AliHLTJETReaderHeader     *fJetReaderHeader;                //!transient
 
   /** Ptr to track cuts */ 
-  AliHLTJETTrackCuts        *fJetTrackCuts;                   //!transient
+  AliHLTJETTrackCuts        *fTrackCuts;                      //!transient
+
+  /** Ptr to jet cuts */ 
+  AliHLTJETJetCuts          *fJetCuts;                        //!transient
 
+  /** Ptr to jet container holding AliAODJets */
+  AliHLTJets                *fJets;                           //!transient 
+  
   ClassDef(AliHLTJETConeJetComponent, 0)
     
 };
index ca04a40..2274094 100644 (file)
@@ -150,7 +150,7 @@ void HLTJetReconstruction(Int_t nEvents=1, Int_t idx=0, Bool_t generate=kFALSE,
   
   if (!analysisInput.IsNull()) analysisInput+=" ";
   analysisInput += jetId;
-  
+
 #else
   // ------------------------------------------
   // -- FastJetFinder
@@ -181,7 +181,7 @@ void HLTJetReconstruction(Int_t nEvents=1, Int_t idx=0, Bool_t generate=kFALSE,
 
   if (!writerInput.IsNull()) writerInput+=" ";
   writerInput += analysisId;
-  
+
   // ----------------------------//
   // -                         - //
   // --    Sink Components    -- //
index 24e0c7b..6365a36 100644 (file)
@@ -1,7 +1,7 @@
 void readJets( Char_t* fileName = "./analysis/EOR_analyze_100000_kPythia6Jets104_125.root" ) {
 
-  gSystem->Load("libCGAL.so");
-  gSystem->Load("${FASTJET}/lib/libfastjet.so");
+  //  gSystem->Load("libCGAL.so");
+  //  gSystem->Load("${FASTJET}/lib/libfastjet.so");
   
   gSystem->Load("libTree.so");
   gSystem->Load("libPhysics.so");
index e035bab..85cfa65 100755 (executable)
@@ -14,7 +14,7 @@ if [ -n "${ROOTFILES}" ] ; then
 fi
 
 
-aliroot -b -l -q 'HLTJetReconstruction.C(10000,0,kTRUE)' 2>&1 | tee log.log
+aliroot -b -l -q 'HLTJetReconstruction.C(10,0,kTRUE)' 2>&1 | tee log.log
 
 ROOTFILES=`find . -maxdepth 1 -name "*.root" `
 
@@ -22,7 +22,7 @@ if [ -n "${ROOTFILES}" ] ; then
     rm ${ROOTFILES}
 fi
 
-aliroot -l 'readJets.C("./analysis/EOR_analyze_10000_kPythia6Jets104_125.root")'
+aliroot -l 'readJets.C("./analysis/EOR_analyze_10_kPythia6Jets104_125.root")'
 
 
 #valgrind --error-limit=no --leak-check=full --show-reachable=yes aliroot -b -l -q 'HLTJetReconstruction.C(10)' 
index 6a625e9..8a72b9f 100644 (file)
@@ -4,12 +4,15 @@
 CLASS_HDRS                 :=  AliHLTJETAgent.h \
                                AliHLTJETBase.h \
                                AliHLTJETTrackCuts.h \
+                               AliHLTJETJetCuts.h \
                                AliHLTJETReader.h \
                                AliHLTJETReaderHeader.h \
                                cone/AliHLTJETConeGrid.h \
                                cone/AliHLTJETConeEtaPhiCell.h \
                                cone/AliHLTJETConeSeedCuts.h \
                                cone/AliHLTJETConeJetCandidate.h \
+                               cone/AliHLTJETConeHeader.h \
+                               cone/AliHLTJETConeFinder.h \
                                cone/AliHLTJETConeJetComponent.h \
                                analysis/AliHLTJETAnalysisBase.h \
                                analysis/AliHLTJETAnalysisJets.h \
@@ -18,10 +21,6 @@ CLASS_HDRS                       :=  AliHLTJETAgent.h \
 
 CLASS_HDRS_FJ              :=  AliHLTJETFastJetComponent.h     
 
-#                              AliHLTJETJetCuts.h 
-                               #cone/AliHLTJETConeHeader.h
-                               #cone/AliHLTJETConeFinder.h
-
 ###############################################################################
 
 include $(MODDIR)/JET/jet.conf