4 #include "KVINDRAGroupReconstructor.h"
5 #include "KVCalibratedSignal.h"
7 #include <KVIDINDRACsI.h>
8 #include <KVINDRADetector.h>
76 *(new_part->GetIdentificationResult(1)) = idr;
98 if (!
d->IsIdentified())
d->SetIDCode(KVINDRA::IDCodes::NO_IDENTIFICATION);
100 if (
d->GetIDCode() == KVINDRA::IDCodes::ID_CSI_PSA &&
d->GetZ() == 0) {
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;
185 partID.
IDcode = KVINDRA::IDCodes::ID_CSI_MASS_OUT_OF_RANGE;
197 PART.
SetIDCode(KVINDRA::IDCodes::NO_IDENTIFICATION);
217 idr->
IDcode = KVINDRA::IDCodes::ID_CSI_PSA;
221 idr->
SetComment(
Form(
"Z=%d identified without mass discrimination (due to CsI crystal defects)", z));
228 idr->
IDcode = KVINDRA::IDCodes::ID_CSI_FRAGMENT;
235 idr->
IDcode = KVINDRA::IDCodes::ID_CSI_MASS_OUT_OF_RANGE;
272 n->SetECode(KVINDRA::ECodes::SOME_ENERGY_LOSSES_CALCULATED);
297 if (PART->
GetIDCode() != KVINDRA::IDCodes::ID_CSI_FRAGMENT && PART->
GetIDCode() != KVINDRA::IDCodes::ID_CSI_MASS_OUT_OF_RANGE) {
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);
368 if (
n->GetIDCode() == KVINDRA::IDCodes::ID_CSI_PSA && !
n->IsAMeasured()) {
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
KVReconstructedEvent * GetEventFragment() const
int nfireddets
number of fired detectors in group for current event
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
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)
const KVReconNucTrajectory * GetReconstructionTrajectory() const
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")
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