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";
234 if ( ! fFilterList ) {
235 std::cout <<
"Empty fFilterList pointer ! \n";
238 fFilterList->Add(filter);
239 fEventFilterActive = kTRUE;
241 if(fFilterList->GetEntriesFast()!=1){
242 fLogicalFilterOperation.push_back(op);
244 fFilterNegation.push_back(negateFilter);
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.