KaliVeda  1.12/06
Heavy-Ion Analysis Toolkit
List of all members | Classes | Public Member Functions | Static Public Member Functions | Protected Attributes | List of all members
KVEvent Class Reference

Base class container for multi-particle events.

The main business of KaliVeda is the analysis of multi-body events produced in heavy-ion reactions, therefore it is no surprise that a central role is played by the class KVEvent which can be thought of as a container class for particles and nuclei (see KVParticle & KVNucleus).

In addition to containing a list of particles/nuclei, each event class also has in common the following functionality:

Let us mention in passing the associated KVEventViewer class which can be used to produce 3D images of events using the ROOT OpenGL backend.

See the chapter in the User's Guide for more details: http://indra.in2p3.fr/kaliveda/UsersGuide/events.html

Kinematical reference frames

See also KVParticle for accessing/changing reference frames of individual particles.

1. Defining and accessing different reference frames for all particles of an event

You can define and use several different reference frames for the particles in an event. Each frame can be used independently, and new frames can be defined based on any of the existing frames:

Example: (for an event accessed through pointer KVEvent* e):

e->SetFrame("moving_frame", TVector3(0,0,5));
#define e(i)
e->SetFrame("rotated_moving_frame", "moving_frame", rot);
TRotation & RotateZ(Double_t)
constexpr Double_t PiOver2()

Note that the same frame can be defined directly from the original frame of all particles in the event by using a combined boost-then-rotation transform:

e->SetFrame("rotated_moving_frame", KVFrameTransform(TVector3(0,0,5),rot));
--//-- the following only works with C++11 and later
e->SetFrame("rotated_moving_frame", {{0,0,5},rot});
Utility class for kinematical transformations of KVParticle class.
e->SetFrame("rotated_frame", rot);
e->GetParticle(i)->GetFrame("moving_frame")->GetVpar();
e->GetParticle(i)->GetFrame("rotated_frame")->GetPhi();
e->GetParticle(i)->GetFrame("rotated_moving_frame")->GetTransverseEnergy();

Note that the frame "rotated_moving_frame" is directly accessible even if it is defined in two steps as a rotation of the "moving_frame".

2. Changing the default reference frame for all particles in an event

Let us consider an event for which the different reference frames in the previous paragraph have been defined. Calling method Print() will show all reference frames defined for each particle:

e->Print()
KVParticle mass=939 Theta=45 Phi=0 KE=32.7103 Vpar=5.45392
moving_frame: Theta=85.1751 Phi=0 KE=16.6117 Vpar=0.468125
rotated_moving_frame: Theta=85.1751 Phi=270 KE=16.6117 Vpar=0.468125
rotated_frame: Theta=45 Phi=270 KE=32.7103 Vpar=5.45392
etc. etc.
Base class for relativistic kinematics of massive particles.
Definition: KVParticle.h:398

Indentation indicates the relationships between frames: "rotated_moving_frame" is a child frame of "moving_frame". The first line is the default kinematics. As yet it has no name, but if we want we can set a name for the default kinematics of each particle in the event:

e->SetFrameName("lab");

Now if we want to change the default kinematical frame for the event by using ChangeDefaultFrame():

e->ChangeDefaultFrame("rotated_moving_frame");
e->Print();
KVParticle mass=939 Theta=85.1751 Phi=270 KE=16.6117 Vpar=0.468125
moving_frame: Theta=85.1751 Phi=0 KE=16.6117 Vpar=0.468125
lab: Theta=45 Phi=0 KE=32.7103 Vpar=5.45392
rotated_frame: Theta=45 Phi=270 KE=32.7103 Vpar=5.45392
KVNameValueList::ParticleParameters : Parameters associated with a particle in an event (0x7f5a1ff8b1b8)
<frameName=rotated_moving_frame>
RooCmdArg Parameters(const RooArgSet &params)
auto * a

Note that the name of the default kinematics is stored as a parameter "frameName" and can be retrieved with method GetFrameName(). Note also how the relationships between frames are preserved, i.e. if we present the frames as graphs:

with "lab" as default frame:

lab
|
+--moving_frame
| |
| +--rotated_moving_frame
|
+--rotated_frame

with "rotated_moving_frame" as default frame:

rotated_moving_frame
|
+--moving_frame
|
+--lab
|
+--rotated_frame
Examples
ExampleINDRAAnalysis.cpp, KVEvent_iterator_example.C, KVGenPhaseSpace_example.C, KVGenPhaseSpace_example2.C, MicroStat_example.C, MicroStat_example2.C, and globvars_kvzmax.C.

