22 #ifndef FairFilteredPrimaryGenerator_H 
   23 #define FairFilteredPrimaryGenerator_H 
   25 #include "FairPrimaryGenerator.h" 
   32 #include "FairRunSim.h" 
   34 #include "FairGenerator.h"               
   38 #include "TObjArray.h"                   
   45 class FairGenericStack;
 
   46 class FairMCEventHeader;
 
   94                         std::cout << 
"Empty fFilterList pointer ! \n";
 
  126                         std::cout << 
"\n\n\n  -WARNING from FairFilteredPrimaryGenerator: maxTries must be a positive number! Check your SetFilterMaxTries call!\n\n\n";
 
  163                         std::cout << 
"Random events were accepted to avoid infinite loops. \n";
 
  164                         std::cout <<  
"Try increasing the max. number of tries or change your filter (maybe the generators do not produce such events as you want).\n\n";
 
  166                 if(outputFile==NULL) outputFile = FairRunSim::Instance()->GetOutputFile();
 
  168                 outputFile->mkdir(
"FairEvtFilter");
 
  169                 outputFile->cd(
"FairEvtFilter");
 
  180                         std::cout << 
"FairFilteredPrimaryGenerator: fVerbose is now set to " << 
verbose << 
"\n";
 
  182                         std::cout << 
"\n\n\n  -WARNING from FairFilteredPrimaryGenerator: verbose must be a positive number! Check your SetVerbose call!\n\n\n";
 
  235                         std::cout << 
"Empty fFilterList pointer ! \n";
 
Int_t GetNumberOfGeneratedEvents()
returns the total (accepted + rejected) number of events generated by the event generators. If no event filters are used this number is equal to the number of simulated events. 
virtual Bool_t Init()
Initialize the event generator(s) and the event (veto) filter(s). 
Bool_t fEventFilterActive
returns kTRUE if any non-veto event filter is registerd. 
FairFilteredPrimaryGenerator & operator=(const FairFilteredPrimaryGenerator &)
std::vector< UInt_t > fLogicalFilterOperation
vector containing the logical operations with which the outputs of the non-veto event filters should ...
TObjArray * fVetoFilterList
List of registered veto filters. 
void WriteEvtFilterStatsToRootFile(TFile *outputFile=NULL)
Writes all relevant event filter information to the output root file. 
void AndNotFilter(FairEvtFilter *filter)
Register a non-veto event filter using a logical AND NOT to connect with previously defined non-veto ...
void AndFilter(FairEvtFilter *filter)
Register a non-veto event filter using a logical AND to connect with previously defined non-veto even...
Int_t fEventNrFiltered
Event number (Set by the filtered primary generator. 
Int_t GetNumberOfFilterFailedEvents()
Returns the number of cases in which no matching event was found within the set max. tries. 
void SetFilterMaxTries(Int_t maxTries=99999)
Define the maximum number of times that this object should try to find an event which suits all event...
TObjArray * fFilterList
List of registered filters. 
void SetEventPrintFrequency(int freq)
Sets the frequency (accepted events) for printout (verbose>0) of accepted and generated events...
ClassDef(FairFilteredPrimaryGenerator, 2)
TObjArray * GetListOfVetoFilters()
Primary generator with added event filtering capabilities. 
void OrNotFilter(FairEvtFilter *filter)
Register a non-veto event filter using a logical OR NOT to connect with previously defined non-veto e...
std::vector< Bool_t > fFilterNegation
vector determining whether the output of a non-veto event filter should be negated or not...
TObjArray * GetListOfFilters()
FairFilteredPrimaryGenerator()
Default constructor. 
FairEvtFilterParams fEvtFilterStat
Contains the statistics of the event filtering process. 
TIterator * fVetoFilterIter
Iterator over veto filter list. 
Int_t fVerbose
Level of commenting output, 0 means no output, higher gives more output. 
Int_t GetNumberOfFilterMaxTries()
returns the maximum number of times that this object should try to find an event which suits all even...
Int_t fEventPrintFreq
Print frequency for filtered events. 
Int_t fFailedFilterEvents
void OrFilter(FairEvtFilter *filter)
Register a non-veto event filter using a logical OR to connect with previously defined non-veto event...
TIterator * fFilterIter
Iterator over filter list. 
virtual Bool_t GenerateEvent(FairGenericStack *pStack)
Calls event generators and the event filters. 
void AddVetoFilter(FairEvtFilter *filter)
Register an event veto filter. Veto filters have higher priority than regular event filters...
Bool_t fEventVetoFilterActive
returns kTRUE if any event veto filter is registered. 
std::vector< Bool_t > filterAcceptEvent
Vector containing the results of the EventMatches methods for every registered non-veto event filter ...
void AddFilter(FairEvtFilter *filter, FairEvtFilter::LogicOp op, Bool_t negateFilter)
Registers a regular (non-veto) filter. This method is not supposed to be directly used by the user...
void SetVerbose(Int_t verbose=12)
Set the level of commenting output. 
virtual ~FairFilteredPrimaryGenerator()
Destructor.