4#include "KVINDRAGroupReconstructor.h"
5#include "KVCalibratedSignal.h"
7#include <KVIDINDRACsI.h>
8#include <KVINDRADetector.h>
76 *(new_part->GetIdentificationResult(1)) = idr;
102 std::cout <<
" GAMMA\n\n";
105 auto traj = (
KVGeoDNTrajectory*)
d->GetStoppingDetector()->GetNode()->GetTrajectories()->First();
107 std::cout << idt << std::endl;
108 std::cout <<
"Type: " <<
d->GetStoppingDetector()->GetType() << std::endl;
109 std::cout <<
"Fired: " <<
d->GetStoppingDetector()->Fired(
GetPartSeedCond()) << std::endl;
110 std::cout <<
"ReadyforID: " <<
d->GetIdentifyingTelescope()->IsReadyForID() << std::endl;
221 idr->
SetComment(
Form(
"Z=%d identified without mass discrimination (due to CsI crystal defects)", z));
338 auto input_signal = ((
KVCalibratedSignal*)csi->GetDetectorSignal(
"Energy"))->GetInputSignal();
339 Double_t half_light = input_signal->GetValue(
Form(
"Z=%d,A=%d",
n->GetZ(),
n->GetA())) * 0.5;
341 double ecsi = 2.*csi->GetCorrectedEnergy(&tmp, half_light,
kFALSE);
char * Form(const char *fmt,...)
virtual Bool_t IsType(const Char_t *typ) const
Output signal from detector obtained by calibration.
Base class for detector geometry description.
virtual Double_t GetMaxDeltaE(Int_t Z, Int_t A)
virtual Bool_t Fired(Option_t *opt="any") const
Double_t GetDetectorSignalValue(const KVString &type, const KVNameValueList ¶ms="") const
virtual void SetEResAfterDetector(Double_t e)
virtual Double_t GetDeltaEFromERes(Int_t Z, Int_t A, Double_t Eres)
void SetAnalysed(Bool_t b=kTRUE)
virtual Double_t GetCorrectedEnergy(KVNucleus *, Double_t e=-1., Bool_t transmission=kTRUE)
KVNameValueList * GetParameters() const
Path taken by particles through multidetector geometry.
const KVSeqCollection * GetIDTelescopes() const
Information on relative positions of detectors & particle trajectories.
const Char_t * GetName() const
Name of node is same as name of associated detector.
KVDetector * GetDetector() const
virtual KVReconstructedNucleus * ReconstructTrajectory(const KVGeoDNTrajectory *traj, const KVGeoDetectorNode *node)
KVIDTelescope * identifying_telescope
telescope which identified current particle
std::unordered_map< std::string, KVIdentificationResult * > id_by_type
identification results by type for current particle
int nfireddets
number of fired detectors in group for current event
KVReconstructedEvent * GetEventFragment() const
Double_t GetTargetEnergyLossCorrection(KVReconstructedNucleus *ion)
void SetCalibrationStatus(KVReconstructedNucleus &PART, UShort_t code)
virtual void IdentifyParticle(KVReconstructedNucleus &)
TString GetPartSeedCond() const
KVIdentificationResult partID
identification to be applied to current particle
virtual Bool_t Identify(KVIdentificationResult *, Double_t x=-1., Double_t y=-1.)
Base class for all detectors or associations of detectors in array which can identify charged particl...
virtual Bool_t IsReadyForID()
Reconstruct particles in INDRA groups.
void SetNoCalibrationStatus(KVReconstructedNucleus *n)
void IdentifyParticle(KVReconstructedNucleus &PART)
Bool_t CalculateChIoDEFromResidualEnergy(KVReconstructedNucleus *n, Double_t ERES)
double DoBeryllium8Calibration(KVReconstructedNucleus *n)
static TString CSI_ID_TYPE
virtual bool DoCoherencyAnalysis(KVReconstructedNucleus &)=0
void CalibrateParticle(KVReconstructedNucleus *PART)
void CheckCsIEnergy(KVReconstructedNucleus *n)
KVDetector * GetCsI(KVReconstructedNucleus *n)
virtual void DoCalibration(KVReconstructedNucleus *)
void SetBadCalibrationStatus(KVReconstructedNucleus *n)
KVReconstructedNucleus * ReconstructTrajectory(const KVGeoDNTrajectory *traj, const KVGeoDetectorNode *node)
KVDetector * theChio
the ChIo of the group
@ NORMAL_CALIBRATION
normal well-calibrated particle with no problems
@ WARNING_CSI_MAX_ENERGY
particle calibration OK, although apparent energy would mean punching through the CsI
@ WARNING_CSI_NO_MASS_ID
particle identified in CsI only in Z, not in A, therefore calculated energy untrustworthy
@ SOME_ENERGY_LOSSES_CALCULATED
particle calibration OK, with some detector energies calculated
@ ID_CSI_PSA
particle identified in CsI detector by pulse shape analysis
@ NO_IDENTIFICATION
no identification either attempted or available for particle
@ ID_CSI_FRAGMENT
particle partially identified in CsI detector, with Z greater than identifiable
@ ID_GAMMA
'gamma' particle detected in CsI
@ ID_CSI_MASS_OUT_OF_RANGE
particle partially identified in CsI detector, mass out of range of apparent Z (pile-up?...
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
void SetComment(const Char_t *c)
Bool_t IdentifyingGridHasFlagWhichBegins(TString flag_beginning)
Bool_t Aident
= kTRUE if A of particle established
TString IdentifyingGridGetFlagWhichBegins(TString flag_beginning)
Int_t Z
Z of particle found (if Zident==kTRUE)
Int_t IDquality
specific quality code returned by identification procedure
Int_t IDcode
a general identification code for this type of identification
Bool_t Zident
=kTRUE if Z of particle established
void IncrementValue(const Char_t *name, value_type value)
Description of properties and kinematics of atomic nuclei.
Int_t GetZ() const
Return the number of proton / atomic number.
Double_t GetEnergy() const
void SetParameter(const Char_t *name, ValType value) const
void SetEnergy(Double_t e)
Nuclei reconstructed from data measured by a detector array .
virtual void SetIDCode(UShort_t s)
void SetIdentification(KVIdentificationResult *, KVIDTelescope *)
Bool_t IsIdentified() const
virtual Int_t GetIDCode() const
virtual void SetTargetEnergyLoss(Double_t e)
virtual void GetAnglesFromReconstructionTrajectory(Option_t *opt="random")
const KVReconNucTrajectory * GetReconstructionTrajectory() const
virtual TObject * FindObjectByType(const Char_t *) const
Extension of ROOT TString class which allows backwards compatibility with ROOT v3....
void Begin(TString delim) const
KVString Next(Bool_t strip_whitespace=kFALSE) const
const char * Data() const