13 JCalibration *jcalib = dapp->GetJCalibration((locEventLoop->GetJEvent()).GetRunNumber());
17 map<string, double> photon_endpoint_energy;
18 if(jcalib->Get(
"/PHOTON_BEAM/endpoint_energy", photon_endpoint_energy) ==
false) {
19 endpoint_energy = photon_endpoint_energy[
"PHOTON_BEAM_ENDPOINT_ENERGY"];
25 map<string, double> photon_beam_param;
26 if(jcalib->Get(
"test/PHOTON_BEAM/coherent_energy", photon_beam_param) ==
false) {
40 japp->RootWriteLock();
48 dMM2_M2g = GetOrCreate_Histogram<TH2I>(
"MM2_M2g",
"MM^{2} off p #gamma#gamma vs M_{#gamma#gamma}; M_{#gamma#gamma}; MM^{2}", 500, 0.0, 1.0, 200, -1., 1.);
49 dProton_dEdx_P = GetOrCreate_Histogram<TH2I>(
"Proton_dEdx_P",
"dE/dx vs p; p; dE/dx",200,0,2,500,0,5);
50 dProton_P_Theta = GetOrCreate_Histogram<TH2I>(
"Proton_P_Theta",
"p vs #theta; #theta; p (GeV/c)",180,0,180,120,0,12);
52 dProtonPhi_Theta = GetOrCreate_Histogram<TH2I>(
"ProtonPhi_Theta",
"#phi vs #theta_{CM}; #pi^{0} #theta_{CM}; proton #phi",180,0,180,360,-180,180);
53 dProtonPhi_t = GetOrCreate_Histogram<TH2I>(
"ProtonPhi_t",
"#psi vs |t|; |t|; proton #phi",1000,0.,5.,360,-180,180);
56 dPi0Phi_Theta = GetOrCreate_Histogram<TH2I>(
"Pi0Phi_Theta",
"#phi vs #theta_{CM}; #pi^{0} #theta_{CM}; #pi^{0} #phi",180,0,180,360,-180,180);
57 dPi0EgammaCorr = GetOrCreate_Histogram<TH2I>(
"Pi0EgammaCorr",
"E_{#gamma 1} vs E_{#gamma 2}; E_{#gamma 2}; E_{#gamma 1}",100,0.,5., 100.,0.,5.);
59 dDeltaE_M2g = GetOrCreate_Histogram<TH2I>(
"dDeltaE_M2g",
"#Delta E vs M_{#gamma#gamma}; M_{#gamma#gamma}; #Delta E (tagger - p#gamma#gamma)", 500, 0.0, 1.0, 200, -5., 5.);
60 dPhi2g_PhiP = GetOrCreate_Histogram<TH2I>(
"Phi2g_PhiP",
"#phi_{#gamma#gamma} vs. #phi_{p}; #phi_{p}; #phi_{#gamma#gamma}", 360, -180.0, 180.0, 360, -180., 180.);
61 dDeltaPhi_M2g = GetOrCreate_Histogram<TH2I>(
"DeltaPhi_M2g",
"#Delta#phi vs M_{#gamma#gamma}; M_{#gamma#gamma}; #Delta#phi", 500, 0.0, 1.0, 360, 0.0, 360.0);
63 dEgamma_M2g_ProtonTag = GetOrCreate_Histogram<TH2I>(
"dEgamma_M2g_ProtonTag",
"E_{#gamma} vs M_{#gamma#gamma}; M_{#gamma#gamma}; E_{#gamma}", 500, 0.0, 1.0, 240, 0., 6.);
65 dMM2_M2g_CoplanarTag = GetOrCreate_Histogram<TH2I>(
"MM2_M2g_CoplanarTag",
"MM^{2} off p #gamma#gamma vs M_{#gamma#gamma}: Coplanar Tag; M_{#gamma#gamma}; MM^{2}", 500, 0.0, 1.0, 200, -1., 1.);
66 dDeltaE_M2g_CoplanarTag = GetOrCreate_Histogram<TH2I>(
"dDeltaE_M2g_CoplanarTag",
"#Delta E vs M_{#gamma#gamma}: Coplanar Tag; M_{#gamma#gamma}; #Delta E (tagger - p#gamma#gamma)", 500, 0.0, 1.0, 200, -5., 5.);
67 dMM2_DeltaE_CoplanarTag = GetOrCreate_Histogram<TH2I>(
"dMM2_DeltaE_CoplanarTag",
"MM^{2} vs #Delta E: Coplanar Tag; #Delta E (tagger - p#gamma#gamma); MM^{2}", 200, -5., 5., 200, -1., 1.);
69 dMM2_M2g_ProtonTag = GetOrCreate_Histogram<TH2I>(
"MM2_M2g_ProtonTag",
"MM^{2} off p #gamma#gamma vs M_{#gamma#gamma}: Proton Tag; M_{#gamma#gamma}; MM^{2}", 500, 0.0, 1.0, 200, -1., 1.);
70 dDeltaE_M2g_ProtonTag = GetOrCreate_Histogram<TH2I>(
"dDeltaE_M2g_ProtonTag",
"#Delta E vs M_{#gamma#gamma}: Proton Tag; M_{#gamma#gamma}; #Delta E (tagger - p#gamma#gamma)", 500, 0.0, 1.0, 200, -5., 5.);
71 dMM2_DeltaE_ProtonTag = GetOrCreate_Histogram<TH2I>(
"dMM2_DeltaE_ProtonTag",
"MM^{2} vs #Delta E: Proton Tag; #Delta E (tagger - p#gamma#gamma); MM^{2}", 200, -5., 5., 200, -1., 1.);
73 dMinEgamma_M2g = GetOrCreate_Histogram<TH2I>(
"MinEgamma_M2g",
"Minimum E_{#gamma} vs M_{#gamma#gamma}; M_{#gamma#gamma}; Minimum E_{#gamma}", 500, 0., 1., 200, 0., 2.);
88 double locBeamPhotonEnergy = locBeamPhoton->energy();
93 locMissingP4 += locProtonP4Init;
94 locMissingP4 += locBeamPhoton->lorentzMomentum();
101 double dEdx = locTrackTimeBased->
dEdx()*1e6;
106 set<pair<const JObject*, Particle_t> > locSourceObjects;
107 for(
size_t loc_i = 0; loc_i < 3; ++loc_i) {
108 locMissingP4 -= locParticles[loc_i]->lorentzMomentum();
110 if(locParticles[loc_i]->PID() ==
Gamma) {
111 locSourceObjects.insert(pair<const JObject*, Particle_t>(locParticleComboStep->
Get_FinalParticle_SourceObject(loc_i), locParticles[loc_i]->PID()));
112 loc2g_P4 += locParticles[loc_i]->lorentzMomentum();
116 bool fillHist =
true;
123 double locMinEgamma =
min(locGamma1P4.E(), locGamma2P4.E());
126 TVector3 locBoostVector = -1.*locSumInitP4.BoostVector();
127 TLorentzVector locGamma_P4CMFrame = locBeamPhoton->lorentzMomentum();
128 TLorentzVector locPi0_P4CMFrame = loc2g_P4;
129 locGamma_P4CMFrame.Boost(locBoostVector);
130 locPi0_P4CMFrame.Boost(locBoostVector);
131 double locThetaCM = locGamma_P4CMFrame.Vect().Angle(locPi0_P4CMFrame.Vect());
132 TLorentzVector locDelta = (locProtonP4 - locProtonP4Init);
133 double t = locDelta.M2();
141 dEgamma->Fill(locBeamPhotonEnergy);
146 dMM2_M2g->Fill(loc2g_P4.M(), locMissingP4.M2());
149 double locDeltaPhi = (locProtonP4.Phi() - loc2g_P4.Phi())*180./TMath::Pi();
150 if(locDeltaPhi > 360.) locDeltaPhi -= 360.;
151 if(locDeltaPhi < 0.) locDeltaPhi += 360.;
152 dPhi2g_PhiP->Fill(locProtonP4.Phi()*180./TMath::Pi(), loc2g_P4.Phi()*180./TMath::Pi());
156 if(locDeltaPhi > 175. && locDeltaPhi < 185.) {
179 dProton_P_Theta->Fill(locProtonP4.Vect().Theta()*180/TMath::Pi(), locProtonP4.Vect().Mag());
181 dPi0Phi_Egamma->Fill(locBeamPhotonEnergy, loc2g_P4.Phi()*180/TMath::Pi());
184 dProtonPhi_Theta->Fill(locThetaCM*180/TMath::Pi(), locProtonP4.Phi()*180/TMath::Pi());
185 dProtonPhi_t->Fill(fabs(t), locProtonP4.Phi()*180/TMath::Pi());
186 dPi0Phi_Theta->Fill(locThetaCM*180/TMath::Pi(), loc2g_P4.Phi()*180/TMath::Pi());
187 dPi0EgammaCorr->Fill(locParticles[0]->energy(),locParticles[1]->energy());
vector< const DKinematicData * > Get_FinalParticles_Measured(void) const
TH2I * dMM2_M2g_ProtonTag
TDirectoryFile * ChangeTo_BaseDirectory(void)
const DKinematicData * Get_FinalParticle_Measured(size_t locFinalParticleIndex) const
TH2I * dMM2_DeltaE_CoplanarTag
const DTrackTimeBased * Get_TrackTimeBased(void) const
TDirectoryFile * CreateAndChangeTo_ActionDirectory(void)
const DKinematicData * Get_InitialParticle_Measured(void) const
TLorentzVector DLorentzVector
const DChargedTrackHypothesis * Get_Hypothesis(Particle_t locPID) const
bool Get_UseKinFitResultsFlag(void) const
TH2I * dDeltaE_M2g_ProtonTag
vector< const DKinematicData * > Get_FinalParticles(void) const
bool Perform_Action(JEventLoop *locEventLoop, const DParticleCombo *locParticleCombo)
DLorentzVector lorentzMomentum(void) const
TH2I * dEgamma_M2g_ProtonTag
const JObject * Get_FinalParticle_SourceObject(size_t locFinalParticleIndex) const
const DKinematicData * Get_InitialParticle(void) const
TH2I * dDeltaE_M2g_CoplanarTag
TH2I * dMM2_DeltaE_ProtonTag
TH2I * dMM2_M2g_CoplanarTag
set< set< pair< const JObject *, Particle_t > > > dPreviousSourceObjects
const DParticleComboStep * Get_ParticleComboStep(size_t locStepIndex) const
void Initialize(JEventLoop *locEventLoop)