Definition at line 176 of file KVEvent.h.

Classes

class  Iterator
 

Public Member Functions

 KVEvent (Int_t mult=50, const char *classname="KVNucleus")
 
virtual ~ KVEvent ()
 
KVNucleusAddParticle ()
 
Iterator begin () const
 
void ChangeDefaultFrame (const Char_t *, const Char_t *defname="")
 
void ChangeFrame (const KVFrameTransform &, const KVString &="")
 
virtual void Clear (Option_t *opt="")
 
virtual void Copy (TObject &obj) const
 Copy this to obj. More...
 
void CustomStreamer ()
 
void DefineGroup (const Char_t *groupname, const Char_t *from="")
 
void DefineGroup (const Char_t *groupname, KVParticleCondition *cond, const Char_t *from="")
 
Iterator end () const
 
void FillHisto (TH1 *h, const Char_t *KVNucleus_method, const Char_t *method_prototype, const Char_t *args, Option_t *opt="")
 
void FillHisto (TH1 *h, const Char_t *KVNucleus_method, Option_t *opt="")
 
virtual void FillIntegerList (KVIntegerList *, Option_t *opt)
 
Double_t GetChannelQValue () const
 
const Char_tGetFrameName () const
 
Double_t GetGSChannelQValue () const
 
virtual void GetGSMasses (std::vector< Double_t > &)
 Fill vector with ground state mass of each nucleus of event (in MeV). More...
 
virtual void GetMasses (std::vector< Double_t > &)
 Fill vector with mass of each nucleus of event (in MeV) [note: this is the mass including any excitation energy, not ground state]. More...
 
Int_t GetMinimumOKMultiplicity () const
 
virtual Int_t GetMult (Option_t *opt="") const
 
void GetMultiplicities (Int_t mult[], const TString &species, Option_t *opt="")
 
Int_t GetMultiplicity (Int_t Z, Int_t A=0, Option_t *opt="")
 
KVNucleusGetNextParticle (Option_t *opt="") const
 
Iterator GetNextParticleIterator (Option_t *opt) const
 
KVNameValueListGetParameters () const
 
KVNucleusGetParticle (const Char_t *group_name) const
 Find first particle in event belonging to group with name "group_name". More...
 
KVNucleusGetParticle (Int_t npart) const
 
KVNucleusGetParticleWithName (const Char_t *name) const
 
const Char_tGetPartitionName ()
 
Double_t GetSum (const Char_t *KVNucleus_method, const Char_t *method_prototype, const Char_t *args, Option_t *opt="")
 
Double_t GetSum (const Char_t *KVNucleus_method, Option_t *opt="")
 
virtual Bool_t IsOK ()
 
virtual void ls (Option_t *t="") const
 
virtual void MergeEventFragments (TCollection *, Option_t *opt="")
 
virtual void Print (Option_t *t="") const
 
void ResetEnergies ()
 
void ResetGetNextParticle () const
 
void SetFrame (const Char_t *frame, const KVFrameTransform &ft)
 
void SetFrame (const Char_t *newframe, const Char_t *oldframe, const KVFrameTransform &ft)
 
void SetFrameName (const KVString &)
 
void SetMinimumOKMultiplicity (Int_t)
 
template<typename ValType >
void SetParameter (const Char_t *name, ValType value) const
 
void UpdateAllFrames ()
 
- Public Member Functions inherited from KVBase
 KVBase ()
 Default constructor. More...
 
 KVBase (const Char_t *name, const Char_t *title="")
 Ctor for object with given name and type. More...
 
 KVBase (const KVBase &)
 copy ctor More...
 
virtual ~ KVBase ()
 
const Char_tGetLabel () const
 
UInt_t GetNumber () const
 
UInt_t GetNumberOfObjects () const
 
virtual TObjectGetObject () const
 
const Char_tGetType () const
 
Bool_t HasLabel () const
 
virtual Bool_t IsCalled (const Char_t *name) const
 
Bool_t IsLabelled (const Char_t *l) const
 
virtual Bool_t IsType (const Char_t *typ) const
 
virtual void List ()
 
KVBaseoperator= (const KVBase &)
 copy assignment operator More...
 
Double_t ProtectedGetX (const TF1 *func, Double_t val, int &status, Double_t xmin=0.0, Double_t xmax=0.0) const
 
void SetLabel (const Char_t *lab)
 
virtual void SetNumber (UInt_t num)
 
virtual void SetType (const Char_t *str)
 
- Public Member Functions inherited from TNamed
 TNamed ()
 
 TNamed (const char *name, const char *title)
 
 TNamed (const TNamed &named)
 
 TNamed (const TString &name, const TString &title)
 
