KaliVeda
1.13/01
Heavy-Ion Analysis Toolkit
|
Filter simulated events with multidetector response.
Use this KVEventSelector on simulated data TTrees containing a branch with KVSimEvent-derived objects:
where "[options]"
is the list of options in the form "BranchName=toto,Dataset=titi,System=tata, ..."
.
The following options must be given:
SimFileName
= name of file containing simulated eventsSimTitle
= description of simulationBranchName
= name of branch containing simulated eventsDataset
= name of experimental dataset (defines multidetector array to use etc.)System
= name of experimental dataset system (defines collision kinematics etc.)Geometry
= type of geometry, either 'KV' (KaliVeda geometry) or 'ROOT' (ROOT TGeometry package)Filter
= type of filter, either ‘'Geo’(geometric filter),
'GeoThresh'(geometry + detector thresholds), or
'Full'` (full simulation of detector response, including experimental identification and calibration routines)OutputDir
= directory path in which to write filtered data fileKinematics
= kinematical frame for simulation, either "cm"
or "lab"
. if "cm"
, we use the c.m. velocity of the selected System
to transform events into the detector (laboratory) frame. if "lab"
no transformation is performed: simulated events are already in laboratory frame.The following are optional options:
Run
: run number to use for detector status, setup, parameters, etc. if not given, first run of the given experimental system is used.PhiRot
: by default, a random rotation around the beam axis will be performed before simulating detection of the event. If you don't want this to happen, give option PhiRot=no If used, filtered events will have a parameter "RANDOM_PHI" with the applied rotation (in radians)Gemini
: if option Gemini=yes, then each event will be "decayed" with Gemini++, if KaliVeda has been compiled with Gemini++ support. See below for extra information on Gemini decay stored in particle parameter lists.GemDecayPerEvent
: if option Gemini=yes then by default 1 Gemini++ decay will be performed for each event. you can change this by giving a value for this optionThe filtered data will be written in the directory given as option "OutputDir". The filename is built up from the original simulation filename and the values of various options:
The data will be stored in a TTree with name 'ReconstructedEvents', in a branch with name 'ReconEvent'. The class used for reconstructed events depends on the dataset, it is given by KVDataSet::GetReconstructedEventClassName().
Each filtered event will have some or all of the following parameters in its list:
When using Gemini++ to decay simulated events before filtering, each particle will have the following parameter defined:
The combination of SIMEVENT_TREE_ENTRY/_NUMBER and SIMEVENT_NUC allows to connect primary fragments in the simulated events with their detected decay products in the filtered event.
Example: suppose 'recev' is a filtered event and 'sim_tree' is the TTree containing the original simulation, while 'simev' is a pointer to a KVSimEvent object connected to the appropriate branch in 'sim_tree'. Then we can retrieve the parent nucleus responsible for producing a particular nucleus in 'recev' like so:
Definition at line 96 of file KVEventFiltering.h.
Public Member Functions | |
KVEventFiltering () | |
Default constructor. More... | |
KVEventFiltering (const KVEventFiltering &) | |
virtual | ~KVEventFiltering () |
Destructor. More... | |
Bool_t | Analysis () |
void | Copy (TObject &) const |
void | EndAnalysis () |
void | EndRun () |
void | InitAnalysis () |
void | InitRun () |
void | OpenOutputFile (KVDBSystem *, Int_t) |
![]() | |
KVEventSelector (TTree *=0) | |
KVVarGlob * | AddGV (const Char_t *class_name, const Char_t *name) |
void | AddGV (KVVarGlob *vg) |
KVGVList * | AddGVList (const KVString &list_name, const KVParticleCondition &selection=KVParticleCondition()) |
template<typename HistoType , typename... Args> | |
HistoType * | AddHisto (Args &&... args) |
void | AddHisto (TH1 *histo) |
TTree * | AddTree (const TString &name, const TString &title="") |
Add TTree with given name and title to list of TTree to be filled by user's analysis. More... | |
void | AddTree (TTree *tree) |
Bool_t | AtEndOfRun (void) |
virtual void | Begin (TTree *tree) |
virtual void | CheckEndOfRun () |
Testing whether EndRun() should be called. More... | |
Bool_t | CreateTreeFile (const Char_t *filename="") |
void | FillHisto (const Char_t *sname, const Char_t *label, Double_t weight=1) |
Fill 1D histogram with named bins. More... | |
void | FillHisto (const Char_t *sname, Double_t one, Double_t two=1, Double_t three=1, Double_t four=1) |
void | FillTree (const Char_t *sname="") |
const Char_t * | GetBranchName () const |
virtual Int_t | GetEntry (Long64_t entry, Int_t getall=0) |
KVEvent * | GetEvent () const |
Int_t | GetEventNumber () const |
KVEvent * | GetFriendEvent () const |
Int_t | GetFriendTreeEntry (Long64_t entry, Int_t getall=0) |
KVVarGlob * | GetGV (const Char_t *name) const |
KVGVList * | GetGVList (const KVString &list_name="default") |
const KVGVList * | GetGVList (const KVString &list_name="default") const |
TH1 * | GetHisto (const Char_t *name) const |
const KVHashList * | GetHistoList () const |
return the list of created trees More... | |
TString | GetOpt (const Char_t *option) const |
virtual TList * | GetOutputList () const |
TTree * | GetTree (const Char_t *name) const |
return the tree named tree_name More... | |
const KVHashList * | GetTreeList () const |
return the list of created trees More... | |
virtual void | Init (TTree *tree) |
void | InitFriendTree (TTree *tree, const TString &branchname) |
Bool_t | IsOptGiven (const Char_t *option) |
virtual Bool_t | Notify () |
virtual void | ParseOptions () |
virtual Bool_t | Process (Long64_t entry) |
virtual void | RecalculateGlobalVariables () |
virtual void | SaveHistos (const Char_t *="", Option_t *="recreate", Bool_t=kFALSE) |
virtual void | SetAdditionalBranchAddress () |
virtual void | SetAnalysisFrame () |
void | SetBranchName (const Char_t *n) |
virtual void | SetCurrentRun (KVDBRun *) |
void | SetEvent (KVEvent *e) |
void | SetEventsReadInterval (Long64_t N) |
virtual void | SetInputList (TList *input) |
void | SetJobOutputFileName (const TString &filename) |
virtual void | SetObject (TObject *obj) |
void | SetOpt (const Char_t *option, const Char_t *value) |
void | SetParticleConditions (const KVParticleCondition &, const KVString &="") |
void | SetParticleConditionsParticleClassName (const KVString &t) |
void | SetTriggerConditionsForRun (int) |
virtual void | SlaveBegin (TTree *tree) |
virtual void | SlaveTerminate () |
virtual void | Terminate () |
void | UnsetOpt (const Char_t *opt) |
virtual Int_t | Version () const |
![]() | |
TSelector () | |
virtual | ~TSelector () |
virtual void | Abort (const char *why, EAbort what=kAbortProcess) |
virtual EAbort | GetAbort () const |
virtual TList * | GetInputList () const |
virtual const char * | GetOption () const |
virtual Long64_t | GetStatus () const |
virtual void | ImportOutput (TList *output) |
virtual Bool_t | ProcessCut (Long64_t) |
virtual void | ProcessFill (Long64_t) |
virtual void | ResetAbort () |
virtual void | SetOption (const char *option) |
virtual void | SetStatus (Long64_t status) |
![]() | |
TObject () | |
TObject (const TObject &object) | |
virtual | ~TObject () |
void | AbstractMethod (const char *method) const |
virtual void | AppendPad (Option_t *option="") |
virtual void | Browse (TBrowser *b) |
ULong_t | CheckedHash () |
virtual const char * | ClassName () const |
virtual void | Clear (Option_t *="") |
virtual TObject * | Clone (const char *newname="") const |
virtual Int_t | Compare (const TObject *obj) const |
virtual void | Delete (Option_t *option="") |
virtual Int_t | DistancetoPrimitive (Int_t px, Int_t py) |
virtual void | Draw (Option_t *option="") |
virtual void | DrawClass () const |
virtual TObject * | DrawClone (Option_t *option="") const |
virtual void | Dump () const |
virtual void | Error (const char *method, const char *msgfmt,...) const |
virtual void | Execute (const char *method, const char *params, Int_t *error=0) |
virtual void | Execute (TMethod *method, TObjArray *params, Int_t *error=0) |
virtual void | ExecuteEvent (Int_t event, Int_t px, Int_t py) |
virtual void | Fatal (const char *method, const char *msgfmt,...) const |
virtual TObject * | FindObject (const char *name) const |
virtual TObject * | FindObject (const TObject *obj) const |
virtual Option_t * | GetDrawOption () const |
virtual const char * | GetIconName () const |
virtual const char * | GetName () const |
virtual char * | GetObjectInfo (Int_t px, Int_t py) const |
virtual const char * | GetTitle () const |
virtual UInt_t | GetUniqueID () const |
virtual Bool_t | HandleTimer (TTimer *timer) |
virtual ULong_t | Hash () const |
Bool_t | HasInconsistentHash () const |
virtual void | Info (const char *method, const char *msgfmt,...) const |
virtual Bool_t | InheritsFrom (const char *classname) const |
virtual Bool_t | InheritsFrom (const TClass *cl) const |
virtual void | Inspect () const |
void | InvertBit (UInt_t f) |
virtual Bool_t | IsEqual (const TObject *obj) const |
virtual Bool_t | IsFolder () const |
R__ALWAYS_INLINE Bool_t | IsOnHeap () const |
virtual Bool_t | IsSortable () const |
R__ALWAYS_INLINE Bool_t | IsZombie () const |
virtual void | ls (Option_t *option="") const |
void | MayNotUse (const char *method) const |
void | Obsolete (const char *method, const char *asOfVers, const char *removedFromVers) const |
void | operator delete (void *ptr) |
void | operator delete[] (void *ptr) |
void * | operator new (size_t sz) |
void * | operator new (size_t sz, void *vp) |
void * | operator new[] (size_t sz) |
void * | operator new[] (size_t sz, void *vp) |
TObject & | operator= (const TObject &rhs) |
virtual void | Paint (Option_t *option="") |
virtual void | Pop () |
virtual void | Print (Option_t *option="") const |
virtual Int_t | Read (const char *name) |
virtual void | RecursiveRemove (TObject *obj) |
void | ResetBit (UInt_t f) |
virtual void | SaveAs (const char *filename="", Option_t *option="") const |
virtual void | SavePrimitive (std::ostream &out, Option_t *option="") |
void | SetBit (UInt_t f) |
void | SetBit (UInt_t f, Bool_t set) |
virtual void | SetDrawOption (Option_t *option="") |
virtual void | SetUniqueID (UInt_t uid) |
virtual void | SysError (const char *method, const char *msgfmt,...) const |
R__ALWAYS_INLINE Bool_t | TestBit (UInt_t f) const |
Int_t | TestBits (UInt_t f) const |
virtual void | UseCurrentStyle () |
virtual void | Warning (const char *method, const char *msgfmt,...) const |
virtual Int_t | Write (const char *name=0, Int_t option=0, Int_t bufsize=0) |
virtual Int_t | Write (const char *name=0, Int_t option=0, Int_t bufsize=0) const |
Public Attributes | |
TVector3 | fCMVelocity |
TString | fNewFrame |
allow the definition of a specific frame More... | |
TVector3 | fProjVelocity |
KVReconstructedEvent * | fReconEvent |
Bool_t | fTransformKinematics |
=kTRUE if simulation not in lab frame More... | |
![]() | |
kAbortFile | |
kAbortProcess | |
kContinue | |
![]() | |
kBitMask | |
kCanDelete | |
kCannotPick | |
kHasUUID | |
kInconsistent | |
kInvalidObject | |
kIsOnHeap | |
kIsReferenced | |
kMustCleanup | |
kNoContextMenu | |
kNotDeleted | |
kObjInCanvas | |
kOverwrite | |
kSingleKey | |
kWriteDelete | |
kZombie | |
Private Member Functions | |
void | RandomRotation (KVEvent *to_rotate, const TString &frame_name="") const |
Private Attributes | |
Long64_t | fEVN |
event number counter More... | |
Bool_t | fGemAddRotEner |
true if rotational energy has to be added to excitation energy [default: no] More... | |
Int_t | fGemDecayPerEvent |
number of Gemini++ decays to be performed for each event [default:1] More... | |
KVSimEvent | fGemEvent |
event after decay with Gemini More... | |
Bool_t | fGemini |
true if Gemini++ decay should be performed before detection [default: no] More... | |
TString | fIdCalMode |
original exp setup hasIDandCalib to be reset in case of modifications More... | |
Bool_t | fRotate |
true if random phi rotation should be applied [default: yes] More... | |
KVGemini | GEM |
Additional Inherited Members | |
![]() | |
enum | EAbort |
![]() | |
enum | EDeprecatedStatusBits |
enum | EStatusBits |
![]() | |
static TSelector * | GetSelector (const char *filename) |
static Bool_t | IsStandardDraw (const char *selec) |
![]() | |
static Longptr_t | GetDtorOnly () |
static Bool_t | GetObjectStat () |
static void | SetDtorOnly (void *obj) |
static void | SetObjectStat (Bool_t stat) |
![]() | |
void | add_histo (TH1 *histo) |
for merging with PROOF More... | |
void | add_tree (TTree *tree) |
void | create_output_file () |
void | FillTH1 (TH1 *h1, Double_t one, Double_t two) |
void | FillTH2 (TH2 *h2, Double_t one, Double_t two, Double_t three) |
void | FillTH3 (TH3 *h3, Double_t one, Double_t two, Double_t three, Double_t four) |
void | FillTProfile (TProfile *h1, Double_t one, Double_t two, Double_t three) |
void | FillTProfile2D (TProfile2D *h2, Double_t one, Double_t two, Double_t three, Double_t four) |
void | SetCombinedOutputFile (const TString &filename) |
void | SetUpAuxEventChain () |
![]() | |
virtual void | DoError (int level, const char *location, const char *fmt, va_list va) const |
void | MakeZombie () |
![]() | |
KVEvent * | AuxEvent |
[optional] events in fAuxChain More... | |
TBranch * | b_Event |
List of branches. More... | |
KVEvent * | Event |
Declaration of leaf types. More... | |
TTree * | fAuxChain |
[optional] pointer to another TTree or TChain which may be used during analysis More... | |
KVString | fBranchName |
name of branch which contains events to analyse More... | |
TTree * | fChain |
pointer to the analyzed TTree or TChain More... | |
KVString | fCombinedOutputFile |
name for ROOT file containing histos and/or trees produced by analysis More... | |
Bool_t | fDisableCreateTreeFile |
used with PROOF More... | |
Long64_t | fEventsRead |
number of events read More... | |
Long64_t | fEventsReadInterval |
interval at which to print number of events read More... | |
Bool_t | fFirstEvent |
set to kFALSE after first event is read More... | |
Bool_t | fGlobalVariableAbortEventAnalysis |
KVUniqueNameList | fGlobalVariables |
Lists of global variables with different selection criteria. More... | |
Bool_t | fNotifyCalled |
avoid multiple calls to Notify/InitRun More... | |
KVUserAnalysisOptionList | fOptionList |
parsed list of options given to TTree::Process More... | |
KVParticleCondition | fPartCond |
(optional) conditions for selecting particles More... | |
KVString | fPartName |
(optional) classname for upcasting in KVParticleCondition::Optimize More... | |
Long64_t | fTreeEntry |
current tree entry number More... | |
KVHashList | lhisto |
list of histograms added with AddHisto More... | |
KVHashList | ltree |
list of trees added with AddTree More... | |
TProofOutputFile * | mergeFile = nullptr |
output file for trees and histos More... | |
TFile * | writeFile = nullptr |
![]() | |
EAbort | fAbort |
TList * | fInput |
TObject * | fObject |
TString | fOption |
TSelectorList * | fOutput |
Long64_t | fStatus |
![]() | |
kOnlyPrepStep | |
#include <KVEventFiltering.h>
KVEventFiltering::KVEventFiltering | ( | ) |
Default constructor.
Definition at line 21 of file KVEventFiltering.cpp.
KVEventFiltering::KVEventFiltering | ( | const KVEventFiltering & | obj | ) |
Copy constructor This ctor is used to make a copy of an existing object (for example when a method returns an object), and it is always a good idea to implement it. If your class allocates memory in its constructor(s) then it is ESSENTIAL :-)
Definition at line 47 of file KVEventFiltering.cpp.
|
virtual |
Destructor.
Definition at line 65 of file KVEventFiltering.cpp.
Event-by-event filtering of simulated data. If needed (fTransformKinematics = kTRUE), kinematics of event are transformed to laboratory frame using C.M. velocity calculated in InitAnalysis(). Detection of particles in event is simulated with KVMultiDetArray::DetectEvent, then the reconstructed detected event is treated by the same identification and calibration procedures as for experimental data. few event counter print at the beginning to be sure the process started properly because in case GEMINI decay is used, it sometimes stops (randomly) after few events
Reimplemented from KVEventSelector.
Definition at line 136 of file KVEventFiltering.cpp.
This method copies the current state of 'this' object into 'obj' You should add here any member variables, for example: (supposing a member variable KVEventFiltering::fToto) CastedObj.fToto = fToto; or CastedObj.SetToto( GetToto() );
Reimplemented from TObject.
Definition at line 84 of file KVEventFiltering.cpp.
|
virtual |
Reimplemented from KVEventSelector.
Definition at line 211 of file KVEventFiltering.cpp.
|
virtual |
Reimplemented from KVEventSelector.
Definition at line 220 of file KVEventFiltering.cpp.
|
virtual |
Select required dataset for filtering (option "Dataset") Build the associated multidetector geometry. Calculate C.M. velocity associated with required experimental collision kinematics (option "System").
Set the parameters of the detectors according to the required run if given (option "Run"), or the first run of the given system otherwise. If ROOT/TGeo geometry is required (option "Geometry"="ROOT"), build the TGeometry representation of the detector array.
Open file for filtered data (see KVEventFiltering::OpenOutputFile), which will be stored in a TTree with name 'ReconstructedEvents', in a branch with name 'ReconEvent'. The class used for reconstructed events depends on the dataset, it is given by KVDataSet::GetReconstructedEventClassName().
Reimplemented from KVEventSelector.
Definition at line 242 of file KVEventFiltering.cpp.
Reimplemented from KVEventSelector.
Definition at line 410 of file KVEventFiltering.cpp.
void KVEventFiltering::OpenOutputFile | ( | KVDBSystem * | S, |
Int_t | run | ||
) |
Open ROOT file for new filtered events TTree. The file will be written in the directory given as option "OutputDir". The filename is built up from the original simulation filename and the values of various options:
[simfile]_[Gemini]_geo=[geometry]_filt=[filter-type]_[dataset]_[system]_run=[run-number].root
In addition, informations on the filtered data are stored in the file as TNamed objects. These can be read by KVSimDir::AnalyseFile:
KEY: TNamed System;1 title=[full system name] KEY: TNamed Dataset;1 title=[dataset name] KEY: TNamed Run;1 title=[run-number] KEY: TNamed Geometry;1 title=[geometry-type] KEY: TNamed Filter;1 title=[filter-type] KEY: TNamed Origin;1 title=[name of simulation file] KEY: TNamed RandomPhi;1 title=[yes/no, random rotation about beam axis] KEY: TNamed Gemini++;1 title=[yes/no, Gemini++ decay before detection] KEY: TNamed GemDecayPerEvent;1 title=[number of Gemini++ decays per primary event] KEY: TNamed GemAddRotEner;1 title=[Enable or not the addition of the rotational energy to the excitation energy]
Definition at line 443 of file KVEventFiltering.cpp.
|
private |
do random phi rotation around z-axis if frame_name is given, apply rotation to that frame
store phi rotation angle [radians] in event parameter "RANDOM_PHI"
Definition at line 110 of file KVEventFiltering.cpp.
TVector3 KVEventFiltering::fCMVelocity |
Definition at line 127 of file KVEventFiltering.h.
|
private |
event number counter
Definition at line 100 of file KVEventFiltering.h.
|
private |
true if rotational energy has to be added to excitation energy [default: no]
Definition at line 104 of file KVEventFiltering.h.
|
private |
number of Gemini++ decays to be performed for each event [default:1]
Definition at line 105 of file KVEventFiltering.h.
|
private |
event after decay with Gemini
Definition at line 106 of file KVEventFiltering.h.
|
private |
true if Gemini++ decay should be performed before detection [default: no]
Definition at line 103 of file KVEventFiltering.h.
|
private |
original exp setup hasIDandCalib to be reset in case of modifications
Definition at line 110 of file KVEventFiltering.h.
TString KVEventFiltering::fNewFrame |
allow the definition of a specific frame
Definition at line 130 of file KVEventFiltering.h.
TVector3 KVEventFiltering::fProjVelocity |
Definition at line 128 of file KVEventFiltering.h.
KVReconstructedEvent* KVEventFiltering::fReconEvent |
Definition at line 126 of file KVEventFiltering.h.
|
private |
true if random phi rotation should be applied [default: yes]
Definition at line 101 of file KVEventFiltering.h.
Bool_t KVEventFiltering::fTransformKinematics |
=kTRUE if simulation not in lab frame
Definition at line 129 of file KVEventFiltering.h.
|
private |
Definition at line 107 of file KVEventFiltering.h.