23#include "KVFAZIAReconNuc.h"
26#include "KVDetector.h"
27#include "KVMultiDetArray.h"
28#include "KVFAZIADetector.h"
29#include "KVIDZAGrid.h"
30#include "KVLightEnergyCsIFull.h"
31#include "KVLightEnergyCsI.h"
56 fECSI = fESI1 = fESI2 = 0.;
122 cout <<
" =======> ";
126 else cout <<
" Zreal=" <<
GetRealZ();
130 cout <<
"(unidentified)" << endl;
138 cout <<
"(uncalibrated)" << endl;
141 cout <<
"Analysis : ";
145 "Particle alone in group, or identification independently of other"
147 cout <<
"particles in group is directly possible." << endl;
151 cout <<
"Particle status code" <<
GetStatus() << endl;
156 "-------------------------------------------------------------------------------"
340 Obsolete(
"Identify",
"1.13",
"1.15");
438 if (IDsi && IDsi->
IDOK) {
454 if (IDsisi && IDsisi->
IDOK) {
459 else if (IDsi && IDsi->
IDOK) {
487 if (IDsicsi && IDsicsi->
IDOK) {
491 else if (IDcsi && IDcsi->
IDOK && IDcsi->
Z <= 2) {
653 double error_si1 = 0;
655 for (
Int_t ii = 0; ii < ntot; ii += 1) eloss[ii] = 0;
659 Int_t ndet_calib = 0;
672 if (ndet_calib == 1) {
690 punch_through =
kTRUE;
692 else if (chi2 > 10.) {
697 else check_error =
kTRUE;
751 double error_si1 = 0, error_si2 = 0;
753 for (
Int_t ii = 0; ii < ntot; ii += 1) eloss[ii] = 0;
758 Int_t ndet_calib = 0;
766 eloss[ntot - ndet - 1] = det->
GetEnergy();
768 fESI1 = eloss[ntot - ndet - 1];
772 fESI2 = eloss[ntot - ndet - 1];
774 etot += eloss[ntot - ndet - 1];
779 if (idet == ntot)
break;
782 if (ndet == ndet_calib) {
790 for (
Int_t nn = ntot - 1; nn >= 0; nn -= 1) {
794 chi2 +=
TMath::Power((eloss[ntot - 1 - nn] - temp) / eloss[ntot - 1 - nn], 2.);
803 punch_through =
kTRUE;
805 else if (chi2 > 10.) {
810 else check_error =
kTRUE;
834 else if (ndet_calib == 1) {
918 double error_si1 = 0, error_si2 = 0;
920 for (
Int_t ii = 0; ii < ntot; ii += 1) eloss[ii] = 0;
925 Int_t ndet_calib = 0;
935 eloss[ntot - ndet - 1] = det->
GetEnergy();
937 fESI1 = eloss[ntot - ndet - 1];
940 fESI2 = eloss[ntot - ndet - 1];
943 etot += eloss[ntot - ndet - 1];
949 if (idet == ntot)
break;
953 if (ndet == ndet_calib) {
961 for (
Int_t nn = ntot - 1; nn >= 0; nn -= 1) {
965 chi2 +=
TMath::Power((eloss[ntot - 1 - nn] - temp) / eloss[ntot - 1 - nn], 2.);
974 punch_through =
kTRUE;
976 else if (chi2 > 10.) {
981 else check_error =
kTRUE;
1006 else if (ndet_calib == 2) {
1029 else if (ndet_calib == 1) {
1091 Obsolete(
"CalibrateCsI_Light",
"1.11",
"1.12");
const Char_t * GetDataSetEnv(const Char_t *type, const Char_t *defval="") const
virtual Double_t GetELostByParticle(KVNucleus *, TVector3 *norm=0)
virtual Double_t GetEnergy() const
Bool_t IsCalibrated() const
virtual Double_t GetDeltaEFromERes(Int_t Z, Int_t A, Double_t Eres)
Base class for FAZIA detectors.
Int_t GetIdentifier() const
void ComputePSA()
Perform Pulse Shape Analysis on all signals.
virtual void CalibrateCsI_Heavy()
Int_t GetIdentifierOfStoppingDetector() const
Bool_t StoppedIn(const Char_t *dettype) const
Returns kTRUE if particle stopped in the given detector: "SI1", "SI2" or "CSI".
KVFAZIADetector * Get(const Char_t *label) const
virtual Bool_t CoherencySiSi(KVIdentificationResult &theID)
virtual Bool_t CoherencySiCsI(KVIdentificationResult &theID)
printf("Check CSI\n");
virtual ~KVFAZIAReconNuc()
dtor
void ComputePSA()
Perform Pulse Shape Analysis for all detectors hit by this particle.
virtual void CalibrateCsI()
void init()
default initialisations
virtual void Clear(Option_t *t="")
reset nucleus' properties
KVFAZIADetector * GetSI1() const
Float_t fECSI
csi contribution to energy
Bool_t StoppedInSI2() const
KVFAZIAReconNuc()
default ctor
virtual void CalibrateSi1()
virtual void Copy(TObject &) const
virtual void CalibrateCsI_Light()
KVFAZIADetector * GetSI2() const
virtual void CalibrateSi2()
KVFAZIADetector * GetCSI() const
Bool_t StoppedInCSI() const
Bool_t StoppedInSI1() const
void Print(Option_t *option="") const
Print information on particle.
Float_t fESI2
si2 contribution to energy
virtual Bool_t CoherencySi(KVIdentificationResult &theID)
Float_t fESI1
si1 contribution to energy
Full result of one attempted particle identification.
Bool_t IDOK
general quality of identification, =kTRUE if acceptable identification made
Int_t Z
Z of particle found (if Zident==kTRUE)
virtual Double_t GetEResFromDeltaE(Int_t Z, Int_t A, Double_t dE=-1.0, enum SolType type=kEmax)
virtual Double_t GetTargetEnergyLossCorrection(KVReconstructedNucleus *)
Description of properties and kinematics of atomic nuclei.
void SetZAandE(Int_t z, Int_t a, Double_t ekin)
Set atomic number, mass number, and kinetic energy in MeV.
Int_t GetZ() const
Return the number of proton / atomic number.
Double_t GetTheta() const
Double_t GetEnergy() const
void SetKE(Double_t ecin)
void SetEnergy(Double_t e)
Nuclei reconstructed from data measured by a detector array .
virtual Double_t GetTargetEnergyLoss() const
KVIdentificationResult * GetIdentificationResult(Int_t i)
virtual void Copy(TObject &) const
KVDetector * GetStoppingDetector() const
void SetDetector(int i, KVDetector *);
Bool_t IsCalibrated() const
Bool_t IsIdentified() const
virtual void SetTargetEnergyLoss(Double_t e)
virtual void GetAnglesFromReconstructionTrajectory(Option_t *opt="random")
KVDetector * GetDetector(const TString &label) const
virtual void Clear(Option_t *option="")
const KVSeqCollection * GetDetectorList() const
virtual Bool_t IsAMeasured() const
virtual void SetECode(UChar_t s)
virtual TObject * FindObjectByLabel(const Char_t *) const
void Obsolete(const char *method, const char *asOfVers, const char *removedFromVers) const
Double_t Power(Double_t x, Double_t y)