virtual ~TNamed ()
 
virtual TObjectClone (const char *newname="") const
 
virtual Int_t Compare (const TObject *obj) const
 
virtual void FillBuffer (char *&buffer)
 
virtual const char * GetName () const
 
virtual const char * GetTitle () const
 
virtual ULong_t Hash () const
 
virtual Bool_t IsSortable () const
 
TNamedoperator= (const TNamed &rhs)
 
virtual void SetName (const char *name)
 
virtual void SetNameTitle (const char *name, const char *title)
 
virtual void SetTitle (const char *title="")
 
virtual Int_t Sizeof () const
 
- Public Member Functions inherited from TObject
 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 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 TObjectDrawClone (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 TObjectFindObject (const char *name) const
 
virtual TObjectFindObject (const TObject *obj) const
 
virtual Option_tGetDrawOption () const
 
virtual const char * GetIconName () const
 
virtual char * GetObjectInfo (Int_t px, Int_t py) const
 
virtual Option_tGetOption () const
 
virtual UInt_t GetUniqueID () const
 
virtual Bool_t HandleTimer (TTimer *timer)
 
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
 
R__ALWAYS_INLINE Bool_t IsZombie () const
 
void MayNotUse (const char *method) const
 
virtual Bool_t Notify ()
 
void Obsolete (const char *method, const char *asOfVers, const char *removedFromVers) const
 
void operator delete (void *ptr)
 
void operator delete[] (void *ptr)
 
voidoperator new (size_t sz)
 
voidoperator new (size_t sz, void *vp)
 
voidoperator new[] (size_t sz)
 
voidoperator new[] (size_t sz, void *vp)
 
TObjectoperator= (const TObject &rhs)
 
virtual void Paint (Option_t *option="")
 
virtual void Pop ()
 
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
 

Static Public Member Functions

static KVEventFactory (const char *)
 Create and return pointer to new event of class given by plugin. More...
 
template<typename T >
static void MakeEventBranch (TTree *tree, const TString &branchname, const TString &classname, T &event, Int_t bufsize=10000000)
 
- Static Public Member Functions inherited from KVBase
static Bool_t AreEqual (Double_t x, Double_t y, Long64_t maxdif=1)
 Comparison between two 64-bit floating-point values. More...
 
static void BackupFileWithDate (const Char_t *path)
 
static void CombineFiles (const Char_t *file1, const Char_t *file2, const Char_t *newfilename, Bool_t keep=kTRUE)
 
static void Deprecated (const char *method, const char *advice)
 
static Bool_t FindClassSourceFiles (const Char_t *class_name, KVString &imp_file, KVString &dec_file, const Char_t *dir_name=".")
 
static Bool_t FindExecutable (TString &exec, const Char_t *path="$(PATH)")
 
static const Char_tFindFile (const Char_t *search, TString &wfil)
 
static const Char_tGetBINDIRFilePath (const Char_t *namefile="")
 
static const Char_tGetDATABASEFilePath ()
 
static const Char_tGetDATADIRFilePath (const Char_t *namefile="")
 
static Bool_t GetDataSetEnv (const Char_t *dataset, const Char_t *type, Bool_t defval)
 
static const Char_tGetDataSetEnv (const Char_t *dataset, const Char_t *type, const Char_t *defval)
 
static Double_t GetDataSetEnv (const Char_t *dataset, const Char_t *type, Double_t defval)
 
static const Char_tGetETCDIRFilePath (const Char_t *namefile="")
 
static const Char_tGetExampleFilePath (const Char_t *library, const Char_t *namefile)
 Return full path to example file for given library (="KVMultiDet", "BackTrack", etc.) More...
 
static const Char_tGetINCDIRFilePath (const Char_t *namefile="")
 
static const Char_tGetKVBuildDate ()
 Returns KaliVeda build date. More...
 
static const Char_tGetKVBuildDir ()
 Returns top-level directory used for build. More...
 
static const Char_tGetKVBuildTime ()
 Returns KaliVeda build date. More...
 
static const Char_tGetKVBuildType ()
 Returns KaliVeda build type (cmake build: Release, Debug, RelWithDebInfo, ...) More...
 
static const Char_tGetKVBuildUser ()
 Returns username of person who performed build. More...
 
static const Char_tGetKVSourceDir ()
 Returns top-level directory of source tree used for build. More...
 
static const Char_tGetKVVersion ()
 Returns KaliVeda version string. More...
 
static const Char_tGetLIBDIRFilePath (const Char_t *namefile="")
 
static const Char_tGetListOfPlugins (const Char_t *base)
 
static const Char_tGetListOfPluginURIs (const Char_t *base)
 
static const Char_tGetPluginURI (const Char_t *base, const Char_t *plugin)
 
static void GetTempFileName (TString &base)
 
static const Char_tGetTEMPLATEDIRFilePath (const Char_t *namefile="")
 
static const Char_tGetWORKDIRFilePath (const Char_t *namefile="")
 
static const Char_tgitBranch ()
 Returns git branch of sources. More...
 
static const Char_tgitCommit ()
 Returns last git commit of sources. More...
 
static void InitEnvironment ()
 
static bool is_gnuinstall ()
 
static Bool_t IsThisAPlugin (const TString &uri, TString &base)
 
static TPluginHandlerLoadPlugin (const Char_t *base, const Char_t *uri="0")
 
static Bool_t OpenContextMenu (const char *method, TObject *obj, const char *alt_method_name="")
 
static void OpenTempFile (TString &base, std::ofstream &fp)
 
static void PrintSplashScreen ()
 Prints welcome message and infos on version etc. More...
 
static Bool_t SearchAndOpenKVFile (const Char_t *name, std::ifstream &file, const Char_t *kvsubdir="", KVLockfile *locks=0)
 
static Bool_t SearchAndOpenKVFile (const Char_t *name, std::ofstream &file, const Char_t *kvsubdir="", KVLockfile *locks=0)
 
static Bool_t SearchKVFile (const Char_t *name, TString &fullpath, const Char_t *kvsubdir="")
 
static const Char_tWorkingDirectory ()
 
- Static Public Member Functions inherited from TObject
static Longptr_t GetDtorOnly ()
 
static Bool_t GetObjectStat ()
 
static void SetDtorOnly (void *obj)
 
static void SetObjectStat (Bool_t stat)
 

Protected Attributes

Iterator fIter
 internal iterator used by GetNextParticle() More...
 
KVNameValueList fParameters
 general-purpose list of parameters More...
 
TClonesArrayfParticles
 array of particles in event More...
 
- Protected Attributes inherited from KVBase
TString fLabel
 label for the object More...
 
- Protected Attributes inherited from TNamed
TString fName
 
TString fTitle
 
- Protected Attributes inherited from TObject
 kOnlyPrepStep
 

Additional Inherited Members

- Public Types inherited from KVBase
enum  EKaliVedaBits { kIsKaliVedaObject = BIT(23) }
 
- Public Types inherited from TObject
enum  EDeprecatedStatusBits
 
enum  EStatusBits
 
- Public Attributes inherited from TObject
 kBitMask
 
 kCanDelete
 
 kCannotPick
 
 kHasUUID
 
 kInconsistent
 
 kInvalidObject
 
 kIsOnHeap
 
 kIsReferenced
 
 kMustCleanup
 
 kNoContextMenu
 
 kNotDeleted
 
 kObjInCanvas
 
 kOverwrite
 
 kSingleKey
 
 kWriteDelete
 
 kZombie
 
- Protected Member Functions inherited from TObject
virtual void DoError (int level, const char *location, const char *fmt, va_list va) const
 
void MakeZombie ()
 

#include <KVEvent.h>

Inheritance diagram for KVEvent:
Inheritance graph
[legend]

Constructor & Destructor Documentation

◆ KVEvent()

KVEvent::KVEvent ( Int_t  mult = 50,
const char *  classname = "KVNucleus" 
)

Initialise KVEvent to hold mult events of "classname" objects (the class must inherit from KVNucleus). "mult" is the approximate maximum multiplicity of the events (if too small, extra space will be allocated automatically by TClonesArray).

Default argument : classname = "KVNucleus"

Definition at line 77 of file KVEvent.cpp.

◆ ~ KVEvent()

virtual KVEvent::~ KVEvent ( )
virtual

Member Function Documentation

◆ AddParticle()

KVNucleus * KVEvent::AddParticle ( )

Method used for building an event particle by particle. DO NOT USE FOR READING EVENTS - use GetParticle(Int_t npart)!!

This method increases the multiplicity fMult by one and "creates" a new particle with index (fMult-1). In actual fact a new object is only created if needed i.e. if the new multiplicity is greater than previously. Particle objects in the array are reused from one event to another. The default constructor for the class corresponding to the "new" particle will only be called once during its lifetime (i.e. if N events are generated, the particle ctor will be called only once, not N times). Once created, in subsequent events we just call the particle's Clear() method in order to reset its internal variables ready for a new event.

Examples
KVGenPhaseSpace_example.C, KVGenPhaseSpace_example2.C, MicroStat_example.C, and MicroStat_example2.C.

Definition at line 166 of file KVEvent.cpp.

◆ begin()

Iterator KVEvent::begin ( ) const
inline

return iterator to beginning of event

Definition at line 423 of file KVEvent.h.

◆ ChangeDefaultFrame()

void KVEvent::ChangeDefaultFrame ( const Char_t newdef,
const Char_t defname = "" 
)

Make existing reference frame 'newdef' the new default frame for particle kinematics. The current default frame will then be accessible from the list of frames using its name (previously set with SetFrameName). You can change this name with 'defname'.

See KVParticle::ChangeDefaultFrame() and KVParticle::SetFrame() for details.

Definition at line 839 of file KVEvent.cpp.

◆ ChangeFrame()

void KVEvent::ChangeFrame ( const KVFrameTransform ft,
const KVString name = "" 
)

Permanently change the reference frame used for particle kinematics in the event. The transformation is applied to all "ok" particles in the event. You can optionally set the name of this new default kinematical reference frame.

See KVParticle::ChangeFrame() and KVParticle::SetFrame() for details.

Definition at line 815 of file KVEvent.cpp.

◆ Clear()

void KVEvent::Clear ( Option_t opt = "")
virtual

Reset the event to zero ready for new event. Any option string is passed on to the Clear() method of the particle objects in the TClonesArray fParticles.

Reimplemented from KVBase.

Definition at line 200 of file KVEvent.cpp.

◆ Copy()

void KVEvent::Copy ( TObject obj) const
virtual

Copy this to obj.

Reimplemented from KVBase.

Definition at line 116 of file KVEvent.cpp.

◆ CustomStreamer()

void KVEvent::CustomStreamer ( )
inline

Definition at line 443 of file KVEvent.h.

◆ DefineGroup() [1/2]

void KVEvent::DefineGroup ( const Char_t groupname,
const Char_t from = "" 
)

In the same philosophy as KVINDRAReconEvent::AcceptIDCodes() method allow to affiliate a group name to particles of the event if "from" is not null, a test of previously stored group name such as "OK" is checked

Definition at line 712 of file KVEvent.cpp.

◆ DefineGroup() [2/2]

void KVEvent::DefineGroup ( const Char_t groupname,
KVParticleCondition cond,
const Char_t from = "" 
)

In the same philosophy as KVINDRAReconEvent::AcceptIDCodes() method allow to affiliate using a KVParticleCondition a group name to particles of the event if "from" is not null, a test of previously stored group name such as "OK" is checked the method used in KVParticleCondition has to be compatible with the KVNucleus concerned class. This can be done using first KVParticleCondition::SetParticleClassName(const Char_t* cl)

Definition at line 736 of file KVEvent.cpp.

◆ end()

Iterator KVEvent::end ( ) const
inline

return iterator to end of event (a nullptr)

Definition at line 428 of file KVEvent.h.

◆ Factory()

KVEvent * KVEvent::Factory ( const char *  plugin)
static

Create and return pointer to new event of class given by plugin.

Definition at line 1194 of file KVEvent.cpp.

◆ FillHisto() [1/2]

void KVEvent::FillHisto ( TH1 h,
const Char_t KVNucleus_method,
const Char_t method_prototype,
const Char_t args,
Option_t opt = "" 
)

Fill histogram with values of given method with given prototype (e.g. method_prototype="int,int") and argument values e.g. args="2,4") for each particle in event.

