/[PAMELA software]/PamCut/Collections/SmartBlindCollection/SmartBlindCollection.h
ViewVC logotype

Diff of /PamCut/Collections/SmartBlindCollection/SmartBlindCollection.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.1 by pam-fi, Fri May 29 10:08:46 2009 UTC revision 1.3 by pam-fi, Tue Jun 16 16:44:59 2009 UTC
# Line 10  Line 10 
10  #ifndef SMARTBLINDCOLLECTION_H_  #ifndef SMARTBLINDCOLLECTION_H_
11  #define SMARTBLINDCOLLECTION_H_  #define SMARTBLINDCOLLECTION_H_
12    
13  #include "../BlindCutCollection/BlindCutCollection.h"  #include "../SmartCollection/SmartCollection.h"
 #include "../../CollectionActions/CollectionAction/CollectionAction.h"  
14    
15  /*! @brief A blind collection class designed to use CollectionAction objects.  /*! @brief A blind collection class designed to use CollectionAction objects.
16   *   *
17   * The SmartBlindCollection class is designed to handle CollectionAction objects. These   * The SmartBlindCollection class is designed to handle CollectionAction objects. These
18   * defines the procedures to do when an event is selected or discarded. A SmartBlindCollection   * defines the procedures to do when an event is selected or discarded.
19   * handles a vector of these objects, calling CollectionAction::OnGood() for each of them   * This collection differs from SmartCollection only because it is blind, ie., it will apply
20   * when a good event is selected and CollectionAction::OnBad() when a bad one is rejected.   * all the cuts to each events, even if some of them fail (see #BlindCutCollection to get
21   * It will also call the CollectionAction::Setup() and CollectionAction::Finalize() methods   * more info about blind collections). In current implementation, after a cut has failed, it
22   * at the beginning and at the end of the analysis, respectively.   * will call OnBad for all the actions that come after that cut (also the ones at the end of
23   * This collection differs from SmartCollection only because it-s blind, ie., it will apply   * successive bunches), regardless if, for example, in a certain subsequent bunch all the
24   * all the cuts to each events, even if some of them fail. See #BlindCutCollection to get   * cuts are satisfied.
  * more info about blind collections.  
25   */   */
26  class SmartBlindCollection: public BlindCutCollection {  class SmartBlindCollection: public SmartCollection {
27    
28  public:  public:
29    
# Line 34  public: Line 32  public:
32     * @param collectionName The collection's name.     * @param collectionName The collection's name.
33     */     */
34    SmartBlindCollection(const char* collectionName) :    SmartBlindCollection(const char* collectionName) :
35      BlindCutCollection(collectionName), _actions(0) {      SmartCollection(collectionName){
36    }    }
37    
38    /*! @brief Destructor. */    /*! @brief Destructor. */
39    ~SmartBlindCollection(){    ~SmartBlindCollection() {
40    }    }
41    
42    /*! @brief Adds an action to the SmartCollection */    /*! Applies the cuts and executes the actions.
   virtual void AddAction(CollectionAction& action);  
   
   /*! @brief Returns the iAction-th action.  
43     *     *
44     * @param iAction The index of the desired CollectionAction, defined as the insertion order     * When cuts are applied, a SmartBlindCollection will also execute the actions at the end
45     *        (from 0 to \#actions-1, see AddAction()).     * of the bunches of cuts.
    * @return pointer to the iAction-th action; NULL if the specified action cannot be found or if no actions are present.  
    */  
   CollectionAction *GetAction(unsigned int iAction);  
   
   /*! @brief The pre-analysis task definition.  
46     *     *
47     * This override of the Setup() method calls Setup() for the base class BlindCutCollection, and subsequently for each     * @param event The event to analyze.
    * action contained in the SmartCollection.  
    *  
    * @param events The PamLevel2 pointer to the events that will be analyzed. Used only as parameter for  
    *          CollectionAction::Setup().  
48     */     */
49    void Setup(PamLevel2 *events);    int ApplyCut(PamLevel2 *event);
   
   /*! @brief The post-analysis task definition.  
    *  
    * This override of the Finalize() method calls BlindCutCollection::Finalize() and then the Finalize() method of  
    * each action contained in the SmartCollection.  
    */  
   void Finalize();  
   
   /*! @brief Post-selection tasks.  
    *  
    * This routine is automatically called after a good event has been selected by  
    * ApplyCut(). It will simply call BlindCutCollection::OnGood() and then CollectionAction::OnGood() for each  
    * action in the SmartCollection.  
    * @param event The event which satisfy the cut.  
    */  
   void OnGood(PamLevel2 *event);  
   
   /*! @brief Post-selection tasks.  
    *  
    * This routine is automatically called after a bad event has been rejected by  
    * ApplyCut(). It will simply call BlindCutCollection::OnBad() and then CollectionAction::OnBad() for each  
    * action in the SmartCollection.  
    *  
    * @see OnGood  
    * @param event The event which don't satisfy the cut.  
    * @param selectionResult The return value of the Check() routine.  
    */  
   void OnBad(PamLevel2 *event, int selectionResult);  
   
 private:  
   
   std::vector<CollectionAction*> _actions;  
   
50  };  };
51    
52  #endif /* SMARTBLINDCOLLECTION_H_ */  #endif /* SMARTBLINDCOLLECTION_H_ */

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.3

  ViewVC Help
Powered by ViewVC 1.1.23