1#include "KVGroupReconstructor.h"
2#include "KVMultiDetArray.h"
19 :
KVBase(
"KVGroupReconstructor",
"Reconstruction of particles in detector groups"),
20 fGroup(nullptr), fGrpEvent(nullptr)
346 nuc = it.get_pointer();
405 TIter next(idt_list);
407 Int_t n_success_id = 0;
417 if (IDR->
IDOK) n_success_id++;
422 if (n_success_id < 1 &&
480 Int_t zmin =
d.GetStoppingDetector()->FindZmin(-1.,
d.GetMassFormula());
519 if (!
d.IsIdentified()) {
545 if (
d.IsIdentified() && !
d.IsCalibrated()) {
589 if (!array->
GetTarget() || !ion)
return 0.0;
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t g
Base class for KaliVeda framework.
virtual const Char_t * GetType() const
static TPluginHandler * LoadPlugin(const Char_t *base, const Char_t *uri="0")
Base class for detector geometry description.
virtual Bool_t Fired(Option_t *opt="any") const
Path taken by particles through multidetector geometry.
KVGeoDetectorNode * GetNodeInFront(const KVGeoDetectorNode *n) const
const KVSeqCollection * GetIDTelescopes() const
void IterateFrom(const KVGeoDetectorNode *node0=nullptr) const
Int_t GetNumberOfIdentifications() const
KVGeoDetectorNode * GetNextNode() const
Information on relative positions of detectors & particle trajectories.
KVDetector * GetDetector() const
Int_t GetNTraj() const
Returns number of trajectories passing through this node.
Base class for particle reconstruction in one group of a detector array.
virtual KVReconstructedNucleus * ReconstructTrajectory(const KVGeoDNTrajectory *traj, const KVGeoDetectorNode *node)
KVGroup * GetGroup() const
KVReconstructedEvent * fGrpEvent
event containing particles reconstructed in this group
static bool fDoCalibration
KVIDTelescope * identifying_telescope
telescope which identified current particle
void ReconstructParticle(KVReconstructedNucleus *part, const KVGeoDNTrajectory *traj, const KVGeoDetectorNode *node)
std::unordered_map< std::string, KVIdentificationResult * > id_by_type
identification results by type for current particle
virtual void CalibrateParticle(KVReconstructedNucleus *)
virtual void AddCoherencyParticles()
int nfireddets
number of fired detectors in group for current event
KVGroup * fGroup
the group where we are reconstructing
static bool fDoIdentification
void Calibrate()
Calculate and set energies of all identified but uncalibrated particles in event.
virtual ~KVGroupReconstructor()
Destructor.
KVReconstructedEvent * GetEventFragment() const
TString fPartSeedCond
condition for seeding reconstructed particles
Double_t GetTargetEnergyLossCorrection(KVReconstructedNucleus *ion)
virtual void IdentifyParticle(KVReconstructedNucleus &)
void SetReconEventClass(TClass *c)
Instantiate event fragment object.
TString GetPartSeedCond() const
KVIdentificationResult partID
identification to be applied to current particle
Int_t GetNUnidentifiedInGroup()
KVGroupReconstructor()
Default constructor.
void TreatStatusStopFirstStage(KVReconstructedNucleus &)
virtual void PostReconstructionProcessing()
static KVGroupReconstructor * Factory(const TString &plugin="")
virtual void SetGroup(KVGroup *g)
std::vector< particle_to_add_from_coherency_analysis > coherency_particles
Group of detectors which can be treated independently of all others in array.
const KVGeoDNTrajectory * GetTrajectoryForReconstruction(const KVGeoDNTrajectory *t, const KVGeoDetectorNode *n) const
KVGeoStrucElement * GetArray() const
Base class for all detectors or associations of detectors in array which can identify charged particl...
virtual Bool_t IsReadyForID()
virtual Bool_t Identify(KVIdentificationResult *, Double_t x=-1., Double_t y=-1.)
Bool_t HasDetector(const KVDetector *d) const
Full result of one attempted particle identification.
Bool_t IDattempted
=kTRUE if identification was attempted
Bool_t IDOK
general quality of identification, =kTRUE if acceptable identification made
Bool_t Aident
= kTRUE if A of particle established
Double_t PID
= "real" Z if Zident==kTRUE and Aident==kFALSE, "real" A if Zident==Aident==kTRUE
Int_t Z
Z of particle found (if Zident==kTRUE)
Int_t IDcode
a general identification code for this type of identification
Bool_t Zident
=kTRUE if Z of particle established
Base class for describing the geometry of a detector array.
Double_t GetEnergy() const
void SetParameter(const Char_t *name, ValType value) const
Path through detector array used to reconstruct detected particle.
Event containing KVReconstructedNucleus nuclei reconstructed from hits in detectors.
Nuclei reconstructed from data measured by a detector array .
void SetReconstructionTrajectory(const KVReconNucTrajectory *t)
Method called in initial reconstruction of particle.
KVIdentificationResult * GetIdentificationResult(Int_t i)
void SetNSegDet(Int_t seg)
KVDetector * GetStoppingDetector() const
void SetDetector(int i, KVDetector *);
void SetIdentification(KVIdentificationResult *, KVIDTelescope *)
Bool_t IsIdentified() const
@ kStatusOKafterShare
of energy losses of other particles in the same group which have Status=0
@ kStatusStopFirstStage
(arbitrarily) between this and the other particle(s) with Status=2
const KVReconNucTrajectory * GetReconstructionTrajectory() const
KaliVeda extensions to ROOT collection classes.
virtual TObject * Last() const
virtual TObject * First() const
virtual Double_t GetParticleEIncFromERes(KVNucleus *, TVector3 *norm=0)
Wrapper class for iterating over nuclei in KVReconstructedEvent accessed through base pointer or refe...
virtual Int_t GetEntries() const
const char * GetName() const override
Longptr_t ExecPlugin(int nargs)
Double_t Max(Double_t a, Double_t b)