If opt = "ok" only particles with IsOK()==kTRUE are considered. If opt = "name" only particles belonging to group "name" are considered.

Definition at line 445 of file KVEvent.cpp.

◆ FillHisto() [2/2]

void KVEvent::FillHisto ( TH1 h,
const Char_t KVNucleus_method,
Option_t opt = "" 
)

Fill histogram with values of the observable given by the indicated KVNucleus_method. For example: if the method is called this way - FillHisto(h,"GetZ") - it fills histogram with the charge of all particles in the current event.

If opt = "ok" only particles with IsOK()==kTRUE are considered. If opt = "name" only particles belonging to group "name" are considered.

Definition at line 403 of file KVEvent.cpp.

◆ FillIntegerList()

void KVEvent::FillIntegerList ( KVIntegerList IL,
Option_t opt 
)
virtual

Clear & fill the KVIntegerList with the contents of this event, the option will be passed to GetNextParticle(opt). IntegerList is then 'Update()'d. (This method was originally KVIntegerList::Fill(KVEvent*,Option_t*), it was moved here in order to make KVIntegerList a base class)

Definition at line 982 of file KVEvent.cpp.

◆ GetChannelQValue()

Double_t KVEvent::GetChannelQValue ( ) const

Calculate the Q-value [MeV] for this event as if all nuclei were produced by the decay of an initial compound nucleus containing the sum of all nuclei in the event, i.e. A -> a1 + a2 + a3 + ... We take into account any excitation energy of the nuclei of the event (see GetGSChannelQValue() for an alternative), i.e. we calculate Q = M(A) - ( m(a1) + m(a2) + m(a3) + ... ) where M(X) = ground state mass of X m(X) = M(X) + E*(X) If Q<0, the excitation energy of the initial compound nucleus, A, would have to be at least equal to (-Q) in order for the decay to occur. i.e. decay is possible if E*(A) > -Q

