Skip to content
Snippets Groups Projects
Commit fad386bc authored by Adrien Matta's avatar Adrien Matta :skull_crossbones:
Browse files

* Fixing SuperX3 back strip

parent 75febd47
No related branches found
No related tags found
No related merge requests found
Pipeline #172043 passed
...@@ -4,13 +4,13 @@ ...@@ -4,13 +4,13 @@
% Energy are given in MeV , Position in mm % % Energy are given in MeV , Position in mm %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Isotropic Isotropic
EnergyLow= 0.5 MeV EnergyLow= 5 MeV
EnergyHigh= 0.5 MeV EnergyHigh= 5 MeV
HalfOpenAngleMin= 25 deg HalfOpenAngleMin= 0 deg
HalfOpenAngleMax= 65 deg HalfOpenAngleMax= 180 deg
x0= 0 mm x0= 0 mm
y0= 0 mm y0= 0 mm
z0= 0 mm z0= -150 mm
Particle= alpha Particle= alpha
ExcitationEnergy= 0 MeV ExcitationEnergy= 0 MeV
......
...@@ -22,99 +22,107 @@ ...@@ -22,99 +22,107 @@
*---------------------------------------------------------------------------* *---------------------------------------------------------------------------*
* Comment: * * Comment: *
* See MUST2 array for exemple of VDetector derived class * * See MUST2 array for exemple of VDetector derived class *
* * * *
* Adding Fill Spectra Method to fill control Histogramm * * Adding Fill Spectra Method to fill control Histogramm *
*****************************************************************************/ *****************************************************************************/
// ROOT // ROOT
#include "TH1.h"
#include "TCanvas.h" #include "TCanvas.h"
// STL #include "TH1.h"
// STL
#include <map>
#include <string> #include <string>
#include <vector> #include <vector>
#include <map>
// NPL // NPL
#include "NPInputParser.h"
#include "NPCore.h" #include "NPCore.h"
#include "NPInputParser.h"
namespace NPL { namespace NPL {
class VDetector{ class VDetector {
public: public:
// Default Constructor and destructor
// Default Constructor and destructor VDetector();
VDetector() ; virtual ~VDetector();
virtual ~VDetector() ;
// Read stream at ConfigFile to pick-up parameters of detector (Position,...) using Token
// Read stream at ConfigFile to pick-up parameters of detector (Position,...) using Token virtual void ReadConfiguration(NPL::InputParser){};
virtual void ReadConfiguration(NPL::InputParser) {} ;
// Add Parameter to the CalibrationManger
// Add Parameter to the CalibrationManger virtual void AddParameterToCalibrationManager(){};
virtual void AddParameterToCalibrationManager() {} ;
// Activated associated Branches and link it to the private member DetectorData address
// Activated associated Branches and link it to the private member DetectorData address // In this method mother Branches (Detector) AND daughter leaf (fDetector_parameter) have to be activated
// In this method mother Branches (Detector) AND daughter leaf (fDetector_parameter) have to be activated virtual void InitializeRootInputRaw(){};
virtual void InitializeRootInputRaw() {} ;
// Activated associated Branches and link it to the private member DetectorPhysics address
// Activated associated Branches and link it to the private member DetectorPhysics address // In this method mother Branches (Detector) AND daughter leaf (parameter) have to be activated
// In this method mother Branches (Detector) AND daughter leaf (parameter) have to be activated virtual void InitializeRootInputPhysics(){};
virtual void InitializeRootInputPhysics() {} ;
// Create associated branches and associated private member DetectorPhysics address
// Create associated branches and associated private member DetectorPhysics address virtual void InitializeRootOutput(){};
virtual void InitializeRootOutput() {} ;
// This method is called at each event read from the Input Tree. Aime is to build treat Raw dat in order to extract
// This method is called at each event read from the Input Tree. Aime is to build treat Raw dat in order to extract physical parameter. // physical parameter.
virtual void BuildPhysicalEvent() {} ; virtual void BuildPhysicalEvent(){};
// Same as above, but only the simplest event and/or simple method are used (low multiplicity, faster algorythm but less efficient ...). // Same as above, but only the simplest event and/or simple method are used (low multiplicity, faster algorythm but
// This method aimed to be used for analysis performed during experiment, when speed is requiered. // less efficient ...). This method aimed to be used for analysis performed during experiment, when speed is
// NB: This method can eventually be the same as BuildPhysicalEvent. // requiered. NB: This method can eventually be the same as BuildPhysicalEvent.
virtual void BuildSimplePhysicalEvent() {} ; virtual void BuildSimplePhysicalEvent(){};
// Those two method all to clear the Event Physics or Data // Those two method all to clear the Event Physics or Data
virtual void ClearEventPhysics() {} ; virtual void ClearEventPhysics(){};
virtual void ClearEventData() {} ; virtual void ClearEventData(){};
// Method related to the TSpectra classes, aimed at providing a framework for online applications // Method related to the TSpectra classes, aimed at providing a framework for online applications
// Instantiate the Spectra class and the histogramm throught it // Instantiate the Spectra class and the histogramm throught it
virtual void InitSpectra() {}; virtual void InitSpectra(){};
// Fill the spectra hold by the spectra class // Fill the spectra hold by the spectra class
virtual void FillSpectra() {}; virtual void FillSpectra(){};
// Write the spectra to a file // Write the spectra to a file
virtual void WriteSpectra() {}; virtual void WriteSpectra(){};
// Used for Online mainly, perform check on the histo and for example change their color if issues are found // Used for Online mainly, perform check on the histo and for example change their color if issues are found
virtual void CheckSpectra() {}; virtual void CheckSpectra(){};
// Used for Online only, clear all the spectra hold by the Spectra class // Used for Online only, clear all the spectra hold by the Spectra class
virtual void ClearSpectra() {}; virtual void ClearSpectra(){};
// Used for Online only, get all the spectra hold by the Spectra class // Used for Online only, get all the spectra hold by the Spectra class
virtual std::map< std::string , TH1*> GetSpectra() {std::map< std::string, TH1* > x; return x;}; virtual std::map<std::string, TH1*> GetSpectra() {
// Used for Online only, get all the canvases std::map<std::string, TH1*> x;
virtual std::vector<TCanvas*> GetCanvas(){std::vector<TCanvas*> x ; return x;}; return x;
// Used for interoperability with other framework };
virtual void SetRawDataPointer(void*) {}; // Used for Online only, get all the canvases
virtual std::vector<TCanvas*> GetCanvas() {
private: // The list below is here to help you building your own detector std::vector<TCanvas*> x;
/* return x;
// GRU and Simulated Tree output are made of Data Object wich contain all the RAW parameter output by Detectors during an experiment. };
// You need to add a pointer to those kind of object in order to received data from the Tree at each getEntry call. Just replace Detector // Used for interoperability with other framework
// by your Detector name, like Must2Data for Must2 virtual void SetRawDataPointer(void*){};
DetectorData* EventData ; private: // The list below is here to help you building your own detector
/*
// Position of detector: An array which held geometric information of detector, such as Strip position,... // GRU and Simulated Tree output are made of Data Object wich contain all the RAW parameter output by Detectors
// Dimension must be suited for your need during an experiment.
// You need to add a pointer to those kind of object in order to received data from the Tree at each getEntry
vector< vector <double > > DetectorPosition ; call. Just replace Detector
// by your Detector name, like Must2Data for Must2
// Calibration are passed to the EventPhysics Object, so you don't need to store them here
DetectorData* EventData ;
nothing noCalibration ;
// Position of detector: An array which held geometric information of detector, such as Strip position,...
*/ // Dimension must be suited for your need
ClassDef(VDetector,1)
vector< vector <double > > DetectorPosition ;
// Calibration are passed to the EventPhysics Object, so you don't need to store them here
nothing noCalibration ;
*/
ClassDef(VDetector, 1)
}; };
} } // namespace NPL
#endif #endif
...@@ -311,12 +311,12 @@ void SuperX3::ReadSensitive(const G4Event*) { ...@@ -311,12 +311,12 @@ void SuperX3::ReadSensitive(const G4Event*) {
m_Event->SetDownE(det, strip, energy); m_Event->SetDownE(det, strip, energy);
m_Event->SetDownT(det, strip, time); m_Event->SetDownT(det, strip, time);
} }
auto sizeBack = backstrip->GetWidthMult(); auto sizeBack = backstrip->GetLengthMult();
for (unsigned int i = 0; i < sizeBack; i++) { for (unsigned int i = 0; i < sizeBack; i++) {
double energy = backstrip->GetEnergyWidth(i); double energy = backstrip->GetEnergyLength(i);
double time = backstrip->GetTimeWidth(i); double time = backstrip->GetTimeLength(i);
int det = backstrip->GetDetectorWidth(i); int det = backstrip->GetDetectorLength(i);
int strip = backstrip->GetStripWidth(i); int strip = backstrip->GetStripLength(i);
m_Event->SetBackE(det, strip, energy); m_Event->SetBackE(det, strip, energy);
m_Event->SetBackT(det, strip, time); m_Event->SetBackT(det, strip, time);
} }
...@@ -340,7 +340,7 @@ void SuperX3::InitializeScorers() { ...@@ -340,7 +340,7 @@ void SuperX3::InitializeScorers() {
G4VPrimitiveScorer* resistivestrip = G4VPrimitiveScorer* resistivestrip =
new DSSDScorers::PS_Resistive("resistivestrip", 1, SiliconFaceLength, SiliconFaceWidth, NbStrips); new DSSDScorers::PS_Resistive("resistivestrip", 1, SiliconFaceLength, SiliconFaceWidth, NbStrips);
G4VPrimitiveScorer* backstrip = G4VPrimitiveScorer* backstrip =
new DSSDScorers::PS_Rectangle("backstrip", 1, SiliconFaceLength, 1, SiliconFaceWidth, 4); new DSSDScorers::PS_Rectangle("backstrip", 1, SiliconFaceLength, SiliconFaceWidth, 4, 1);
G4VPrimitiveScorer* interaction = new InteractionScorers::PS_Interactions("Interaction", ms_InterCoord, 0); G4VPrimitiveScorer* interaction = new InteractionScorers::PS_Interactions("Interaction", ms_InterCoord, 0);
//... resistive ends...... //... resistive ends......
......
...@@ -11,7 +11,7 @@ Beam ...@@ -11,7 +11,7 @@ Beam
MeanPhiY= 0 deg MeanPhiY= 0 deg
MeanX= 0 mm MeanX= 0 mm
MeanY= 0 mm MeanY= 0 mm
ZEmission= 0mm
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
QFSReaction QFSReaction
Beam= 12C Beam= 12C
......
%%%%%%% %%%%%%%
Target Target
THICKNESS= 1 micrometer THICKNESS= 0.1 micrometer
ANGLE= 0 deg ANGLE= 0 deg
RADIUS= 15 mm RADIUS= 15 mm
MATERIAL= CD2 MATERIAL= CD2
...@@ -11,9 +11,9 @@ Target ...@@ -11,9 +11,9 @@ Target
%%%%%%% Detector 1 %%%%%%% %%%%%%% Detector 1 %%%%%%%
SuperX3 SuperX3
THETA= 150 THETA= 0 deg
PHI= 0 PHI= 0 deg
R= 150 R= 150 mm
BETA= 0 0 0 BETA= 0 0 0
VIS= all VIS= all
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment