4 #include "KVEventFiltering.h"
5 #include "KVMultiDetArray.h"
7 #include "KVDBSystem.h"
10 #include "KVDataSetManager.h"
11 #include "KVGeoNavigator.h"
25 fTransformKinematics =
kTRUE;
30 fGemDecayPerEvent = 1;
35 SetEventsReadInterval(100);
121 if (frame_name !=
"") to_rotate->
SetFrame(
"rotated_frame", frame_name,
r);
122 else to_rotate->
SetFrame(
"rotated_frame",
r);
149 if ((
fEVN <= 10))
Info(
"Analysis",
"%d events processed", (
int)
fEVN);
150 else if ((
fEVN <= 1000) && !(
fEVN % 100))
Info(
"Analysis",
"%d events processed", (
int)
fEVN);
153 if (
fEVN == 2500) memory_check->SetInitStatistics();
154 else if (
fEVN > 4995) memory_check->CompareToInit();
158 Int_t iterations = 1;
203 while (
fGemini && --iterations);
261 if (!gDataSetManager) {
263 gDataSetManager->
Init();
275 else if (system !=
"") {
293 Info(
"InitAnalysis",
"Run given in options = %d", run);
298 Info(
"InitAnalysis",
"Using first run for system = %d", run);
301 Info(
"InitAnalysis",
"No run information");
309 if (filt ==
"GeoThresh") {
322 Info(
"InitAnalysis",
"Geometric filter");
324 else if (filt ==
"GeoThresh") {
326 Info(
"InitAnalysis",
"Geometry + thresholds filter");
328 else if (filt ==
"Full") {
330 Info(
"InitAnalysis",
"Geometry + thresholds filter + implemented identifications and calibrations.");
335 Info(
"InitAnalysis",
"Simulation is in laboratory/detector frame");
339 Info(
"InitAnalysis",
"Simulation will be transformed to laboratory/detector frame");
345 if (
fRotate)
Info(
"InitAnalysis",
"Random phi rotation around beam axis performed for each event");
357 Info(
"InitAnalysis",
"Statistical decay with Gemini++ for each event before detection");
359 if (
fGemAddRotEner)
Info(
"InitAnalysis",
" -- Rotational energy will be added to excitation energy");
375 Info(
"InitAnalysis",
"Setting identification bilan...");
390 else t =
AddTree(
"ReconstructedEvents",
Form(
"%s filtered with %s",
GetOpt(
"SimTitle").Data(), gMultiDetArray->
GetTitle()));
402 fer->SetDataQualityAudit(dqa);
471 outfile +=
"_Gemini";
477 outfile +=
GetOpt(
"Filter");
479 outfile += gDataSet->
GetName();
483 outfile +=
S->GetBatchName();
485 else if (
GetOpt(
"System")) {
492 outfile += tmp.
Data();
496 outfile +=
Form(
"%d", run);
517 (
new TNamed(
"Origin", (basefile +
".root").Data()))->
Write();
R__EXTERN TRandom * gRandom
char * Form(const char *fmt,...)
void AssignAndDelete(TString &target, char *tobedeleted)
R__EXTERN TSystem * gSystem
Relativistic binary kinematics calculator.
TVector3 GetCMVelocity() const
Return vector velocity of centre of mass of reaction (units: cm/ns)
void CalculateKinematics()
KVNucleus * GetNucleus(Int_t i) const
virtual void SetNumber(UInt_t num)
static Bool_t SearchKVFile(const Char_t *name, TString &fullpath, const Char_t *kvsubdir="")
static KVClassMonitor * GetInstance()
Return pointer to unique instance of class monitor class.
Description of an experimental run in database ,,.
Database class used to store information on different colliding systems studied during an experiment....
KVUnownedList * GetRuns() const
Returns a sorted list of all the runs associated with this system.
KV2Body * GetKinematics()
Audit of experimental data identification and calibrations.
Manage all datasets contained in a given data repository.
virtual Bool_t Init(KVDataRepository *=0)
KVDataSet * GetDataSet(Int_t) const
Return pointer to DataSet using index in list of all datasets, index>=0.
virtual KVString GetReconstructedEventClassName() const
Bool_t HasCalibIdentInfos() const
TString GetFullPathToDataSetFile(const Char_t *filename)
void SetArray(KVMultiDetArray *a, Double_t e_cut_off=1.e-3)
void DetectEvent(KVEvent *event, const Char_t *detection_frame="")
TString GetDetectionFrame() const
Filter simulated events with multidetector response.
TString fNewFrame
allow the definition of a specific frame
std::unique_ptr< KVFilterEventReconstructor > fEventReconstructor
KVSimEvent fGemEvent
event after decay with Gemini
void OpenOutputFile(KVDBSystem *, Int_t)
Bool_t fTransformKinematics
=kTRUE if simulation not in lab frame
void RandomRotation(KVEvent *to_rotate, const TString &frame_name="") const
Bool_t fGemini
true if Gemini++ decay should be performed before detection [default: no]
void EndAnalysis() override
TString fIdCalMode
original exp setup hasIDandCalib to be reset in case of modifications
KVReconstructedEvent * fReconEvent
KVEventFiltering()
Default constructor.
Bool_t fGemAddRotEner
true if rotational energy has to be added to excitation energy [default: no]
Int_t fGemDecayPerEvent
number of Gemini++ decays to be performed for each event [default:1]
void Copy(TObject &) const override
void InitAnalysis() override
KVDetectionSimulator fDetSimulator
Bool_t Analysis() override
virtual ~KVEventFiltering()
Destructor.
Long64_t fEVN
event number counter
Bool_t fRotate
true if random phi rotation should be applied [default: yes]
General purpose analysis base class for TTree containing KVEvent objects.
Bool_t fDisableCreateTreeFile
used with PROOF
Long64_t fTreeEntry
current tree entry number
void AddTree(TTree *tree)
void SetEventsReadInterval(Long64_t N)
void SetJobOutputFileName(const TString &filename)
Bool_t IsOptGiven(const Char_t *option)
KVEvent * GetEvent() const
TString GetOpt(const Char_t *option) const
void FillTree(const Char_t *tree_name="")
Abstract base class container for multi-particle events.
KVNameValueList * GetParameters() const
virtual void SetFrameName(const KVString &name)=0
static void MakeEventBranch(TTree *tree, const TString &branchname, T &event, Int_t bufsize=10000000)
virtual void SetFrame(const Char_t *, const KVFrameTransform &)=0
void SetParameter(const Char_t *name, ValType value) const
virtual KVDBSystem * GetSystem(const Char_t *system) const
Reconstruct events after filtering a simulation.
void DecayEvent(const KVSimEvent *, KVSimEvent *, bool=true)
Base class for all detectors or associations of detectors in array which can identify charged particl...
void CheckIdentificationBilan(const TString &system)
Set status of ID Telescope for given system.
static void OpenIdentificationBilan(const TString &path)
Open IdentificationBilan.dat file with given path.
KVSeqCollection * GetListOfIDTelescopes() const
void SetFilterType(Int_t t)
static KVMultiDetArray * MakeMultiDetector(const Char_t *dataset_name, Int_t run=-1, TString classname="KVMultiDetArray")
virtual void InitializeIDTelescopes()
void PrintStatusOfIDTelescopes()
void Copy(TObject &nvl) const override
TVector3 GetVelocity() const
returns velocity vector in cm/ns units
Event containing KVReconstructedNucleus nuclei reconstructed from hits in detectors.
TObject * First() const override
Container class for simulated nuclei, KVSimNucleus.
void SetFrameName(const KVString &name)
const char * GetName() const override
void * New(ENewType defConstructor=kClassNew, Bool_t quiet=kFALSE) const
static TClass * GetClass(Bool_t load=kTRUE, Bool_t silent=kFALSE)
virtual const char * GetValue(const char *name, const char *dflt) const
virtual void SetValue(const char *name, const char *value, EEnvLevel level=kEnvChange, const char *type=nullptr)
static TFile * Open(const char *name, Option_t *option="", const char *ftitle="", Int_t compress=ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault, Int_t netopt=0)
const char * GetName() const override
const char * GetTitle() const override
virtual Int_t Write(const char *name=nullptr, Int_t option=0, Int_t bufsize=0)
virtual void Copy(TObject &object) const
virtual void Info(const char *method, const char *msgfmt,...) const
virtual Double_t Uniform(Double_t x1, Double_t x2)
const char * Data() const
TString & Remove(EStripType s, char c)
TString & ReplaceAll(const char *s1, const char *s2)
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
virtual char * ConcatFileName(const char *dir, const char *name)
RooArgSet S(Args_t &&... args)
constexpr Double_t TwoPi()