Examples
MicroStat_example.C, and MicroStat_example2.C.

Definition at line 1044 of file KVEvent.cpp.

◆ GetFrameName()

const Char_t* KVEvent::GetFrameName ( ) const
inline

Returns name of default kinematical frame for particles in event, if set (see KVEvent::SetFrameName)

Definition at line 488 of file KVEvent.h.

◆ GetGSChannelQValue()

Double_t KVEvent::GetGSChannelQValue ( ) const

Calculate the Q-value [MeV] for this event as if all nuclei were produced by the decay of an initial compound nucleus containing the sum of all nuclei in the event, i.e. A -> a1 + a2 + a3 + ... i.e. we calculate Q = M(A) - ( M(a1) + M(a2) + M(a3) + ... ) where M(X) = ground state mass of X If Q<0, the excitation energy of the initial compound nucleus, A, would have to be at least equal to (-Q) in order for the decay to occur. i.e. decay is possible if E*(A) > -Q

Definition at line 1087 of file KVEvent.cpp.

◆ GetGSMasses()

void KVEvent::GetGSMasses ( std::vector< Double_t > &  mass)
virtual

Fill vector with ground state mass of each nucleus of event (in MeV).

Definition at line 1016 of file KVEvent.cpp.

◆ GetMasses()

void KVEvent::GetMasses ( std::vector< Double_t > &  mass)
virtual

