21 #ifndef FairFilteredPrimaryGenerator_H 22 #define FairFilteredPrimaryGenerator_H 24 #include "FairPrimaryGenerator.h" 31 #include "FairRunSim.h" 33 #include "FairGenerator.h" 37 #include "TObjArray.h" 43 class FairGenericStack;
44 class FairMCEventHeader;
61 virtual Bool_t
Init();
79 std::cout <<
"Empty fFilterList pointer ! \n";
109 std::cout <<
"\n\n\n -WARNING from FairFilteredPrimaryGenerator: maxTries must be a positive number! Check your SetFilterMaxTries call!\n\n\n";
139 std::cout <<
"Random events were accepted to avoid infinite loops. \n";
140 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";
142 if (outputFile ==
nullptr)
143 outputFile = FairRunSim::Instance()->GetOutputFile();
145 outputFile->mkdir(
"FairEvtFilter");
146 outputFile->cd(
"FairEvtFilter");
158 std::cout <<
"FairFilteredPrimaryGenerator: fVerbose is now set to " << verbose <<
"\n";
160 std::cout <<
"\n\n\n -WARNING from FairFilteredPrimaryGenerator: verbose must be a positive number! Check your SetVerbose call!\n\n\n";
210 std::cout <<
"Empty fFilterList pointer ! \n";
213 fFilterList->Add(filter);
214 fEventFilterActive = kTRUE;
216 if (fFilterList->GetEntriesFast() != 1) {
217 fLogicalFilterOperation.push_back(op);
219 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.
Bool_t fEventFilterActive
returns kTRUE if any non-veto event filter is registerd.
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 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...
virtual ~FairFilteredPrimaryGenerator()
Destructor.
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.
virtual Bool_t GenerateEvent(FairGenericStack *pStack)
Calls event generators and the event filters.
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...
virtual Bool_t Init()
Initialize the event generator(s) and the event (veto) filter(s).
TIterator * fFilterIter
Iterator over filter list.
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 WriteEvtFilterStatsToRootFile(TFile *outputFile=nullptr)
Writes all relevant event filter information to the output root file.
void SetVerbose(Int_t verbose=12)
Set the level of commenting output.