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"];
22 jout<<
"No /PHOTON_BEAM/endpoint_energy for this run number: using default of 12 GeV"<<endl;
28 map<string, double> photon_beam_param;
29 if(jcalib->Get(
"/ANALYSIS/beam_asymmetry/coherent_energy", photon_beam_param) ==
false) {
34 jout<<
"No /ANALYSIS/beam_asymmetry/coherent_energy for this run number: using default range of 0-12 GeV"<<endl;
48 locEventLoop->GetSingle(locParticleID);
58 japp->RootWriteLock();
67 dMM_M2pi = GetOrCreate_Histogram<TH2I>(
"MM_M2pi",
"MM off #pi^{+}#pi^{-} vs M_{#pi^{+}#pi^{-}}; M_{#pi^{+}#pi^{-}}; MM", 200, 0.0, 2.0, 200, 0., 4.);
68 dMM_M2pi_noEle = GetOrCreate_Histogram<TH2I>(
"MM_M2pi_noEle",
"MM off #pi^{+}#pi^{-} vs M_{#pi^{+}#pi^{-}}; M_{#pi^{+}#pi^{-}}; MM", 200, 0.0, 2.0, 200, 0., 4.);
69 dt_M2pi_noEle = GetOrCreate_Histogram<TH2I>(
"t_M2pi_noEle",
"|t| vs M_{#pi^{+}#pi^{-}}; M_{#pi^{+}#pi^{-}}; t", 200, 0.0, 2.0, 1000, 0., 5.);
70 dPiPlusPsi_t = GetOrCreate_Histogram<TH2I>(
"PiPlusPsi_t",
"#psi vs |t|; |t|; #pi^{+} #psi",1000,0.,5.,360,-180,180);
73 dMM2_M2pi = GetOrCreate_Histogram<TH2I>(
"MM2_M2pi",
"MM^{2} off #pi^{+}#pi^{-} vs M_{#pi^{+}#pi^{-}}; M_{#pi^{+}#pi^{-}}; MM^{2}", 200, 0.0, 2.0, 200, -0.1, 0.1);
74 dProton_dEdx_P = GetOrCreate_Histogram<TH2I>(
"Proton_dEdx_P",
"dE/dx vs p; p; dE/dx",200,0,2,500,0,25);
75 dProton_P_Theta = GetOrCreate_Histogram<TH2I>(
"Proton_P_Theta",
"p vs #theta; #theta; p (GeV/c)",180,0,180,120,0,12);
76 dDeltaE_M2pi = GetOrCreate_Histogram<TH2I>(
"DeltaE_M2pi",
"#DeltaE vs M_{#pi^{+}#pi^{-}}; M_{#pi^{+}#pi^{-}}; #DeltaE (tagger - tracks)", 200, 0.0, 2.0, 200, -5., 5.);
77 dDeltaE_M2pi_ProtonTag = GetOrCreate_Histogram<TH2I>(
"DeltaE_M2pi_ProtonTag",
"#DeltaE vs M_{#pi^{+}#pi^{-}}; M_{#pi^{+}#pi^{-}}; #DeltaE (tagger - tracks)", 200, 0.0, 2.0, 200, -5., 5.);
79 dDalitz_p2pi = GetOrCreate_Histogram<TH2I>(
"Dalitz_p2pi",
"Dalitz p#pi^{+}#pi^{-}; M_{#pi^{+}#pi^{-}}^{2}; M_{p#pi^{+}}^{2}", 200, 0.0, 5.0, 200, 0., 5.);
80 dMppiplus_M2pi = GetOrCreate_Histogram<TH2I>(
"Mppiplus_M2pi",
"Psuedo-Dalitz p#pi^{+}#pi^{-}; M_{#pi^{+}#pi^{-}}; M_{p#pi^{+}}", 200, 0.0, 2.0, 200, 1.0, 3.0);
81 dMppiminus_M2pi = GetOrCreate_Histogram<TH2I>(
"Mppiminus_M2pi",
"Psuedo-Dalitz p#pi^{+}#pi^{-}; M_{#pi^{+}#pi^{-}}; M_{p#pi^{-}}", 200, 0.0, 2.0, 200, 1.0, 3.0);
85 dPiPlusPsi_t = GetOrCreate_Histogram<TH2I>(
"PiPlusPsi_t",
"#psi vs |t|; |t|; #pi^{+} #psi",1000,0.,5.,360,-180,180);
89 dBaryonM_CosTheta_Egamma1 = GetOrCreate_Histogram<TH2I>(
"BaryonM_CosTheta_Egamma1",
"Baryon M_{p#pi^{+}} vs cos#theta: E_{#gamma} < 2.5; cos#theta; M_{p#pi^{+}}", 100, -1, 1, 100, 1.0, 2.5);
90 dBaryonM_CosTheta_Egamma2 = GetOrCreate_Histogram<TH2I>(
"BaryonM_CosTheta_Egamma2",
"Baryon M_{p#pi^{+}} vs cos#theta: 2.5 < E_{#gamma} < 3.0; cos#theta; M_{p#pi^{+}}", 100, -1, 1, 100, 1.0, 2.5);
91 dBaryonM_CosTheta_Egamma3 = GetOrCreate_Histogram<TH2I>(
"BaryonM_CosTheta_Egamma3",
"Baryon M_{p#pi^{+}} vs cos#theta: E_{#gamma} > 3.0; cos#theta; M_{p#pi^{+}}", 100, -1, 1, 100, 1.0, 2.5);
104 locEventLoop->GetSingle(locDetectorMatches);
111 deque<const DKinematicData*> locParticles;
120 double locBeamPhotonEnergy = locBeamPhoton->
energy();
124 for(
size_t loc_i = 0; loc_i < 3; ++loc_i) {
125 if(locParticles[loc_i] == NULL)
continue;
126 if(locParticles[loc_i]->PID() ==
PiPlus || locParticles[loc_i]->PID() ==
PiMinus)
127 locP4_2pi += locParticles[loc_i]->lorentzMomentum();
139 dEdx = locChargedTrackHypothesis->dEdx()*1e6;
142 else locProtonP4 = locMissingP4;
147 locSumInitP4 += locProtonP4Init;
149 TLorentzVector locDelta = (locProtonP4 - locProtonP4Init);
150 double t = locDelta.M2();
152 TLorentzVector locPiPlus_P4 = locParticles[1]->lorentzMomentum();
155 TLorentzRotation resonanceBoost( -locP4_2pi.BoostVector() );
156 TLorentzVector recoil_res = resonanceBoost * locProtonP4;
157 TLorentzVector p1_res = resonanceBoost * locPiPlus_P4;
160 TVector3
y = (locBeamPhoton->
lorentzMomentum().Vect().Unit().Cross(-locProtonP4.Vect().Unit())).Unit();
163 TVector3 z = -1. * recoil_res.Vect().Unit();
164 TVector3
x = y.Cross(z).Unit();
165 TVector3 angles( (p1_res.Vect()).Dot(x),
166 (p1_res.Vect()).Dot(y),
167 (p1_res.Vect()).Dot(z) );
169 double cosTheta = angles.CosTheta();
170 double phi = angles.Phi();
172 TVector3 eps(1.0, 0.0, 0.0);
173 double Phi = atan2(y.Dot(eps), locBeamPhoton->
lorentzMomentum().Vect().Unit().Dot(eps.Cross(y)));
175 double locPsi = phi - Phi;
176 if(locPsi < -1*TMath::Pi()) locPsi += 2*TMath::Pi();
177 if(locPsi > TMath::Pi()) locPsi -= 2*TMath::Pi();
185 dEgamma->Fill(locBeamPhotonEnergy);
189 dMM_M2pi->Fill(locP4_2pi.M(), locMissingP4.M());
191 if(locParticles[1]->lorentzMomentum().Theta()*180/TMath::Pi() > 2. && locParticles[2]->lorentzMomentum().Theta()*180/TMath::Pi() > 2.) {
205 dMM2_M2pi->Fill(locP4_2pi.M(), locMissingP4.M2());
210 dProton_P_Theta->Fill(locProtonP4.Vect().Theta()*180/TMath::Pi(), locProtonP4.Vect().Mag());
219 locP4_ppiplus += locParticles[1]->lorentzMomentum();
220 locP4_ppiminus += locParticles[2]->lorentzMomentum();
vector< const DKinematicData * > Get_FinalParticles_Measured(void) const
const DAnalysisUtilities * dAnalysisUtilities
TDirectoryFile * ChangeTo_BaseDirectory(void)
TH2I * dDeltaE_M2pi_ProtonTag
TH2I * dBaryonM_CosTheta_Egamma2
double energy(void) const
const DReaction * Get_Reaction(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
const DParticleID * dParticleID
DLorentzVector Calc_MissingP4(const DReaction *locReaction, const DParticleCombo *locParticleCombo, bool locUseKinFitDataFlag) const
void Initialize(JEventLoop *locEventLoop)
vector< const DKinematicData * > Get_FinalParticles(void) const
DLorentzVector lorentzMomentum(void) const
const JObject * Get_FinalParticle_SourceObject(size_t locFinalParticleIndex) const
const DKinematicData * Get_InitialParticle(void) const
TH2I * dBaryonM_CosTheta_Egamma1
const DParticleComboStep * Get_ParticleComboStep(size_t locStepIndex) const
TH2I * dBaryonM_CosTheta_Egamma3
bool Perform_Action(JEventLoop *locEventLoop, const DParticleCombo *locParticleCombo)