Fill vector with mass of each nucleus of event (in MeV) [note: this is the mass including any excitation energy, not ground state].

Definition at line 1001 of file KVEvent.cpp.

◆ GetMinimumOKMultiplicity()

Int_t KVEvent::GetMinimumOKMultiplicity ( ) const

Get minimum number of particles with IsOK()=kTRUE in event for it to be considered 'good' for analysis NB: if no minimum has been set, we return 1

Definition at line 666 of file KVEvent.cpp.

◆ GetMult()

Int_t KVEvent::GetMult ( Option_t opt = "") const
virtual

Returns multiplicity (number of particles) of event. If opt = "" (default), returns number of particles in TClonesArray* fParticles i.e. the value of fParticles->GetEntriesFast() (we assume there are no gaps in the list) If opt = "ok" only particles with IsOK()==kTRUE are included. If opt = "name" only particles belonging to group "name" are included.

Examples
MicroStat_example2.C.

Definition at line 278 of file KVEvent.cpp.

◆ GetMultiplicities()

void KVEvent::GetMultiplicities ( Int_t  mult[],
const TString species,
Option_t opt = "" 
)

Fill array mult[] with the number of each nuclear species in the comma-separated list in this event. Make sure that mult[] is large enough for the list.

Example: Int_t mult[4]; event.GetMultiplicities(mult, "1n,1H,2H,3H");

N.B. the species name must correspond to that given by KVNucleus::GetSymbol

If given, "opt" will be used to select particles ("OK" or groupname)

Definition at line 513 of file KVEvent.cpp.

◆ GetMultiplicity()

Int_t KVEvent::GetMultiplicity ( Int_t  Z,
Int_t  A = 0,
Option_t opt = "" 
)

Calculate the multiplicity of nuclei given Z (if A not given) or of nuclei with given Z & A (if given)

If opt = "ok" only particles with IsOK()==kTRUE are considered. If opt = "name" only particles belonging to group "name" are considered.

Definition at line 486 of file KVEvent.cpp.

◆ GetNextParticle()

KVNucleus * KVEvent::GetNextParticle ( Option_t opt = "") const

Use this method to iterate over the list of particles in the event After the last particle GetNextParticle() returns a null pointer and resets itself ready for a new iteration over the particle list.

If opt="" all particles are included in the iteration. If opt="ok" or "OK" only particles whose IsOK() method returns kTRUE are included.

