Index: examples/ExternalFastJetBasic.cpp
===================================================================
--- examples/ExternalFastJetBasic.cpp	(revision a8782e83488306c997cdbab942f3fb530608e9d8)
+++ examples/ExternalFastJetBasic.cpp	(revision 14ae668c0677ff4a53e9b15567659731714bb1e4)
@@ -19,5 +19,14 @@
 /*
 
-First, you need to set DELPHES_DIR, FASTJET_DIR and ROOT_DIR:
+
+########################################################################
+
+
+This simple example shows how to use Delphes with an external fastjet installation.
+Events are specified via the multidimentionnal array "EVENTS" (for an example reading 
+an hepmc file see ExternalFastJetHepMC.cpp). 
+
+In order to run this example you first, you need to set the paths to your Delphes, FastJet
+and ROOT installations (DELPHES_DIR, FASTJET_DIR and ROOT_DIR):
 
 DELPHES_DIR=<path to Delphes installation>
@@ -25,5 +34,5 @@
 ROOT_DIR=<path to ROOT installation>
 
-Then run the following commands to build ExternalFastJetBasic:
+Then run the following commands to build the executable:
 
 DELPHES_LIB="-L$DELPHES_DIR -lDelphesNoFastJet"
@@ -38,5 +47,13 @@
 LDFLAGS="$FASTJET_LIB $ROOT_LIB $DELPHES_LIB"
 
-g++ $CXXFLAGS $LDFLAGS ExternalFastJetBasic.cpp -o ExternalFastJetBasic
+g++ $CXXFLAGS $LDFLAGS examples/ExternalFastJetBasic.cpp -o examples/ExternalFastJetBasic
+
+Then run from the main Delphes dir:
+
+./examples/ExternalFastJetBasic cards/delphes_card_CMS_NoFastJet.tcl
+
+
+########################################################################
+
 
 */
@@ -95,5 +112,11 @@
 //---------------------------------------------------------------------------
 
+
+// this function converts input event array into Delphes candidates (defined below)
+
 void ConvertInput(Int_t event, DelphesFactory *factory, TObjArray *allParticleOutputArray, TObjArray *stableParticleOutputArray, TObjArray *partonOutputArray);
+
+
+//----------------------------------------------------------------------------------------------------------------------------
 
 int main(int argc, char *argv[])
@@ -149,8 +172,14 @@
     modularDelphes->InitTask();
 
+    
+    // fastjet definition
     ClusterSequence::print_banner();
     definition = new JetDefinition(antikt_algorithm, 0.5);
-
-    inputArray = modularDelphes->ImportArray("Calorimeter/towers");
+    
+    // Define your input candidates to fastjet (by default particle-flow objects).
+    // If you want pure calorimeter towers change "EFlowMerger/eflow" into "Calorimeter/towers":
+     
+    inputArray = modularDelphes->ImportArray("EFlowMerger/eflow");
+      
     inputIterator = inputArray->MakeIterator();
 
@@ -159,9 +188,16 @@
     {
       modularDelphes->Clear();
+      
+      // convert EVENT input array into Delphes internal format
       ConvertInput(event, factory, allParticleOutputArray, stableParticleOutputArray, partonOutputArray);
+      
+      // run Delphes reconstruction
       modularDelphes->ProcessTask();
 
       inputList.clear();
       inputIterator->Reset();
+      
+      
+      // pass delphes candidates to fastjet clustering  
       while((candidate = static_cast<Candidate*>(inputIterator->Next())))
       {
@@ -170,4 +206,6 @@
         inputList.push_back(jet);
       }
+     
+      // run clustering 
       ClusterSequence sequence(inputList, *definition);
       outputList.clear();
@@ -204,4 +242,7 @@
   }
 }
+
+
+// ------------------------------------------------------------------------------------------------------------------------------------
 
 void ConvertInput(Int_t event, DelphesFactory *factory, TObjArray *allParticleOutputArray, TObjArray *stableParticleOutputArray, TObjArray *partonOutputArray)
