mirror of
https://github.com/sesps/SPS_SABRE_EventBuilder.git
synced 2024-11-22 10:08:50 -05:00
Added a nudge parameter
This commit is contained in:
parent
f053847fb9
commit
673b12af93
|
@ -369,7 +369,7 @@ namespace EventBuilder {
|
||||||
startIndex = 0;
|
startIndex = 0;
|
||||||
CoincEvent this_event;
|
CoincEvent this_event;
|
||||||
SlowSort coincidizer(m_params.slowCoincidenceWindow, m_params.channelMapFile);
|
SlowSort coincidizer(m_params.slowCoincidenceWindow, m_params.channelMapFile);
|
||||||
SFPAnalyzer analyzer(m_params.ZT, m_params.AT, m_params.ZP, m_params.AP, m_params.ZE, m_params.AE, m_params.beamEnergy, m_params.spsAngle, m_params.BField);
|
SFPAnalyzer analyzer(m_params);
|
||||||
|
|
||||||
std::vector<TParameter<Double_t>> parvec;
|
std::vector<TParameter<Double_t>> parvec;
|
||||||
parvec.reserve(9);
|
parvec.reserve(9);
|
||||||
|
@ -459,7 +459,7 @@ namespace EventBuilder {
|
||||||
std::vector<CoincEvent> fast_events;
|
std::vector<CoincEvent> fast_events;
|
||||||
SlowSort coincidizer(m_params.slowCoincidenceWindow, m_params.channelMapFile);
|
SlowSort coincidizer(m_params.slowCoincidenceWindow, m_params.channelMapFile);
|
||||||
FastSort speedyCoincidizer(m_params.fastCoincidenceWindowSABRE, m_params.fastCoincidenceWindowIonCh);
|
FastSort speedyCoincidizer(m_params.fastCoincidenceWindowSABRE, m_params.fastCoincidenceWindowIonCh);
|
||||||
SFPAnalyzer analyzer(m_params.ZT, m_params.AT, m_params.ZP, m_params.AP, m_params.ZE, m_params.AE, m_params.beamEnergy, m_params.spsAngle, m_params.BField);
|
SFPAnalyzer analyzer(m_params);
|
||||||
|
|
||||||
std::vector<TParameter<Double_t>> parvec;
|
std::vector<TParameter<Double_t>> parvec;
|
||||||
parvec.reserve(9);
|
parvec.reserve(9);
|
||||||
|
|
|
@ -72,6 +72,7 @@ namespace EventBuilder {
|
||||||
m_params.BField = data["BField(kG)"].as<double>();
|
m_params.BField = data["BField(kG)"].as<double>();
|
||||||
m_params.beamEnergy = data["BeamEnergy(MeV)"].as<double>();
|
m_params.beamEnergy = data["BeamEnergy(MeV)"].as<double>();
|
||||||
m_params.spsAngle = data["SPSAngle(deg)"].as<double>();
|
m_params.spsAngle = data["SPSAngle(deg)"].as<double>();
|
||||||
|
m_params.nudge = data["Nudge(cm)"].as<double>();
|
||||||
m_params.runMin = data["MinRun"].as<int>();
|
m_params.runMin = data["MinRun"].as<int>();
|
||||||
m_params.runMax = data["MaxRun"].as<int>();
|
m_params.runMax = data["MaxRun"].as<int>();
|
||||||
|
|
||||||
|
@ -116,6 +117,7 @@ namespace EventBuilder {
|
||||||
yamlStream << YAML::Key << "BField(kG)" << YAML::Value << m_params.BField;
|
yamlStream << YAML::Key << "BField(kG)" << YAML::Value << m_params.BField;
|
||||||
yamlStream << YAML::Key << "BeamEnergy(MeV)" << YAML::Value << m_params.beamEnergy;
|
yamlStream << YAML::Key << "BeamEnergy(MeV)" << YAML::Value << m_params.beamEnergy;
|
||||||
yamlStream << YAML::Key << "SPSAngle(deg)" << YAML::Value << m_params.spsAngle;
|
yamlStream << YAML::Key << "SPSAngle(deg)" << YAML::Value << m_params.spsAngle;
|
||||||
|
yamlStream << YAML::Key << "Nudge(cm)" << YAML::Value << m_params.nudge;
|
||||||
yamlStream << YAML::Key << "MinRun" << YAML::Value << m_params.runMin;
|
yamlStream << YAML::Key << "MinRun" << YAML::Value << m_params.runMin;
|
||||||
yamlStream << YAML::Key << "MaxRun" << YAML::Value << m_params.runMax;
|
yamlStream << YAML::Key << "MaxRun" << YAML::Value << m_params.runMax;
|
||||||
yamlStream << YAML::EndMap;
|
yamlStream << YAML::EndMap;
|
||||||
|
|
|
@ -40,7 +40,7 @@ namespace EventBuilder {
|
||||||
//requires (Z,A) for T, P, and E, as well as energy of P,
|
//requires (Z,A) for T, P, and E, as well as energy of P,
|
||||||
// spectrograph angle of interest, and field value
|
// spectrograph angle of interest, and field value
|
||||||
double DeltaZ(int ZT, int AT, int ZP, int AP, int ZE, int AE,
|
double DeltaZ(int ZT, int AT, int ZP, int AP, int ZE, int AE,
|
||||||
double EP, double angle, double B)
|
double EP, double angle, double B, double nudge)
|
||||||
{
|
{
|
||||||
|
|
||||||
/* CONSTANTS */
|
/* CONSTANTS */
|
||||||
|
@ -94,7 +94,7 @@ namespace EventBuilder {
|
||||||
double K = (std::sqrt(mp*me*EP / ejectileEnergy) * std::sin(angle)) /
|
double K = (std::sqrt(mp*me*EP / ejectileEnergy) * std::sin(angle)) /
|
||||||
(me + mr - std::sqrt(mp*me*EP / ejectileEnergy) * std::cos(angle));
|
(me + mr - std::sqrt(mp*me*EP / ejectileEnergy) * std::cos(angle));
|
||||||
|
|
||||||
return -1.0*rho*s_dispersion*s_magnification*K * std::cos(s_centralTrajAngle); //delta-Z in cm
|
return -1.0*rho*s_dispersion*s_magnification*K * std::cos(s_centralTrajAngle) + nudge; //delta-Z in cm
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -39,7 +39,7 @@ namespace EventBuilder {
|
||||||
//requires (Z,A) for T, P, and E, as well as energy of P,
|
//requires (Z,A) for T, P, and E, as well as energy of P,
|
||||||
// spectrograph angle of interest, and field value
|
// spectrograph angle of interest, and field value
|
||||||
double DeltaZ(int ZT, int AT, int ZP, int AP, int ZE, int AE,
|
double DeltaZ(int ZT, int AT, int ZP, int AP, int ZE, int AE,
|
||||||
double EP, double angle, double B);
|
double EP, double angle, double B, double nudge = 0);
|
||||||
|
|
||||||
static constexpr double WireDist() { return 4.28625; } //cm
|
static constexpr double WireDist() { return 4.28625; } //cm
|
||||||
|
|
||||||
|
|
|
@ -14,10 +14,11 @@
|
||||||
namespace EventBuilder {
|
namespace EventBuilder {
|
||||||
|
|
||||||
/*Constructor takes in kinematic parameters for generating focal plane weights*/
|
/*Constructor takes in kinematic parameters for generating focal plane weights*/
|
||||||
SFPAnalyzer::SFPAnalyzer(int zt, int at, int zp, int ap, int ze, int ae, double ep,
|
SFPAnalyzer::SFPAnalyzer(const EVBParameters& params)
|
||||||
double angle, double b)
|
|
||||||
{
|
{
|
||||||
zfp = DeltaZ(zt, at, zp, ap, ze, ae, ep, angle, b);
|
zfp = DeltaZ(params.ZT, params.AT, params.ZP, params.AP, params.ZE, params.AE, params.beamEnergy,
|
||||||
|
params.spsAngle, params.BField, params.nudge);
|
||||||
|
EVB_INFO("Focal Plane Z-Offset (nudge + kinematics): {}", zfp);
|
||||||
event_address = new CoincEvent();
|
event_address = new CoincEvent();
|
||||||
rootObj = new THashTable();
|
rootObj = new THashTable();
|
||||||
GetWeights();
|
GetWeights();
|
||||||
|
|
|
@ -12,14 +12,14 @@
|
||||||
|
|
||||||
#include "DataStructs.h"
|
#include "DataStructs.h"
|
||||||
#include "FP_kinematics.h"
|
#include "FP_kinematics.h"
|
||||||
|
#include "EVBParameters.h"
|
||||||
|
|
||||||
namespace EventBuilder {
|
namespace EventBuilder {
|
||||||
|
|
||||||
class SFPAnalyzer
|
class SFPAnalyzer
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SFPAnalyzer(int zt, int at, int zp, int ap, int ze, int ae, double ep, double angle,
|
SFPAnalyzer(const EVBParameters& params);
|
||||||
double b);
|
|
||||||
~SFPAnalyzer();
|
~SFPAnalyzer();
|
||||||
ProcessedEvent GetProcessedEvent(CoincEvent& event);
|
ProcessedEvent GetProcessedEvent(CoincEvent& event);
|
||||||
inline void ClearHashTable() { rootObj->Clear(); }
|
inline void ClearHashTable() { rootObj->Clear(); }
|
||||||
|
|
|
@ -145,9 +145,15 @@ EVBMainFrame::EVBMainFrame(const TGWindow* p, UInt_t w, UInt_t h) :
|
||||||
fThetaField = new TGNumberEntryField(thetaFrame, Theta, 0, TGNumberEntry::kNESRealFour, TGNumberEntry::kNEANonNegative);
|
fThetaField = new TGNumberEntryField(thetaFrame, Theta, 0, TGNumberEntry::kNESRealFour, TGNumberEntry::kNEANonNegative);
|
||||||
thetaFrame->AddFrame(thetalabel, lhints);
|
thetaFrame->AddFrame(thetalabel, lhints);
|
||||||
thetaFrame->AddFrame(fThetaField, fhints);
|
thetaFrame->AddFrame(fThetaField, fhints);
|
||||||
|
TGHorizontalFrame* nudgeFrame = new TGHorizontalFrame(extraFrame, w*0.175, h*0.15);
|
||||||
|
TGLabel* nudgeLabel = new TGLabel(nudgeFrame, "Nudge (cm):");
|
||||||
|
fNudgeField = new TGNumberEntryField(nudgeFrame, Nudge, 0, TGNumberEntry::kNESRealFour);
|
||||||
|
nudgeFrame->AddFrame(nudgeLabel, lhints);
|
||||||
|
nudgeFrame->AddFrame(fNudgeField, fhints);
|
||||||
extraFrame->AddFrame(beamFrame, fhints);
|
extraFrame->AddFrame(beamFrame, fhints);
|
||||||
extraFrame->AddFrame(bfFrame, fhints);
|
extraFrame->AddFrame(bfFrame, fhints);
|
||||||
extraFrame->AddFrame(thetaFrame, fhints);
|
extraFrame->AddFrame(thetaFrame, fhints);
|
||||||
|
extraFrame->AddFrame(nudgeFrame, fhints);
|
||||||
|
|
||||||
reactionFrame->AddFrame(targFrame, fhints);
|
reactionFrame->AddFrame(targFrame, fhints);
|
||||||
reactionFrame->AddFrame(projFrame, fhints);
|
reactionFrame->AddFrame(projFrame, fhints);
|
||||||
|
@ -399,7 +405,8 @@ bool EVBMainFrame::SetParameters()
|
||||||
m_parameters.BField = fBField->GetNumber();
|
m_parameters.BField = fBField->GetNumber();
|
||||||
m_parameters.beamEnergy = fBKEField->GetNumber();
|
m_parameters.beamEnergy = fBKEField->GetNumber();
|
||||||
m_parameters.spsAngle = fThetaField->GetNumber();
|
m_parameters.spsAngle = fThetaField->GetNumber();
|
||||||
|
m_parameters.nudge = fNudgeField->GetNumber();
|
||||||
|
|
||||||
m_builder.SetParameters(m_parameters);
|
m_builder.SetParameters(m_parameters);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -67,6 +67,7 @@ public:
|
||||||
TypeBox,
|
TypeBox,
|
||||||
RMin,
|
RMin,
|
||||||
RMax,
|
RMax,
|
||||||
|
Nudge,
|
||||||
M_Load_Config,
|
M_Load_Config,
|
||||||
M_Save_Config,
|
M_Save_Config,
|
||||||
M_Exit
|
M_Exit
|
||||||
|
@ -85,6 +86,7 @@ private:
|
||||||
TGNumberEntryField *fBField, *fBKEField, *fThetaField;
|
TGNumberEntryField *fBField, *fBKEField, *fThetaField;
|
||||||
TGNumberEntryField *fSlowWindowField, *fFastICField, *fFastSABREField;
|
TGNumberEntryField *fSlowWindowField, *fFastICField, *fFastSABREField;
|
||||||
TGNumberEntryField *fRMinField, *fRMaxField;
|
TGNumberEntryField *fRMinField, *fRMaxField;
|
||||||
|
TGNumberEntryField *fNudgeField;
|
||||||
|
|
||||||
TGHProgressBar* fProgressBar;
|
TGHProgressBar* fProgressBar;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user