Any other value of opt is interpreted as a (case-insensitive) particle group name: only particles with BelongsToGroup(opt) returning kTRUE are included.

If you want to start from the beginning again before getting to the end of the list, especially if you want to change the selection criteria, call method ResetGetNextParticle() before continuing. If you interrupt an iteration before the end, then start another iteration without calling ResetGetNextParticle(), even if you change the argument of the call to GetNextParticle(), you will repeat exactly the same iteration as the previous one.

WARNING: Only one iteration at a time over the event can be performed using this method. If you want/need to perform several i.e. nested iterations, use the KVEvent::Iterator class

Examples
MicroStat_example2.C.

Definition at line 564 of file KVEvent.cpp.

◆ GetNextParticleIterator()

KVEvent::Iterator KVEvent::GetNextParticleIterator ( Option_t opt) const

Provide correct iterator using same options as for GetNextParticle() method:

  • if opt="" (default) => iterator over all particles
  • if opt="ok"/"OK" => iterator for all "OK" particles
  • if opt!="" && opt!="ok"/"OK" => iterator for all particles in group with name given by opt (case-insensitive)

Definition at line 47 of file KVEvent.cpp.

◆ GetParameters()

KVNameValueList* KVEvent::GetParameters ( ) const
inline

Definition at line 391 of file KVEvent.h.

◆ GetParticle() [1/2]

KVNucleus * KVEvent::GetParticle ( const Char_t group_name) const

Find first particle in event belonging to group with name "group_name".

Definition at line 257 of file KVEvent.cpp.

◆ GetParticle() [2/2]

KVNucleus * KVEvent::GetParticle ( Int_t  npart) const

Access to event member with index npart (1<=npart<=GetMult() : error if out of bounds) This method may be overridden in event classes derived from KVEvent.

Definition at line 137 of file KVEvent.cpp.

◆ GetParticleWithName()

KVNucleus * KVEvent::GetParticleWithName ( const Char_t name) const

Find particle using its name (SetName()/GetName() methods) In case more than one particle has the same name, the first one found is returned.

Definition at line 242 of file KVEvent.cpp.

◆ GetPartitionName()

const Char_t * KVEvent::GetPartitionName ( )

return list of isotopes of the event with the format : symbol1(population1) symbol2(population2) .... if population==1, it is not indicated : Example : 15C 12C(2) 4He 3He 1H(4) 1n(3)

Definition at line 1123 of file KVEvent.cpp.

◆ GetSum() [1/2]

Double_t KVEvent::GetSum ( const Char_t KVNucleus_method,
const Char_t method_prototype,
const Char_t args,
Option_t opt = "" 
)

Returns sum over particles of the observable given by the indicated KVNucleus_method with given prototype (e.g. method_prototype="int,int") and argument values e.g. args="2,4")

If opt = "ok" only particles with IsOK()==kTRUE are considered. If opt = "name" only particles belonging to group "name" are considered.

Definition at line 357 of file KVEvent.cpp.

◆ GetSum() [2/2]

Double_t KVEvent::GetSum ( const Char_t KVNucleus_method,
Option_t opt = "" 
)

Returns sum over particles of the observable given by the indicated KVNucleus_method for example if the method is called this way GetSum("GetZ"), it returns the sum of the charge of particles in the current event

If opt = "ok" only particles with IsOK()==kTRUE are considered. If opt = "name" only particles belonging to group "name" are considered.

Examples
MicroStat_example2.C.

Definition at line 310 of file KVEvent.cpp.

◆ IsOK()

Bool_t KVEvent::IsOK ( )
virtual

Returns kTRUE if the event is OK for analysis. This means there must be at least MOKmin particles with IsOK()=kTRUE, where MOKmin is set by calling SetMinimumOKMultiplicity(Int_t) (value stored in parameter MIN_OK_MULT)

Definition at line 636 of file KVEvent.cpp.

◆ ls()

virtual void KVEvent::ls ( Option_t t = "") const
inlinevirtual

Reimplemented from TNamed.

Reimplemented in KVReconstructedEvent.

Definition at line 416 of file KVEvent.h.

◆ MakeEventBranch()

template<typename T >
static void KVEvent::MakeEventBranch ( TTree tree,
const TString branchname,
const TString classname,
T event,
Int_t  bufsize = 10000000 
)
inlinestatic

Use this method when adding a branch to a TTree to store KVEvent-derived objects.

Parameters
[in]treepointer to TTree
[in]branchnamename of branch to create
[in]classnamename of actual class of object pointed to by event
[in]eventpointer to a valid (constructed) KVEvent-derived object
[in]bufsizesize of buffer to use for branch [default: 10000000]