Index: examples/ExternalFastJetHepMC.cpp
===================================================================
--- examples/ExternalFastJetHepMC.cpp	(revision a8782e83488306c997cdbab942f3fb530608e9d8)
+++ examples/ExternalFastJetHepMC.cpp	(revision 14ae668c0677ff4a53e9b15567659731714bb1e4)
@@ -18,6 +18,12 @@
 
 /*
-
-First, you need to set DELPHES_DIR, FASTJET_DIR and ROOT_DIR:
+########################################################################
+
+
+This simple example shows how to use Delphes with an external fastjet installation.
+Events in hepmc format are read via the DelphesHepMC reader. 
+
+In order to run this example you first, you need to set the paths to your Delphes, FastJet
+and ROOT installations (DELPHES_DIR, FASTJET_DIR and ROOT_DIR):
 
 DELPHES_DIR=<path to Delphes installation>
@@ -25,5 +31,5 @@
 ROOT_DIR=<path to ROOT installation>
 
-Then run the following commands to build ExternalFastJetHepMC:
+Then run the following commands to build the executable:
 
 DELPHES_LIB="-L$DELPHES_DIR -lDelphesNoFastJet"
@@ -38,5 +44,12 @@
 LDFLAGS="$FASTJET_LIB $ROOT_LIB $DELPHES_LIB"
 
-g++ $CXXFLAGS $LDFLAGS ExternalFastJetHepMC.cpp -o ExternalFastJetHepMC
+g++ $CXXFLAGS $LDFLAGS examples/ExternalFastJetHepMC.cpp -o examples/ExternalFastJetHepMC
+
+Then run from the main Delphes dir (you need an event file in hepmc format):
+
+./examples/ExternalFastJetHepMC cards/delphes_card_CMS_NoFastJet.tcl file.hepmc
+
+
+########################################################################
 
 */
@@ -163,10 +176,20 @@
 
     ClusterSequence::print_banner();
+
 //    recomb = new WinnerTakeAllRecombiner();
 //    definition = new JetDefinition(antikt_algorithm, 0.5, recomb, Best);
+  
     definition = new JetDefinition(antikt_algorithm, 0.5);
-
-    inputArray = modularDelphes->ImportArray("Calorimeter/towers");
+    
+    
+    // Define your input candidates to fastjet (by default particle-flow objects).
+    // If you want pure calorimeter towers change "EFlowMerger/eflow" into "Calorimeter/towers":
+     
+    inputArray = modularDelphes->ImportArray("EFlowMerger/eflow");
+
     inputIterator = inputArray->MakeIterator();
+
+
+    // start reading hepmc file
 
     i = 2;
@@ -204,4 +227,5 @@
       }
 
+      
       reader->SetInputFile(inputFile);
 
@@ -214,5 +238,7 @@
         stableParticleOutputArray, partonOutputArray) && !interrupted)
       {
-        if(reader->EventReady())
+	
+	 // loop over events
+	if(reader->EventReady())
         {
           ++eventCounter;
@@ -220,9 +246,14 @@
           if(eventCounter > skipEvents)
           {
-            modularDelphes->ProcessTask();
+            
+	    // run delphes reconstruction
+	    modularDelphes->ProcessTask();
             
             inputList.clear();
             inputIterator->Reset();
-            while((candidate = static_cast<Candidate*>(inputIterator->Next())))
+	
+	
+	    // pass delphes candidates to fastjet clustering  
+             while((candidate = static_cast<Candidate*>(inputIterator->Next())))
             {
               momentum = candidate->Momentum;
@@ -230,14 +261,18 @@
               inputList.push_back(jet);
             }
-            ClusterSequence sequence(inputList, *definition);
+           
+	    // run fastjet clustering 
+	    ClusterSequence sequence(inputList, *definition);
             outputList.clear();
             outputList = sorted_by_pt(sequence.inclusive_jets(0.0));
 
-            // tell the user what was done
+            
+	    // Prints for the first event:
             //  - the description of the algorithm used
             //  - show the inclusive jets as
             //      {index, rapidity, phi, pt}
             //----------------------------------------------------------
-            if(eventCounter == skipEvents + 1)
+           
+	    if(eventCounter == skipEvents + 1)
             {
               cout << "Ran " << definition->description() << endl;
@@ -258,5 +293,5 @@
           reader->Clear();
         }
-      }
+      } // end of event loop
 
       if(inputFile != stdin) fclose(inputFile);