Definition at line 468 of file KVEvent.h.

◆ MergeEventFragments()

void KVEvent::MergeEventFragments ( TCollection events,
Option_t opt = "" 
)
virtual

Merge all events in the list into one event (this one) We also merge/sum the parameter lists of the events First we clear this event, then we fill it with copies of each particle in each event in the list. If option "opt" is given, it is given as argument to each call to KVEvent::Clear() - this option is then passed on to the Clear() method of each particle in each event. NOTE: the events in the list will be empty and useless after this!

Reimplemented in KVReconstructedEvent.

Definition at line 1164 of file KVEvent.cpp.

◆ Print()

void KVEvent::Print ( Option_t t = "") const
virtual

Print a list of all particles in the event with some characteristics. Optional argument t can be used to select particles (="ok", "groupname", ...)

Reimplemented from KVBase.

Reimplemented in KVTestEvent, KVSimEvent, KVReconstructedEvent, and KVINDRAReconEvent.

Definition at line 224 of file KVEvent.cpp.

◆ ResetEnergies()

void KVEvent::ResetEnergies ( )

Used for simulated events after "detection" by some multidetector array.

The passage of the event's particles through the different absorbers modifies their kinetic energies, indeed all those which are correctly identified by the detector actually stop. Calling this method will reset all the particles' energies to their initial value i.e. before they entered the first absorber. Particles which have not encountered any absorbers/detectors are left as they are.

Definition at line 688 of file KVEvent.cpp.

◆ ResetGetNextParticle()

void KVEvent::ResetGetNextParticle ( ) const

Reset iteration over event particles so that next call to GetNextParticle will begin a new iteration (possibly with different criteria).

Definition at line 618 of file KVEvent.cpp.

◆ SetFrame() [1/2]

void KVEvent::SetFrame ( const Char_t frame,
const KVFrameTransform ft 
)

Define a Lorentz-boosted and/or rotated frame for all "ok" particles in the event. See KVParticle::SetFrame() for details.

In order to access the kinematics in the boosted frame, use the GetFrame() method of the individual particles (see KVParticle::GetFrame()).

Examples
ExampleFilteredSimDataAnalysis.cpp.

Definition at line 762 of file KVEvent.cpp.

◆ SetFrame() [2/2]

void KVEvent::SetFrame ( const Char_t newframe,
const Char_t oldframe,
const KVFrameTransform ft 
)

Define a Lorentz-boosted frame "newframe" for all "ok" particles in the event. The transformation is applied to the particle coordinates in the existing frame "oldframe"

See KVParticle::SetFrame() for details.

In order to access the kinematics in the boosted frame, use the GetFrame() method of the individual particles in either of these ways : KVParticle* newframe = particle->GetFrame("newframe"); KVParticle* newframe = particle->GetFrame("oldframe")->GetFrame("newframe");

Definition at line 789 of file KVEvent.cpp.

◆ SetFrameName()

void KVEvent::SetFrameName ( const KVString name)

Set name of default frame for all particles in event After using this method, calls to KVParticle::GetFrame(name) will return the address of the particle in question, i.e. its default kinematics The default frame name is stored as a parameter "defaultFrame"

Definition at line 1215 of file KVEvent.cpp.

◆ SetMinimumOKMultiplicity()

void KVEvent::SetMinimumOKMultiplicity ( Int_t  x)

Set minimum number of particles with IsOK()=kTRUE in event for it to be considered 'good' for analysis

Definition at line 652 of file KVEvent.cpp.

◆ SetParameter()

template<typename ValType >
void KVEvent::SetParameter ( const Char_t name,
ValType  value 
) const
inline

Definition at line 484 of file KVEvent.h.

◆ UpdateAllFrames()

void KVEvent::UpdateAllFrames ( )

If the kinematics of particles in their default reference frame have been modified, call this method to update the kinematics in all defined reference frames.

See KVParticle::UpdateAllFrames() for details.

Definition at line 861 of file KVEvent.cpp.

Member Data Documentation

◆ fIter

Iterator KVEvent::fIter
mutableprotected

internal iterator used by GetNextParticle()

Definition at line 387 of file KVEvent.h.

◆ fParameters

KVNameValueList KVEvent::fParameters
protected

general-purpose list of parameters

Definition at line 181 of file KVEvent.h.

◆ fParticles

TClonesArray* KVEvent::fParticles
protected

array of particles in event

Definition at line 180 of file KVEvent.h.


The documentation for this class was generated from the following files: