new file: Armory/Kinematics.cpp
new file: Armory/Kinematics.h new file: Armory/PC_StepLadder_Correction.h modified: BatchProcess.sh deleted: ELoss/Eloss.py deleted: ELoss/Eloss_17F deleted: ELoss/Eloss_27Al deleted: ELoss/Eloss_alpha deleted: ELoss/Eloss_p deleted: ELoss/alpha_lookup_20MeV.dat deleted: ELoss/alpha_lookup_6.0MeV.dat deleted: ELoss/proton_lookup_20MeV.dat deleted: ELoss/proton_lookup_6.0MeV.dat modified: MakeVertex.C
This commit is contained in:
parent
15e60a0cc1
commit
3f55a2a81e
|
|
@ -36,7 +36,7 @@ private:
|
||||||
inline void FillN_All_Histograms();
|
inline void FillN_All_Histograms();
|
||||||
public:
|
public:
|
||||||
HistPlotter(std::string outfile, std::string type);
|
HistPlotter(std::string outfile, std::string type);
|
||||||
inline void FlushToDisk(); //!< Writes all objects to file before closing, nesting objects in folders as is found necessary
|
inline void FlushToDisk(int integral); //!< Writes all objects to file before closing, nesting objects in folders as is found necessary
|
||||||
inline void PrintObjects(); //!< Dump objects to std::cout for inspection
|
inline void PrintObjects(); //!< Dump objects to std::cout for inspection
|
||||||
inline void ReadCuts(std::string);
|
inline void ReadCuts(std::string);
|
||||||
inline TCutG* FindCut(std::string cut) {
|
inline TCutG* FindCut(std::string cut) {
|
||||||
|
|
@ -117,7 +117,8 @@ void HistPlotter::FillN_All_Histograms() {
|
||||||
}
|
}
|
||||||
std::cout << "." << std::endl;
|
std::cout << "." << std::endl;
|
||||||
}
|
}
|
||||||
void HistPlotter::FlushToDisk() {
|
|
||||||
|
void HistPlotter::FlushToDisk(int min_integral=0) {
|
||||||
/*! \fn void FlushToDisk()
|
/*! \fn void FlushToDisk()
|
||||||
\brief Function that can be used at any point to exit smoothly by saving all ROOT objects in memory
|
\brief Function that can be used at any point to exit smoothly by saving all ROOT objects in memory
|
||||||
to the output file before closing it. Obeys the binding of histograms to separate folders, if so specified.
|
to the output file before closing it. Obeys the binding of histograms to separate folders, if so specified.
|
||||||
|
|
@ -143,7 +144,8 @@ void HistPlotter::FlushToDisk() {
|
||||||
} else {
|
} else {
|
||||||
ofile->cd(); //toplevel for all default histograms. Default setting
|
ofile->cd(); //toplevel for all default histograms. Default setting
|
||||||
}
|
}
|
||||||
it->second->Write();
|
if(((TH1F*)it->second)->Integral()>min_integral)
|
||||||
|
it->second->Write();
|
||||||
}
|
}
|
||||||
|
|
||||||
//Create a directory for all cuts, and save all cuts in them
|
//Create a directory for all cuts, and save all cuts in them
|
||||||
|
|
|
||||||
111
Armory/Kinematics.cpp
Normal file
111
Armory/Kinematics.cpp
Normal file
|
|
@ -0,0 +1,111 @@
|
||||||
|
#include "Kinematics.h"
|
||||||
|
//#include "elastcaller.h"
|
||||||
|
//double Kinematics::getQval(double m1, double m2, double m3, double t1, double t3, double angle3)
|
||||||
|
double Kinematics::getExc(double t3, double angle3)
|
||||||
|
/*
|
||||||
|
\brief Follows convention in Marion, 2013: (1 - beam, 2- target, 3-ejectile, 4-recoil)
|
||||||
|
|
||||||
|
m1 is beam, (typically heavy nucleus)
|
||||||
|
m2 is 'd', (light target)
|
||||||
|
m3 is 'p', (light ejectile mass)
|
||||||
|
t1 is beam kinetic energy,
|
||||||
|
\param t3 lab-kinetic-energy in MeV
|
||||||
|
\param angle3 lab-angle in deg of detected proton (if d,p) or other charged particle
|
||||||
|
\return Excitation energy of the heavy-recoil nucleus in MeV
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
double m1 = m_A;
|
||||||
|
double m2 = m_d;
|
||||||
|
double m3 = m_p;
|
||||||
|
double m4 = m_B;
|
||||||
|
double t1 = E_beam;
|
||||||
|
//t1 = slowitdown("75Ga",t1,"1(12C)2(2H)",1.2);
|
||||||
|
|
||||||
|
m1 *= u_MeV;
|
||||||
|
m2 *= u_MeV;
|
||||||
|
m3 *= u_MeV;
|
||||||
|
m4 *= u_MeV;
|
||||||
|
|
||||||
|
double e1 = m1 + t1;
|
||||||
|
double e3 = m3 + t3;
|
||||||
|
ET = t1 + m1 + m2;
|
||||||
|
double p1 = TMath::Sqrt(t1*t1 + 2*m1*t1);
|
||||||
|
double p3 = TMath::Sqrt(t3*t3 + 2*m3*t3);
|
||||||
|
double cosTheta = TMath::Cos(angle3*TMath::Pi()/180.);
|
||||||
|
// return m1+m2-m3-TMath::Sqrt(m1*m1 + m2*m2 + m3*m3 + 2.*m2*e1 - 2.*e3*(e1+m2)+ 2.*p1*p3*cosTheta);
|
||||||
|
double Q = m1+m2-m3-TMath::Sqrt(m1*m1 + m2*m2 + m3*m3 + 2.*m2*e1 - 2.*e3*(e1+m2)+ 2.*p1*p3*cosTheta);
|
||||||
|
|
||||||
|
Qx = Q;
|
||||||
|
T4 = ET - e3 - (m1+m2-m3-Q);
|
||||||
|
//T4 = slowitdown("75Ga",T4,"1(12C)2(2H)",1.2);
|
||||||
|
P4 = TMath::Sqrt(T4*T4 + 2*m4*T4);
|
||||||
|
|
||||||
|
//this angle will not be affected by eloss
|
||||||
|
theta4 = (180./M_PI)*TMath::ASin((p3/P4)*TMath::Sin(angle3*M_PI/180.));
|
||||||
|
|
||||||
|
// T4-=16.5; //eloss in about 1.4 mg CD2
|
||||||
|
T4-=15.5; //eloss in 1.35 mg CD2 //TODO: actually degrade recoil/ejectiles in target
|
||||||
|
// T4-=14.1; //eloss in about 1.2 mg CD2
|
||||||
|
// T4-=31.7; //eloss in 2.7 mg CD2
|
||||||
|
|
||||||
|
//recalculate everything other than angle with lowered Kinetic energy
|
||||||
|
P4 = TMath::Sqrt(T4*T4 + 2*m4*T4);
|
||||||
|
gamma4 = T4/m4+1.;
|
||||||
|
beta4 = TMath::Sqrt(1. - 1./(gamma4*gamma4));
|
||||||
|
//beta4 = TMath::Sqrt((P4*P4)/(P4*P4 + m4*m4));
|
||||||
|
theta4 = (180./M_PI)*TMath::ASin((p3/P4)*TMath::Sin(angle3*M_PI/180.));
|
||||||
|
|
||||||
|
return Q0 - Q;//Q0 = Q + Exc
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
double Kinematics::getBeta4(double t3, double angle3)
|
||||||
|
/*
|
||||||
|
\brief Follows convention in Marion, 2013: (1 - beam, 2- target, 3-ejectile, 4-recoil)
|
||||||
|
|
||||||
|
m1 is beam, (typically heavy nucleus)
|
||||||
|
m2 is 'd', (light target)
|
||||||
|
m3 is 'p', (light ejectile mass)
|
||||||
|
t1 is beam kinetic energy,
|
||||||
|
\param t3 lab-kinetic-energy in MeV
|
||||||
|
\param angle3 lab-angle in deg of detected proton (if d,p) or other charged particle
|
||||||
|
\return doppler-shift beta (=v/c) of the heavy-recoil nucleus, calls getExc() to fill the value
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
getExc(t3, angle3);
|
||||||
|
return beta4;
|
||||||
|
}
|
||||||
|
|
||||||
|
double Kinematics::getBrho(double t3, double angle3, double charge_state) {
|
||||||
|
/*
|
||||||
|
\brief Follows convention in Marion, 2013: (1 - beam, 2- target, 3-ejectile, 4-recoil)
|
||||||
|
|
||||||
|
m1 is beam, (typically heavy nucleus)
|
||||||
|
m2 is 'd', (light target)
|
||||||
|
m3 is 'p', (light ejectile mass)
|
||||||
|
t1 is beam kinetic energy,
|
||||||
|
\param t3 lab-kinetic-energy in MeV
|
||||||
|
\param angle3 lab-angle in deg of detected proton (if d,p) or other charged particle
|
||||||
|
\param charge_state charge state of the intended nucleus, in units of elementary charge (= +1 for H+, +2 for He2+ etc).
|
||||||
|
\return b-rho value, generated from P4*3.3359e-3/charge_state where P4 is 4momentum of heavy-recoil calculated from orruba kinematics
|
||||||
|
*/
|
||||||
|
getExc(t3,angle3);
|
||||||
|
return P4*3.3359e-3/charge_state;
|
||||||
|
}
|
||||||
|
|
||||||
|
double Kinematics::getTheta4(double t3, double angle3) {
|
||||||
|
/*
|
||||||
|
\brief Follows convention in Marion, 2013: (1 - beam, 2- target, 3-ejectile, 4-recoil)
|
||||||
|
|
||||||
|
m1 is beam, (typically heavy nucleus)
|
||||||
|
m2 is 'd', (light target)
|
||||||
|
m3 is 'p', (light ejectile mass)
|
||||||
|
t1 is beam kinetic energy,
|
||||||
|
\param t3 lab-kinetic-energy in MeV
|
||||||
|
\param angle3 lab-angle in deg of detected proton (if d,p) or other charged particle
|
||||||
|
\param charge_state charge state of the intended nucleus, in units of elementary charge (= +1 for H+, +2 for He2+ etc).
|
||||||
|
\return lab theta value of heavy recoil in degrees
|
||||||
|
*/
|
||||||
|
getExc(t3,angle3);
|
||||||
|
return theta4;
|
||||||
|
}
|
||||||
207
Armory/Kinematics.h
Normal file
207
Armory/Kinematics.h
Normal file
|
|
@ -0,0 +1,207 @@
|
||||||
|
#ifndef KINEMATICS_H
|
||||||
|
#define KINEMATICS_H
|
||||||
|
#include <TMath.h>
|
||||||
|
#include <iostream>
|
||||||
|
#include <fstream>
|
||||||
|
#include <string>
|
||||||
|
#include <TVector3.h>
|
||||||
|
const double u_MeV = 931.49410372; //u in MeV
|
||||||
|
|
||||||
|
class Kinematics {
|
||||||
|
public:
|
||||||
|
/*
|
||||||
|
A(d,p)B is used as template, with A being beam, and p being ejectile.
|
||||||
|
Always, make m3 the thing you detect, and m1 the beam
|
||||||
|
*/
|
||||||
|
double m_A, m_d, m_p, m_B;
|
||||||
|
double E_beam;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @{ \name List of funny impossible default values
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* \brief Default values used for all the physics values
|
||||||
|
*/
|
||||||
|
double Q0=-9999, Qx=-9999;
|
||||||
|
double P4=-9999, E4=-9999, T4=-9999; //heavy recoil momentum, totE, KE
|
||||||
|
double P3=-9999, E3=-9999, T3=-9999; //light recoil
|
||||||
|
double ET=-9999;
|
||||||
|
double gamma4=-9999, beta4=-9999, theta4=-9999; //theta=heavy-recoil lab angle
|
||||||
|
double brho=-9999;
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
Kinematics(double m1, double m2, double m3, double m4, double ebeam) {
|
||||||
|
/*
|
||||||
|
A(d,p)B is used as template, with A being beam, and p being ejectile.
|
||||||
|
Always, make m3 the thing you detect, m2 the target, and m1 the beam
|
||||||
|
|
||||||
|
ebeam is in MeV/u, all others are in amu
|
||||||
|
*/
|
||||||
|
m_A = m1;
|
||||||
|
m_d = m2;
|
||||||
|
m_p = m3, m_B = m4, E_beam = ebeam*m_A;
|
||||||
|
Q0 = (- m_B - m_p + m_d + m_A)*u_MeV;
|
||||||
|
}
|
||||||
|
Kinematics() {}
|
||||||
|
|
||||||
|
void setValues(double m1, double m2, double m3, double m4, double ebeam) {
|
||||||
|
/*
|
||||||
|
Can be used to 'live update' say the beam energy in the case of active target detectors.
|
||||||
|
*/
|
||||||
|
|
||||||
|
m_A = m1;
|
||||||
|
m_d = m2;
|
||||||
|
m_p = m3, m_B = m4, E_beam = ebeam*m_A;
|
||||||
|
Q0 = (- m_B - m_p + m_d + m_A)*u_MeV;
|
||||||
|
//std::cout << "Q0 MeV: " << Q0 << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setEBeam(double Ebeam) {E_beam = Ebeam;}
|
||||||
|
|
||||||
|
double getBeta4(double t3, double angle3);
|
||||||
|
double getTheta4(double t3, double angle3);
|
||||||
|
double getBrho(double t3, double angle3, double charge_state);
|
||||||
|
double getExc(double t3, double angle3); //t3 is proton energy detected in ORRUBA, angle3 is proton angle in degrees
|
||||||
|
|
||||||
|
double getBeta4_fromvec(double t3, const TVector3 &pos, const TVector3 &origin) {
|
||||||
|
TVector3 local = pos - origin; //position w.r.t origin
|
||||||
|
float angle = local.Theta()*180./M_PI;
|
||||||
|
return getBeta4(t3, angle);
|
||||||
|
}
|
||||||
|
|
||||||
|
double getExc_fromvec(double t3, const TVector3 &pos, const TVector3 &origin) {
|
||||||
|
TVector3 local = pos - origin; //position w.r.t origin
|
||||||
|
float angle = local.Theta()*180./M_PI;
|
||||||
|
return getExc(t3, angle);
|
||||||
|
}
|
||||||
|
|
||||||
|
void setValuesFromFile(const std::string& filename) {
|
||||||
|
(void) filename;
|
||||||
|
/*std::ifstream in;
|
||||||
|
in.open(filename);
|
||||||
|
if(!in) {
|
||||||
|
std::cerr<< "File not open at " << filename << std::endl;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for(std::string line; std::getline(in, line); ) {
|
||||||
|
if(line.size()!=0 && line[0]=='#')
|
||||||
|
; //don't do anything with '#' lines
|
||||||
|
else {
|
||||||
|
std::stringstream ss(line);
|
||||||
|
ss>>m_A>>m_d>>m_p>>m_B>>E_beam;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
in.close();*/
|
||||||
|
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
//double Kinematics::getQval(double m1, double m2, double m3, double t1, double t3, double angle3)
|
||||||
|
double Kinematics::getExc(double t3, double angle3)
|
||||||
|
/*
|
||||||
|
\brief Follows convention in Marion, 2013: (1 - beam, 2- target, 3-ejectile, 4-recoil)
|
||||||
|
|
||||||
|
m1 is beam, (typically heavy nucleus)
|
||||||
|
m2 is 'd', (light target)
|
||||||
|
m3 is 'p', (light ejectile mass)
|
||||||
|
t1 is beam kinetic energy,
|
||||||
|
|
||||||
|
All calculations are done here, and other wrapper functions written make derived quantities from stuff calculated here.
|
||||||
|
|
||||||
|
\param t3 lab-kinetic-energy in MeV
|
||||||
|
\param angle3 lab-angle in deg of detected proton (if d,p) or other charged particle
|
||||||
|
\return Excitation energy of the heavy-recoil nucleus in MeV
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
double m1 = m_A;
|
||||||
|
double m2 = m_d;
|
||||||
|
double m3 = m_p;
|
||||||
|
double m4 = m_B;
|
||||||
|
double t1 = E_beam;
|
||||||
|
|
||||||
|
m1 *= u_MeV;
|
||||||
|
m2 *= u_MeV;
|
||||||
|
m3 *= u_MeV;
|
||||||
|
m4 *= u_MeV;
|
||||||
|
|
||||||
|
double e1 = m1 + t1;
|
||||||
|
double e3 = m3 + t3;
|
||||||
|
ET = t1 + m1 + m2;
|
||||||
|
double p1 = TMath::Sqrt(t1*t1 + 2*m1*t1);
|
||||||
|
double p3 = TMath::Sqrt(t3*t3 + 2*m3*t3);
|
||||||
|
double cosTheta = TMath::Cos(angle3*TMath::Pi()/180.);
|
||||||
|
// return m1+m2-m3-TMath::Sqrt(m1*m1 + m2*m2 + m3*m3 + 2.*m2*e1 - 2.*e3*(e1+m2)+ 2.*p1*p3*cosTheta);
|
||||||
|
double Q = m1+m2-m3-TMath::Sqrt(m1*m1 + m2*m2 + m3*m3 + 2.*m2*e1 - 2.*e3*(e1+m2)+ 2.*p1*p3*cosTheta);
|
||||||
|
|
||||||
|
Qx = Q;
|
||||||
|
//Recoil properties just in case it's useful
|
||||||
|
T4 = ET - e3 - (m1+m2-m3-Q);
|
||||||
|
P4 = TMath::Sqrt(T4*T4 + 2*m4*T4);
|
||||||
|
|
||||||
|
//this angle will not be affected by eloss
|
||||||
|
theta4 = (180./M_PI)*TMath::ASin((p3/P4)*TMath::Sin(angle3*M_PI/180.));
|
||||||
|
|
||||||
|
//recalculate everything other than angle with lowered Kinetic energy
|
||||||
|
P4 = TMath::Sqrt(T4*T4 + 2*m4*T4);
|
||||||
|
gamma4 = T4/m4+1.;
|
||||||
|
beta4 = TMath::Sqrt(1. - 1./(gamma4*gamma4));
|
||||||
|
theta4 = (180./M_PI)*TMath::ASin((p3/P4)*TMath::Sin(angle3*M_PI/180.));
|
||||||
|
|
||||||
|
return Q0 - Q;//Q0 = Q + Exc
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
double Kinematics::getBeta4(double t3, double angle3)
|
||||||
|
/*
|
||||||
|
\brief Follows convention in Marion, 2013: (1 - beam, 2- target, 3-ejectile, 4-recoil)
|
||||||
|
|
||||||
|
m1 is beam, (typically heavy nucleus)
|
||||||
|
m2 is 'd', (light target)
|
||||||
|
m3 is 'p', (light ejectile mass)
|
||||||
|
t1 is beam kinetic energy,
|
||||||
|
\param t3 lab-kinetic-energy in MeV
|
||||||
|
\param angle3 lab-angle in deg of detected proton (if d,p) or other charged particle
|
||||||
|
\return doppler-shift beta (=v/c) of the heavy-recoil nucleus, calls getExc() to fill the value
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
getExc(t3, angle3);
|
||||||
|
return beta4;
|
||||||
|
}
|
||||||
|
|
||||||
|
double Kinematics::getBrho(double t3, double angle3, double charge_state) {
|
||||||
|
/*
|
||||||
|
\brief Follows convention in Marion, 2013: (1 - beam, 2- target, 3-ejectile, 4-recoil)
|
||||||
|
|
||||||
|
m1 is beam, (typically heavy nucleus)
|
||||||
|
m2 is 'd', (light target)
|
||||||
|
m3 is 'p', (light ejectile mass)
|
||||||
|
t1 is beam kinetic energy,
|
||||||
|
\param t3 lab-kinetic-energy in MeV
|
||||||
|
\param angle3 lab-angle in deg of detected proton (if d,p) or other charged particle
|
||||||
|
\param charge_state charge state of the intended nucleus, in units of elementary charge (= +1 for H+, +2 for He2+ etc).
|
||||||
|
\return b-rho value, generated from P4*3.3359e-3/charge_state where P4 is 4momentum of heavy-recoil calculated from orruba kinematics
|
||||||
|
*/
|
||||||
|
getExc(t3,angle3);
|
||||||
|
return P4*3.3359e-3/charge_state;
|
||||||
|
}
|
||||||
|
|
||||||
|
double Kinematics::getTheta4(double t3, double angle3) {
|
||||||
|
/*
|
||||||
|
\brief Follows convention in Marion, 2013: (1 - beam, 2- target, 3-ejectile, 4-recoil)
|
||||||
|
|
||||||
|
m1 is beam, (typically heavy nucleus)
|
||||||
|
m2 is 'd', (light target)
|
||||||
|
m3 is 'p', (light ejectile mass)
|
||||||
|
t1 is beam kinetic energy,
|
||||||
|
\param t3 lab-kinetic-energy in MeV
|
||||||
|
\param angle3 lab-angle in deg of detected proton (if d,p) or other charged particle
|
||||||
|
\param charge_state charge state of the intended nucleus, in units of elementary charge (= +1 for H+, +2 for He2+ etc).
|
||||||
|
\return lab theta value of heavy recoil in degrees
|
||||||
|
*/
|
||||||
|
getExc(t3,angle3);
|
||||||
|
return theta4;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
42
Armory/PC_StepLadder_Correction.h
Normal file
42
Armory/PC_StepLadder_Correction.h
Normal file
|
|
@ -0,0 +1,42 @@
|
||||||
|
#include <TF1.h>
|
||||||
|
double model(double* x, double* p) {
|
||||||
|
double result = x[0];
|
||||||
|
double factor = 29.0;
|
||||||
|
double slope = 0.7;
|
||||||
|
if(TMath::Abs(x[0]) < 16.2) result=x[0]*slope;
|
||||||
|
else if(TMath::Abs(x[0]) < 49.8 ) result=x[0]*slope+TMath::Sign(1.0,x[0])*factor;
|
||||||
|
else if(TMath::Abs(x[0]) < 85.2 ) result=x[0]*slope+TMath::Sign(1.0,x[0])*factor*2;
|
||||||
|
else result=x[0]*slope+TMath::Sign(1.0,x[0])*factor*2;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
double model_invert(double *y, double *q) {
|
||||||
|
double result=y[0];
|
||||||
|
double slope = 0.7;
|
||||||
|
double factor = 40.0;
|
||||||
|
if(TMath::Abs(y[0]) < 16.2/slope) result = y[0]/slope;
|
||||||
|
else if(TMath::Abs(y[0]) < 49.8/slope ) result=y[0]/slope-TMath::Sign(1.0,y[0])*factor;
|
||||||
|
else if(TMath::Abs(y[0]) < 85.2/slope ) result=y[0]/slope-TMath::Sign(1.0,y[0])*factor*2;
|
||||||
|
else result=y[0]/slope-TMath::Sign(1.0,y[0])*factor*2;
|
||||||
|
return result+40;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*void testmodel() {
|
||||||
|
TF1 eqline("x","x",-200,200);
|
||||||
|
eqline.Draw("");
|
||||||
|
eqline.SetLineStyle(kDashed);
|
||||||
|
|
||||||
|
//TF1 f1("model",model,-200,200,2);
|
||||||
|
TF1 f1("model_inv",model_invert,-200,200,2);
|
||||||
|
eqline.SetNpx(10000);
|
||||||
|
f1.SetNpx(10000);
|
||||||
|
std::vector<double> pars = {0.0,1.};
|
||||||
|
f1.SetParameters(pars.data());
|
||||||
|
f1.SetLineColor(kGreen+2);
|
||||||
|
f1.SetLineStyle(kLine);
|
||||||
|
f1.Draw("L SAME");
|
||||||
|
|
||||||
|
gPad->Modified(); gPad->Update();
|
||||||
|
while(gPad->WaitPrimitive());
|
||||||
|
|
||||||
|
}*/
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
#parallel -j 6 echo ./ProcessRun.sh {1} 2000 0 ::: {020..400}
|
#parallel -j 6 echo ./ProcessRun.sh {1} 2000 0 ::: {020..400}
|
||||||
|
|
||||||
parallel --results log/log_{}.txt --ctag -j 3 ./ProcessRun.sh {1} 2000 0 ::: {109..400} # for 17F
|
parallel --jobs 1 --results log/log_{}.txt --memfree 1G --ctag -j 1 ./ProcessRun.sh {1} 2000 0 ::: {109..400} # for 17F
|
||||||
|
|
||||||
# parallel --results log/log_{}.txt --ctag -j 6 ./ProcessRun.sh {1} 4000 0 ::: {5..21}
|
# parallel --results log/log_{}.txt --ctag -j 6 ./ProcessRun.sh {1} 4000 0 ::: {5..21}
|
||||||
|
|
|
||||||
|
|
@ -1,62 +0,0 @@
|
||||||
import pycatima as catima
|
|
||||||
import numpy as np
|
|
||||||
|
|
||||||
# --- 1. Constants ---
|
|
||||||
P_TORR = 250
|
|
||||||
TEMP_K = 293.15
|
|
||||||
R = 8.3144
|
|
||||||
MEV2U = 1.0 / 931.494
|
|
||||||
|
|
||||||
# Gas Density Calculations
|
|
||||||
p_pa = P_TORR * 133.322
|
|
||||||
molar_density = p_pa / (R * TEMP_K)
|
|
||||||
m_he, m_c, m_o = 4.0026, 12.0000, 15.9949
|
|
||||||
m_mix_avg = (0.96 * m_he) + (0.04 * (m_c + 2*m_o))
|
|
||||||
rho_g_cm3 = (molar_density * m_mix_avg) / 1e6
|
|
||||||
print(f"Gas density at {P_TORR} Torr: {rho_g_cm3:.6e} g/cm^3")
|
|
||||||
|
|
||||||
# --- 2. Material & Step Setup ---
|
|
||||||
material_def = [(m_he, 2, 0.96), (m_c, 6, 0.04), (m_o, 8, 0.08)]
|
|
||||||
gas_mix = catima.Material(material_def)
|
|
||||||
gas_mix.density(rho_g_cm3)
|
|
||||||
|
|
||||||
# Thickness step settings
|
|
||||||
step_mg_cm2 = 0.001 # 1 ug/cm2 steps as per your example
|
|
||||||
step_g_cm2 = step_mg_cm2 / 1000.0
|
|
||||||
max_steps = 100000 # Adjust based on how far you want to track
|
|
||||||
|
|
||||||
def generate_lookup(z, mass_u, e_start_mev, label):
|
|
||||||
filename = f"{label}_lookup_{e_start_mev}MeV.dat"
|
|
||||||
projectile = catima.Projectile(mass_u, z)
|
|
||||||
|
|
||||||
current_e_total = e_start_mev
|
|
||||||
current_thickness_g_cm2 = 0.0
|
|
||||||
|
|
||||||
output = []
|
|
||||||
header = f"Energy(MeV) \tmg/cm2 \tcm\nStarting Energy: {e_start_mev} MeV"
|
|
||||||
|
|
||||||
for i in range(max_steps):
|
|
||||||
# 1. Record current state
|
|
||||||
dist_cm = current_thickness_g_cm2 / rho_g_cm3
|
|
||||||
output.append([current_e_total, current_thickness_g_cm2 * 1000.0, dist_cm])
|
|
||||||
|
|
||||||
# 2. Calculate energy loss for the NEXT step
|
|
||||||
e_u = current_e_total / mass_u
|
|
||||||
if e_u < 0.01: # Stop at ATIMA limit
|
|
||||||
break
|
|
||||||
|
|
||||||
projectile.T(e_u)
|
|
||||||
# dedx returns MeV / (g/cm2)
|
|
||||||
loss_mev = catima.dedx(projectile, gas_mix) * step_g_cm2
|
|
||||||
|
|
||||||
# 3. Update values
|
|
||||||
current_e_total -= loss_mev
|
|
||||||
current_thickness_g_cm2 += step_g_cm2
|
|
||||||
|
|
||||||
np.savetxt(filename, output, fmt='%.6f', delimiter='\t', header=header)
|
|
||||||
print(f"Lookup table created: {filename}")
|
|
||||||
|
|
||||||
# --- 3. Run ---
|
|
||||||
# Format: generate_lookup(Z, mass_u, E_start_MeV, label)
|
|
||||||
generate_lookup(1, 1.0078, 20, "proton")
|
|
||||||
generate_lookup(2, 4.0026, 20, "alpha")
|
|
||||||
268
ELoss/Eloss_17F
268
ELoss/Eloss_17F
|
|
@ -1,268 +0,0 @@
|
||||||
0.017002095 0.00676442
|
|
||||||
0.03400419 0.0135288
|
|
||||||
0.085010476 0.032227
|
|
||||||
0.136016762 0.0489265
|
|
||||||
0.170020952 0.0592235
|
|
||||||
0.255031428 0.0823584
|
|
||||||
0.340041904 0.102374
|
|
||||||
0.42505238 0.120086
|
|
||||||
0.510062856 0.135943
|
|
||||||
0.595073332 0.150461
|
|
||||||
0.680083808 0.164011
|
|
||||||
0.765094284 0.176885
|
|
||||||
0.85010476 0.189282
|
|
||||||
0.935115236 0.201176
|
|
||||||
1.020125712 0.212518
|
|
||||||
1.190146664 0.233962
|
|
||||||
1.360167616 0.254045
|
|
||||||
1.530188568 0.27299
|
|
||||||
1.70020952 0.291072
|
|
||||||
2.040251424 0.325807
|
|
||||||
2.380293328 0.359536
|
|
||||||
2.720335232 0.392589
|
|
||||||
3.060377136 0.425159
|
|
||||||
3.40041904 0.457286
|
|
||||||
4.2505238 0.536817
|
|
||||||
5.10062856 0.615601
|
|
||||||
5.95073332 0.693052
|
|
||||||
6.80083808 0.769499
|
|
||||||
7.65094284 0.845324
|
|
||||||
8.5010476 0.920793
|
|
||||||
10.20125712 1.07377
|
|
||||||
11.90146664 1.23229
|
|
||||||
13.60167616 1.39414
|
|
||||||
15.30188568 1.55782
|
|
||||||
17.0020952 1.72459
|
|
||||||
21.252619 2.15811
|
|
||||||
25.5031428 2.61883
|
|
||||||
29.7536666 3.10864
|
|
||||||
34.0041904 3.62853
|
|
||||||
38.2547142 4.17854
|
|
||||||
42.505238 4.75843
|
|
||||||
51.0062856 6.00863
|
|
||||||
59.5073332 7.38089
|
|
||||||
68.0083808 8.87668
|
|
||||||
76.5094284 10.4957
|
|
||||||
85.010476 12.2377
|
|
||||||
93.5115236 14.1011
|
|
||||||
102.0125712 16.0845
|
|
||||||
110.5136188 18.1875
|
|
||||||
119.0146664 20.4097
|
|
||||||
127.515714 22.7505
|
|
||||||
136.0167616 25.2096
|
|
||||||
144.5178092 27.7867
|
|
||||||
153.0188568 30.4814
|
|
||||||
161.5199044 33.2935
|
|
||||||
170.020952 36.2195
|
|
||||||
187.0230472 42.214
|
|
||||||
204.0251424 48.6246
|
|
||||||
221.0272376 55.449
|
|
||||||
238.0293328 62.6845
|
|
||||||
255.031428 70.3284
|
|
||||||
272.0335232 78.3781
|
|
||||||
289.0356184 86.8308
|
|
||||||
306.0377136 95.684
|
|
||||||
323.0398088 104.935
|
|
||||||
340.041904 114.581
|
|
||||||
357.0439992 124.619
|
|
||||||
374.0460944 135.048
|
|
||||||
391.0481896 145.863
|
|
||||||
408.0502848 157.064
|
|
||||||
425.05238 168.647
|
|
||||||
459.0565704 192.95
|
|
||||||
493.0607608 218.753
|
|
||||||
527.0649512 246.038
|
|
||||||
561.0691416 274.787
|
|
||||||
595.073332 304.983
|
|
||||||
646.0796176 352.95
|
|
||||||
697.0859032 404.079
|
|
||||||
748.0921888 458.315
|
|
||||||
799.0984744 515.608
|
|
||||||
850.10476 575.909
|
|
||||||
935.115236 682.969
|
|
||||||
1020.125712 798.048
|
|
||||||
1105.136188 920.949
|
|
||||||
1190.146664 1051.49
|
|
||||||
1275.15714 1189.49
|
|
||||||
1360.167616 1334.78
|
|
||||||
1445.178092 1487.21
|
|
||||||
1530.188568 1646.62
|
|
||||||
1615.199044 1812.86
|
|
||||||
1700.20952 1985.8
|
|
||||||
1785.219996 2165.29
|
|
||||||
1870.230472 2351.2
|
|
||||||
1955.240948 2543.42
|
|
||||||
2040.251424 2741.82
|
|
||||||
2125.2619 2946.27
|
|
||||||
2210.272376 3156.67
|
|
||||||
2295.282852 3372.91
|
|
||||||
2380.293328 3594.88
|
|
||||||
2465.303804 3822.47
|
|
||||||
2550.31428 4055.59
|
|
||||||
2635.324756 4294.14
|
|
||||||
2720.335232 4538.01
|
|
||||||
2805.345708 4787.13
|
|
||||||
2890.356184 5041.4
|
|
||||||
2975.36666 5300.73
|
|
||||||
3060.377136 5565.04
|
|
||||||
3145.387612 5834.24
|
|
||||||
3230.398088 6108.26
|
|
||||||
3315.408564 6387.01
|
|
||||||
3400.41904 6670.42
|
|
||||||
3570.439992 7250.92
|
|
||||||
3740.460944 7849.17
|
|
||||||
3910.481896 8464.62
|
|
||||||
4080.502848 9096.74
|
|
||||||
4250.5238 9745.02
|
|
||||||
4420.544752 10409
|
|
||||||
4590.565704 11088.2
|
|
||||||
4760.586656 11782.1
|
|
||||||
4930.607608 12490.4
|
|
||||||
5100.62856 13212.7
|
|
||||||
5270.649512 13948.5
|
|
||||||
5440.670464 14697.4
|
|
||||||
5610.691416 15459.2
|
|
||||||
5780.712368 16233.4
|
|
||||||
5950.73332 17019.7
|
|
||||||
6120.754272 17817.8
|
|
||||||
6290.775224 18627.3
|
|
||||||
6460.796176 19448
|
|
||||||
6630.817128 20279.6
|
|
||||||
6800.83808 21121.8
|
|
||||||
6970.859032 21974.2
|
|
||||||
7140.879984 22836.7
|
|
||||||
7310.900936 23709
|
|
||||||
7480.921888 24590.9
|
|
||||||
7650.94284 25482
|
|
||||||
7820.963792 26382.2
|
|
||||||
7990.984744 27291.2
|
|
||||||
8161.005696 28208.8
|
|
||||||
8331.026648 29134.9
|
|
||||||
8501.0476 30069.1
|
|
||||||
8841.089504 31961.3
|
|
||||||
9181.131408 33884
|
|
||||||
9521.173312 35835.8
|
|
||||||
9861.215216 37815.1
|
|
||||||
10201.25712 39820.8
|
|
||||||
10541.29902 41851.6
|
|
||||||
10881.34093 43906.4
|
|
||||||
11221.38283 45984.1
|
|
||||||
11561.42474 48083.6
|
|
||||||
11901.46664 50203.9
|
|
||||||
12241.50854 52344.2
|
|
||||||
12581.55045 54503.4
|
|
||||||
12921.59235 56680.8
|
|
||||||
13261.63426 58875.5
|
|
||||||
13601.67616 61086.7
|
|
||||||
13941.71806 63313.8
|
|
||||||
14281.75997 65556.1
|
|
||||||
14621.80187 67812.7
|
|
||||||
14961.84378 70083.2
|
|
||||||
15301.88568 72366.9
|
|
||||||
15641.92758 74663.1
|
|
||||||
15981.96949 76971.4
|
|
||||||
16322.01139 79291.2
|
|
||||||
16662.0533 81622
|
|
||||||
17002.0952 83963.3
|
|
||||||
17342.1371 86314.6
|
|
||||||
17682.17901 88675.4
|
|
||||||
18022.22091 91045.4
|
|
||||||
18362.26282 93424
|
|
||||||
18702.30472 95811
|
|
||||||
19042.34662 98205.9
|
|
||||||
19382.38853 100608
|
|
||||||
19722.43043 103018
|
|
||||||
20062.47234 105434
|
|
||||||
20402.51424 107857
|
|
||||||
20742.55614 110286
|
|
||||||
21082.59805 112721
|
|
||||||
21422.63995 115162
|
|
||||||
21762.68186 117608
|
|
||||||
22102.72376 120059
|
|
||||||
22442.76566 122514
|
|
||||||
22782.80757 124975
|
|
||||||
23122.84947 127439
|
|
||||||
23462.89138 129908
|
|
||||||
23802.93328 132380
|
|
||||||
24142.97518 134856
|
|
||||||
24483.01709 137335
|
|
||||||
24823.05899 139817
|
|
||||||
25163.1009 142303
|
|
||||||
25503.1428 144791
|
|
||||||
25843.1847 147281
|
|
||||||
26183.22661 149774
|
|
||||||
26523.26851 152270
|
|
||||||
26863.31042 154767
|
|
||||||
27203.35232 157266
|
|
||||||
27543.39422 159767
|
|
||||||
27883.43613 162270
|
|
||||||
28223.47803 164774
|
|
||||||
28563.51994 167279
|
|
||||||
28903.56184 169786
|
|
||||||
29753.6666 176056
|
|
||||||
30603.77136 182331
|
|
||||||
31453.87612 188609
|
|
||||||
32303.98088 194888
|
|
||||||
33154.08564 201166
|
|
||||||
34004.1904 207442
|
|
||||||
35704.39992 219984
|
|
||||||
37404.60944 232503
|
|
||||||
39104.81896 244992
|
|
||||||
40805.02848 257444
|
|
||||||
42505.238 269853
|
|
||||||
44205.44752 282214
|
|
||||||
45905.65704 294523
|
|
||||||
47605.86656 306775
|
|
||||||
49306.07608 318968
|
|
||||||
51006.2856 331099
|
|
||||||
54406.70464 355166
|
|
||||||
57807.12368 378963
|
|
||||||
61207.54272 402479
|
|
||||||
64607.96176 425709
|
|
||||||
68008.3808 448649
|
|
||||||
71408.79984 471298
|
|
||||||
74809.21888 493655
|
|
||||||
78209.63792 515723
|
|
||||||
81610.05696 537503
|
|
||||||
85010.476 558999
|
|
||||||
89260.9998 585475
|
|
||||||
93511.5236 611522
|
|
||||||
102012.5712 662361
|
|
||||||
110513.6188 711594
|
|
||||||
119014.6664 759299
|
|
||||||
127515.714 805555
|
|
||||||
136016.7616 850436
|
|
||||||
144517.8092 894016
|
|
||||||
153018.8568 936363
|
|
||||||
161519.9044 977541
|
|
||||||
170020.952 1.02E+06
|
|
||||||
187023.0472 1.09E+06
|
|
||||||
204025.1424 1.17E+06
|
|
||||||
221027.2376 1.24E+06
|
|
||||||
238029.3328 1.30E+06
|
|
||||||
255031.428 1.37E+06
|
|
||||||
272033.5232 1.43E+06
|
|
||||||
289035.6184 1.49E+06
|
|
||||||
306037.7136 1.54E+06
|
|
||||||
323039.8088 1.60E+06
|
|
||||||
340041.904 1.65E+06
|
|
||||||
357043.9992 1.70E+06
|
|
||||||
374046.0944 1.75E+06
|
|
||||||
391048.1896 1.80E+06
|
|
||||||
408050.2848 1.84E+06
|
|
||||||
425052.38 1.89E+06
|
|
||||||
442054.4752 1.93E+06
|
|
||||||
459056.5704 1.98E+06
|
|
||||||
476058.6656 2.02E+06
|
|
||||||
493060.7608 2.06E+06
|
|
||||||
510062.856 2.10E+06
|
|
||||||
544067.0464 2.17E+06
|
|
||||||
578071.2368 2.24E+06
|
|
||||||
612075.4272 2.31E+06
|
|
||||||
646079.6176 2.38E+06
|
|
||||||
680083.808 2.44E+06
|
|
||||||
714087.9984 2.50E+06
|
|
||||||
748092.1888 2.56E+06
|
|
||||||
782096.3792 2.61E+06
|
|
||||||
816100.5696 2.67E+06
|
|
||||||
850104.76 2.72E+06
|
|
||||||
268
ELoss/Eloss_27Al
268
ELoss/Eloss_27Al
|
|
@ -1,268 +0,0 @@
|
||||||
0.026981539 1087.74
|
|
||||||
0.053963078 2175.49
|
|
||||||
0.134907695 5438.8
|
|
||||||
0.215852312 8557.19
|
|
||||||
0.26981539 10540.7
|
|
||||||
0.404723085 15079.2
|
|
||||||
0.53963078 19011.9
|
|
||||||
0.674538475 22467.9
|
|
||||||
0.80944617 25531.3
|
|
||||||
0.944353865 28303.5
|
|
||||||
1.07926156 30859.2
|
|
||||||
1.214169255 33253.7
|
|
||||||
1.34907695 35529.1
|
|
||||||
1.483984645 37685.6
|
|
||||||
1.61889234 39719.2
|
|
||||||
1.88870773 43505.2
|
|
||||||
2.15852312 46980.1
|
|
||||||
2.42833851 50199.6
|
|
||||||
2.6981539 53228.6
|
|
||||||
3.23778468 58941.2
|
|
||||||
3.77741546 64372.8
|
|
||||||
4.31704624 69606.4
|
|
||||||
4.85667702 74683.1
|
|
||||||
5.3963078 79618
|
|
||||||
6.74538475 91580.1
|
|
||||||
8.0944617 103093
|
|
||||||
9.44353865 114105
|
|
||||||
10.7926156 124746
|
|
||||||
12.14169255 135119
|
|
||||||
13.4907695 145269
|
|
||||||
16.1889234 165367
|
|
||||||
18.8870773 185754
|
|
||||||
21.5852312 206324
|
|
||||||
24.2833851 226926
|
|
||||||
26.981539 247688
|
|
||||||
33.72692375 300998
|
|
||||||
40.4723085 357029
|
|
||||||
47.21769325 416359
|
|
||||||
53.963078 478956
|
|
||||||
60.70846275 544719
|
|
||||||
67.4538475 613499
|
|
||||||
80.944617 759812
|
|
||||||
94.4353865 917732
|
|
||||||
107.926156 1.09E+06
|
|
||||||
121.4169255 1.27E+06
|
|
||||||
134.907695 1.46E+06
|
|
||||||
148.3984645 1.67E+06
|
|
||||||
161.889234 1.88E+06
|
|
||||||
175.3800035 2.11E+06
|
|
||||||
188.870773 2.35E+06
|
|
||||||
202.3615425 2.60E+06
|
|
||||||
215.852312 2.86E+06
|
|
||||||
229.3430815 3.13E+06
|
|
||||||
242.833851 3.41E+06
|
|
||||||
256.3246205 3.71E+06
|
|
||||||
269.81539 4.01E+06
|
|
||||||
296.796929 4.64E+06
|
|
||||||
323.778468 5.30E+06
|
|
||||||
350.760007 6.00E+06
|
|
||||||
377.741546 6.74E+06
|
|
||||||
404.723085 7.53E+06
|
|
||||||
431.704624 8.35E+06
|
|
||||||
458.686163 9.21E+06
|
|
||||||
485.667702 1.01E+07
|
|
||||||
512.649241 1.10E+07
|
|
||||||
539.63078 1.20E+07
|
|
||||||
566.612319 1.30E+07
|
|
||||||
593.593858 1.41E+07
|
|
||||||
620.575397 1.52E+07
|
|
||||||
647.556936 1.63E+07
|
|
||||||
674.538475 1.75E+07
|
|
||||||
728.501553 1.99E+07
|
|
||||||
782.464631 2.25E+07
|
|
||||||
836.427709 2.52E+07
|
|
||||||
890.390787 2.81E+07
|
|
||||||
944.353865 3.11E+07
|
|
||||||
1025.298482 3.59E+07
|
|
||||||
1106.243099 4.10E+07
|
|
||||||
1187.187716 4.64E+07
|
|
||||||
1268.132333 5.21E+07
|
|
||||||
1349.07695 5.81E+07
|
|
||||||
1483.984645 6.88E+07
|
|
||||||
1618.89234 8.02E+07
|
|
||||||
1753.800035 9.24E+07
|
|
||||||
1888.70773 1.05E+08
|
|
||||||
2023.615425 1.19E+08
|
|
||||||
2158.52312 1.34E+08
|
|
||||||
2293.430815 1.49E+08
|
|
||||||
2428.33851 1.65E+08
|
|
||||||
2563.246205 1.81E+08
|
|
||||||
2698.1539 1.98E+08
|
|
||||||
2833.061595 2.16E+08
|
|
||||||
2967.96929 2.35E+08
|
|
||||||
3102.876985 2.54E+08
|
|
||||||
3237.78468 2.73E+08
|
|
||||||
3372.692375 2.94E+08
|
|
||||||
3507.60007 3.15E+08
|
|
||||||
3642.507765 3.36E+08
|
|
||||||
3777.41546 3.58E+08
|
|
||||||
3912.323155 3.81E+08
|
|
||||||
4047.23085 4.04E+08
|
|
||||||
4182.138545 4.27E+08
|
|
||||||
4317.04624 4.52E+08
|
|
||||||
4451.953935 4.76E+08
|
|
||||||
4586.86163 5.02E+08
|
|
||||||
4721.769325 5.27E+08
|
|
||||||
4856.67702 5.54E+08
|
|
||||||
4991.584715 5.80E+08
|
|
||||||
5126.49241 6.08E+08
|
|
||||||
5261.400105 6.35E+08
|
|
||||||
5396.3078 6.64E+08
|
|
||||||
5666.12319 7.21E+08
|
|
||||||
5935.93858 7.81E+08
|
|
||||||
6205.75397 8.42E+08
|
|
||||||
6475.56936 9.04E+08
|
|
||||||
6745.38475 9.69E+08
|
|
||||||
7015.20014 1.03E+09
|
|
||||||
7285.01553 1.10E+09
|
|
||||||
7554.83092 1.17E+09
|
|
||||||
7824.64631 1.24E+09
|
|
||||||
8094.4617 1.31E+09
|
|
||||||
8364.27709 1.39E+09
|
|
||||||
8634.09248 1.46E+09
|
|
||||||
8903.90787 1.54E+09
|
|
||||||
9173.72326 1.61E+09
|
|
||||||
9443.53865 1.69E+09
|
|
||||||
9713.35404 1.77E+09
|
|
||||||
9983.16943 1.85E+09
|
|
||||||
10252.98482 1.93E+09
|
|
||||||
10522.80021 2.02E+09
|
|
||||||
10792.6156 2.10E+09
|
|
||||||
11062.43099 2.18E+09
|
|
||||||
11332.24638 2.27E+09
|
|
||||||
11602.06177 2.36E+09
|
|
||||||
11871.87716 2.44E+09
|
|
||||||
12141.69255 2.53E+09
|
|
||||||
12411.50794 2.62E+09
|
|
||||||
12681.32333 2.71E+09
|
|
||||||
12951.13872 2.80E+09
|
|
||||||
13220.95411 2.89E+09
|
|
||||||
13490.7695 2.99E+09
|
|
||||||
14030.40028 3.18E+09
|
|
||||||
14570.03106 3.37E+09
|
|
||||||
15109.66184 3.56E+09
|
|
||||||
15649.29262 3.76E+09
|
|
||||||
16188.9234 3.96E+09
|
|
||||||
16728.55418 4.16E+09
|
|
||||||
17268.18496 4.36E+09
|
|
||||||
17807.81574 4.57E+09
|
|
||||||
18347.44652 4.78E+09
|
|
||||||
18887.0773 4.99E+09
|
|
||||||
19426.70808 5.20E+09
|
|
||||||
19966.33886 5.41E+09
|
|
||||||
20505.96964 5.63E+09
|
|
||||||
21045.60042 5.85E+09
|
|
||||||
21585.2312 6.07E+09
|
|
||||||
22124.86198 6.29E+09
|
|
||||||
22664.49276 6.51E+09
|
|
||||||
23204.12354 6.74E+09
|
|
||||||
23743.75432 6.96E+09
|
|
||||||
24283.3851 7.19E+09
|
|
||||||
24823.01588 7.42E+09
|
|
||||||
25362.64666 7.65E+09
|
|
||||||
25902.27744 7.88E+09
|
|
||||||
26441.90822 8.11E+09
|
|
||||||
26981.539 8.34E+09
|
|
||||||
27521.16978 8.57E+09
|
|
||||||
28060.80056 8.81E+09
|
|
||||||
28600.43134 9.04E+09
|
|
||||||
29140.06212 9.28E+09
|
|
||||||
29679.6929 9.52E+09
|
|
||||||
30219.32368 9.75E+09
|
|
||||||
30758.95446 9.99E+09
|
|
||||||
31298.58524 1.02E+10
|
|
||||||
31838.21602 1.05E+10
|
|
||||||
32377.8468 1.07E+10
|
|
||||||
32917.47758 1.10E+10
|
|
||||||
33457.10836 1.12E+10
|
|
||||||
33996.73914 1.14E+10
|
|
||||||
34536.36992 1.17E+10
|
|
||||||
35076.0007 1.19E+10
|
|
||||||
35615.63148 1.22E+10
|
|
||||||
36155.26226 1.24E+10
|
|
||||||
36694.89304 1.27E+10
|
|
||||||
37234.52382 1.29E+10
|
|
||||||
37774.1546 1.31E+10
|
|
||||||
38313.78538 1.34E+10
|
|
||||||
38853.41616 1.36E+10
|
|
||||||
39393.04694 1.39E+10
|
|
||||||
39932.67772 1.41E+10
|
|
||||||
40472.3085 1.44E+10
|
|
||||||
41011.93928 1.46E+10
|
|
||||||
41551.57006 1.49E+10
|
|
||||||
42091.20084 1.51E+10
|
|
||||||
42630.83162 1.54E+10
|
|
||||||
43170.4624 1.56E+10
|
|
||||||
43710.09318 1.59E+10
|
|
||||||
44249.72396 1.61E+10
|
|
||||||
44789.35474 1.64E+10
|
|
||||||
45328.98552 1.66E+10
|
|
||||||
45868.6163 1.69E+10
|
|
||||||
47217.69325 1.75E+10
|
|
||||||
48566.7702 1.81E+10
|
|
||||||
49915.84715 1.87E+10
|
|
||||||
51264.9241 1.94E+10
|
|
||||||
52614.00105 2.00E+10
|
|
||||||
53963.078 2.06E+10
|
|
||||||
56661.2319 2.19E+10
|
|
||||||
59359.3858 2.31E+10
|
|
||||||
62057.5397 2.43E+10
|
|
||||||
64755.6936 2.56E+10
|
|
||||||
67453.8475 2.68E+10
|
|
||||||
70152.0014 2.80E+10
|
|
||||||
72850.1553 2.93E+10
|
|
||||||
75548.3092 3.05E+10
|
|
||||||
78246.4631 3.17E+10
|
|
||||||
80944.617 3.29E+10
|
|
||||||
86340.9248 3.53E+10
|
|
||||||
91737.2326 3.76E+10
|
|
||||||
97133.5404 4.00E+10
|
|
||||||
102529.8482 4.23E+10
|
|
||||||
107926.156 4.46E+10
|
|
||||||
113322.4638 4.68E+10
|
|
||||||
118718.7716 4.90E+10
|
|
||||||
124115.0794 5.12E+10
|
|
||||||
129511.3872 5.34E+10
|
|
||||||
134907.695 5.55E+10
|
|
||||||
141653.0798 5.82E+10
|
|
||||||
148398.4645 6.07E+10
|
|
||||||
161889.234 6.58E+10
|
|
||||||
175380.0035 7.07E+10
|
|
||||||
188870.773 7.54E+10
|
|
||||||
202361.5425 8.00E+10
|
|
||||||
215852.312 8.45E+10
|
|
||||||
229343.0815 8.88E+10
|
|
||||||
242833.851 9.30E+10
|
|
||||||
256324.6205 9.71E+10
|
|
||||||
269815.39 1.01E+11
|
|
||||||
296796.929 1.09E+11
|
|
||||||
323778.468 1.16E+11
|
|
||||||
350760.007 1.23E+11
|
|
||||||
377741.546 1.30E+11
|
|
||||||
404723.085 1.36E+11
|
|
||||||
431704.624 1.42E+11
|
|
||||||
458686.163 1.48E+11
|
|
||||||
485667.702 1.53E+11
|
|
||||||
512649.241 1.59E+11
|
|
||||||
539630.78 1.64E+11
|
|
||||||
566612.319 1.69E+11
|
|
||||||
593593.858 1.74E+11
|
|
||||||
620575.397 1.79E+11
|
|
||||||
647556.936 1.83E+11
|
|
||||||
674538.475 1.88E+11
|
|
||||||
701520.014 1.92E+11
|
|
||||||
728501.553 1.96E+11
|
|
||||||
755483.092 2.00E+11
|
|
||||||
782464.631 2.04E+11
|
|
||||||
809446.17 2.08E+11
|
|
||||||
863409.248 2.16E+11
|
|
||||||
917372.326 2.23E+11
|
|
||||||
971335.404 2.29E+11
|
|
||||||
1025298.482 2.36E+11
|
|
||||||
1079261.56 2.42E+11
|
|
||||||
1133224.638 2.48E+11
|
|
||||||
1187187.716 2.54E+11
|
|
||||||
1241150.794 2.59E+11
|
|
||||||
1295113.872 2.65E+11
|
|
||||||
1349076.95 2.70E+11
|
|
||||||
|
|
@ -1,345 +0,0 @@
|
||||||
0.053103695 11959.9
|
|
||||||
0.116582129 19201.1
|
|
||||||
0.180060563 24466.2
|
|
||||||
0.243538998 28696
|
|
||||||
0.307017432 32395.8
|
|
||||||
0.370495866 35815.8
|
|
||||||
0.4339739 39049.4
|
|
||||||
0.497451133 42211.1
|
|
||||||
0.560932369 45315.6
|
|
||||||
0.624409603 48392.9
|
|
||||||
0.687886836 51473.4
|
|
||||||
0.751368072 54567.7
|
|
||||||
0.814845305 57693.8
|
|
||||||
0.878322539 60883.5
|
|
||||||
0.941803775 64073.2
|
|
||||||
1.005281008 67274.6
|
|
||||||
1.068758242 70625.6
|
|
||||||
1.132235475 73976.6
|
|
||||||
1.195716711 77327.7
|
|
||||||
1.259193944 80859
|
|
||||||
1.322671178 84405.9
|
|
||||||
1.386152414 87952.9
|
|
||||||
1.449629647 91666.6
|
|
||||||
1.513106881 95430.9
|
|
||||||
1.576588117 99195.1
|
|
||||||
1.64006535 103102
|
|
||||||
1.703542583 107097
|
|
||||||
1.767019817 111093
|
|
||||||
1.830501053 115200
|
|
||||||
1.893978286 119436
|
|
||||||
1.95745552 123672
|
|
||||||
2.020936756 128023
|
|
||||||
2.084413989 132632
|
|
||||||
2.147891222 137241
|
|
||||||
2.211372458 141849
|
|
||||||
2.274849692 146458
|
|
||||||
2.338326925 151067
|
|
||||||
2.401804159 155677
|
|
||||||
2.465285395 160793
|
|
||||||
2.528762628 165908
|
|
||||||
2.592239861 171023
|
|
||||||
2.655721097 176139
|
|
||||||
2.719198331 181254
|
|
||||||
2.782675564 186369
|
|
||||||
2.8461568 191841
|
|
||||||
2.909634034 197468
|
|
||||||
2.973111267 203094
|
|
||||||
3.0365885 208721
|
|
||||||
3.100069736 214347
|
|
||||||
3.16354697 219973
|
|
||||||
3.227024203 225800
|
|
||||||
3.290505439 231938
|
|
||||||
3.353982673 238075
|
|
||||||
3.417459906 244212
|
|
||||||
3.480941142 250349
|
|
||||||
3.544418375 256486
|
|
||||||
3.607895609 262668
|
|
||||||
3.671372842 269313
|
|
||||||
3.734854078 275958
|
|
||||||
3.798331312 282603
|
|
||||||
3.861808545 289248
|
|
||||||
3.925289781 295893
|
|
||||||
3.988767014 302538
|
|
||||||
4.05223224 309870
|
|
||||||
4.115713476 317394
|
|
||||||
4.179194712 324917
|
|
||||||
4.242675948 332441
|
|
||||||
4.306157184 339965
|
|
||||||
4.36963842 347488
|
|
||||||
4.433119656 355012
|
|
||||||
4.496600892 362535
|
|
||||||
4.560082128 370059
|
|
||||||
4.623563364 377583
|
|
||||||
4.6870446 385106
|
|
||||||
4.750525836 392630
|
|
||||||
4.813967046 400154
|
|
||||||
4.877448282 407677
|
|
||||||
4.940929518 415201
|
|
||||||
5.004410754 422747
|
|
||||||
5.06789199 431506
|
|
||||||
5.131373226 440265
|
|
||||||
5.194854462 449023
|
|
||||||
5.258335698 457782
|
|
||||||
5.321816934 466541
|
|
||||||
5.38529817 475299
|
|
||||||
5.448779406 484058
|
|
||||||
5.512260642 492817
|
|
||||||
5.575741878 501575
|
|
||||||
5.639223114 510334
|
|
||||||
5.70270435 519093
|
|
||||||
5.76614556 527851
|
|
||||||
5.829626796 536610
|
|
||||||
5.893108032 545369
|
|
||||||
5.956589268 554127
|
|
||||||
6.020070504 563195
|
|
||||||
6.08355174 573167
|
|
||||||
6.147032976 583139
|
|
||||||
6.210514212 593110
|
|
||||||
6.273995448 603082
|
|
||||||
6.337476684 613054
|
|
||||||
6.40095792 623026
|
|
||||||
6.464439156 632997
|
|
||||||
6.527920392 642969
|
|
||||||
6.591401628 652941
|
|
||||||
6.654842838 662913
|
|
||||||
6.718324074 672885
|
|
||||||
6.78180531 682856
|
|
||||||
6.845286546 692828
|
|
||||||
6.908767782 702800
|
|
||||||
6.972249018 712772
|
|
||||||
7.035730254 723331
|
|
||||||
7.09921149 734498
|
|
||||||
7.162692726 745666
|
|
||||||
7.226173962 756833
|
|
||||||
7.289655198 768000
|
|
||||||
7.353136434 779168
|
|
||||||
7.41661767 790335
|
|
||||||
7.480098906 801502
|
|
||||||
7.543540116 812670
|
|
||||||
7.607021352 823837
|
|
||||||
7.670502588 835004
|
|
||||||
7.733983824 846172
|
|
||||||
7.79746506 857339
|
|
||||||
7.860946296 868507
|
|
||||||
7.924427532 879674
|
|
||||||
7.987908768 890841
|
|
||||||
8.051390004 902868
|
|
||||||
8.11487124 915217
|
|
||||||
8.178352476 927566
|
|
||||||
8.241833712 939915
|
|
||||||
8.305314948 952263
|
|
||||||
8.368796184 964612
|
|
||||||
8.43227742 976961
|
|
||||||
8.49571863 989310
|
|
||||||
8.559199866 1.00E+06
|
|
||||||
8.622681102 1.01E+06
|
|
||||||
8.686162338 1.03E+06
|
|
||||||
8.749643574 1.04E+06
|
|
||||||
8.81312481 1.05E+06
|
|
||||||
8.876606046 1.06E+06
|
|
||||||
8.940087282 1.08E+06
|
|
||||||
9.003568518 1.09E+06
|
|
||||||
9.067049754 1.10E+06
|
|
||||||
9.13053099 1.12E+06
|
|
||||||
9.194012226 1.13E+06
|
|
||||||
9.257493462 1.14E+06
|
|
||||||
9.320974698 1.16E+06
|
|
||||||
9.384415908 1.17E+06
|
|
||||||
9.447897144 1.18E+06
|
|
||||||
9.51137838 1.20E+06
|
|
||||||
9.574859616 1.21E+06
|
|
||||||
9.638340852 1.22E+06
|
|
||||||
9.701822088 1.24E+06
|
|
||||||
9.765303324 1.25E+06
|
|
||||||
9.82878456 1.26E+06
|
|
||||||
9.892265796 1.28E+06
|
|
||||||
9.955747032 1.29E+06
|
|
||||||
10.01922827 1.30E+06
|
|
||||||
10.0827095 1.32E+06
|
|
||||||
10.14619074 1.34E+06
|
|
||||||
10.20967198 1.35E+06
|
|
||||||
10.27311319 1.37E+06
|
|
||||||
10.33659442 1.38E+06
|
|
||||||
10.40007566 1.40E+06
|
|
||||||
10.46355689 1.41E+06
|
|
||||||
10.52703813 1.43E+06
|
|
||||||
10.59051937 1.44E+06
|
|
||||||
10.6540006 1.46E+06
|
|
||||||
10.71748184 1.47E+06
|
|
||||||
10.78096307 1.49E+06
|
|
||||||
10.84444431 1.50E+06
|
|
||||||
10.90792555 1.52E+06
|
|
||||||
10.97140678 1.53E+06
|
|
||||||
11.03488802 1.55E+06
|
|
||||||
11.09836925 1.56E+06
|
|
||||||
11.16185049 1.58E+06
|
|
||||||
11.2252917 1.59E+06
|
|
||||||
11.28877294 1.61E+06
|
|
||||||
11.35225417 1.62E+06
|
|
||||||
11.41573541 1.64E+06
|
|
||||||
11.47921664 1.66E+06
|
|
||||||
11.54269788 1.67E+06
|
|
||||||
11.60617912 1.69E+06
|
|
||||||
11.66966035 1.70E+06
|
|
||||||
11.73314159 1.72E+06
|
|
||||||
11.79662282 1.73E+06
|
|
||||||
11.86010406 1.75E+06
|
|
||||||
11.9235853 1.76E+06
|
|
||||||
11.98706653 1.78E+06
|
|
||||||
12.05054777 1.79E+06
|
|
||||||
12.11398898 1.81E+06
|
|
||||||
12.17747021 1.83E+06
|
|
||||||
12.24095145 1.85E+06
|
|
||||||
12.30443269 1.86E+06
|
|
||||||
12.36791392 1.88E+06
|
|
||||||
12.43139516 1.90E+06
|
|
||||||
12.49487639 1.92E+06
|
|
||||||
12.55835763 1.93E+06
|
|
||||||
12.62183887 1.95E+06
|
|
||||||
12.6853201 1.97E+06
|
|
||||||
12.74880134 1.99E+06
|
|
||||||
12.81228257 2.00E+06
|
|
||||||
12.87576381 2.02E+06
|
|
||||||
12.93924505 2.04E+06
|
|
||||||
13.00268626 2.06E+06
|
|
||||||
13.06616749 2.07E+06
|
|
||||||
13.12964873 2.09E+06
|
|
||||||
13.19312996 2.11E+06
|
|
||||||
13.2566112 2.13E+06
|
|
||||||
13.32009244 2.14E+06
|
|
||||||
13.38357367 2.16E+06
|
|
||||||
13.44705491 2.18E+06
|
|
||||||
13.51053614 2.20E+06
|
|
||||||
13.57401738 2.22E+06
|
|
||||||
13.63749862 2.23E+06
|
|
||||||
13.70097985 2.25E+06
|
|
||||||
13.76446109 2.27E+06
|
|
||||||
13.82794232 2.29E+06
|
|
||||||
13.89142356 2.30E+06
|
|
||||||
13.95486477 2.32E+06
|
|
||||||
14.01834601 2.34E+06
|
|
||||||
14.08182724 2.36E+06
|
|
||||||
14.14530848 2.38E+06
|
|
||||||
14.20878971 2.40E+06
|
|
||||||
14.27227095 2.42E+06
|
|
||||||
14.33575219 2.44E+06
|
|
||||||
14.39923342 2.46E+06
|
|
||||||
14.46271466 2.48E+06
|
|
||||||
14.52619589 2.50E+06
|
|
||||||
14.58967713 2.52E+06
|
|
||||||
14.65315837 2.54E+06
|
|
||||||
14.7166396 2.56E+06
|
|
||||||
14.78012084 2.58E+06
|
|
||||||
14.84356205 2.60E+06
|
|
||||||
14.90704328 2.62E+06
|
|
||||||
14.97052452 2.63E+06
|
|
||||||
15.03400576 2.65E+06
|
|
||||||
15.09748699 2.67E+06
|
|
||||||
15.16096823 2.69E+06
|
|
||||||
15.22444946 2.71E+06
|
|
||||||
15.2879307 2.73E+06
|
|
||||||
15.35141194 2.75E+06
|
|
||||||
15.41489317 2.77E+06
|
|
||||||
15.47837441 2.79E+06
|
|
||||||
15.54185564 2.81E+06
|
|
||||||
15.60533688 2.83E+06
|
|
||||||
15.66881812 2.85E+06
|
|
||||||
15.73225933 2.87E+06
|
|
||||||
15.79574056 2.89E+06
|
|
||||||
15.8592218 2.91E+06
|
|
||||||
15.92270303 2.93E+06
|
|
||||||
15.98618427 2.95E+06
|
|
||||||
16.04966551 2.97E+06
|
|
||||||
16.11314674 2.99E+06
|
|
||||||
16.17662798 3.02E+06
|
|
||||||
16.24010921 3.04E+06
|
|
||||||
16.30359045 3.06E+06
|
|
||||||
16.36707169 3.08E+06
|
|
||||||
16.43055292 3.10E+06
|
|
||||||
16.49403416 3.13E+06
|
|
||||||
16.55751539 3.15E+06
|
|
||||||
16.6209566 3.17E+06
|
|
||||||
16.68443784 3.19E+06
|
|
||||||
16.74791908 3.21E+06
|
|
||||||
16.81140031 3.24E+06
|
|
||||||
16.87488155 3.26E+06
|
|
||||||
16.93836278 3.28E+06
|
|
||||||
17.00184402 3.30E+06
|
|
||||||
17.06532526 3.32E+06
|
|
||||||
17.12880649 3.35E+06
|
|
||||||
17.19228773 3.37E+06
|
|
||||||
17.25576896 3.39E+06
|
|
||||||
17.3192502 3.41E+06
|
|
||||||
17.38273144 3.43E+06
|
|
||||||
17.44621267 3.46E+06
|
|
||||||
17.50969391 3.48E+06
|
|
||||||
17.57313512 3.50E+06
|
|
||||||
17.63661635 3.52E+06
|
|
||||||
17.70009759 3.54E+06
|
|
||||||
17.76357883 3.57E+06
|
|
||||||
17.82706006 3.59E+06
|
|
||||||
17.8905413 3.61E+06
|
|
||||||
17.95402253 3.63E+06
|
|
||||||
18.01750377 3.65E+06
|
|
||||||
18.08098501 3.68E+06
|
|
||||||
18.14446624 3.70E+06
|
|
||||||
18.20794748 3.73E+06
|
|
||||||
18.27142871 3.75E+06
|
|
||||||
18.33490995 3.78E+06
|
|
||||||
18.39839119 3.80E+06
|
|
||||||
18.4618324 3.82E+06
|
|
||||||
18.52531363 3.85E+06
|
|
||||||
18.58879487 3.87E+06
|
|
||||||
18.6522761 3.90E+06
|
|
||||||
18.71575734 3.92E+06
|
|
||||||
18.77923858 3.95E+06
|
|
||||||
18.84271981 3.97E+06
|
|
||||||
18.90620105 3.99E+06
|
|
||||||
18.96968228 4.02E+06
|
|
||||||
19.03316352 4.04E+06
|
|
||||||
19.09664476 4.07E+06
|
|
||||||
19.16012599 4.09E+06
|
|
||||||
19.22360723 4.11E+06
|
|
||||||
19.28708846 4.14E+06
|
|
||||||
19.35052967 4.16E+06
|
|
||||||
19.41401091 4.19E+06
|
|
||||||
19.47749215 4.21E+06
|
|
||||||
19.54097338 4.24E+06
|
|
||||||
19.60445462 4.26E+06
|
|
||||||
19.66793585 4.28E+06
|
|
||||||
19.73141709 4.31E+06
|
|
||||||
19.79489833 4.33E+06
|
|
||||||
19.85837956 4.36E+06
|
|
||||||
19.9218608 4.38E+06
|
|
||||||
19.98534203 4.41E+06
|
|
||||||
20.04882327 4.43E+06
|
|
||||||
20.11230451 4.46E+06
|
|
||||||
20.17578574 4.48E+06
|
|
||||||
20.23926698 4.51E+06
|
|
||||||
20.30270819 4.54E+06
|
|
||||||
20.36618942 4.56E+06
|
|
||||||
20.42967066 4.59E+06
|
|
||||||
20.4931519 4.62E+06
|
|
||||||
20.55663313 4.64E+06
|
|
||||||
20.62011437 4.67E+06
|
|
||||||
20.6835956 4.69E+06
|
|
||||||
20.74707684 4.72E+06
|
|
||||||
20.81055808 4.75E+06
|
|
||||||
20.87403931 4.77E+06
|
|
||||||
20.93752055 4.80E+06
|
|
||||||
21.00100178 4.83E+06
|
|
||||||
21.06448302 4.85E+06
|
|
||||||
21.12796426 4.88E+06
|
|
||||||
21.19140547 4.91E+06
|
|
||||||
21.2548867 4.93E+06
|
|
||||||
21.31836794 4.96E+06
|
|
||||||
21.38184917 4.98E+06
|
|
||||||
21.44533041 5.01E+06
|
|
||||||
21.50881165 5.04E+06
|
|
||||||
21.57229288 5.06E+06
|
|
||||||
21.63577412 5.09E+06
|
|
||||||
21.69925535 5.12E+06
|
|
||||||
21.76273659 5.14E+06
|
|
||||||
21.82621783 5.17E+06
|
|
||||||
21.88969906 5.20E+06
|
|
||||||
268
ELoss/Eloss_p
268
ELoss/Eloss_p
|
|
@ -1,268 +0,0 @@
|
||||||
0.00100784 0.00455783
|
|
||||||
0.00201568 0.00911567
|
|
||||||
0.0050392 0.0197891
|
|
||||||
0.00806272 0.0284591
|
|
||||||
0.0100784 0.0336328
|
|
||||||
0.0151176 0.0449321
|
|
||||||
0.0201568 0.0545806
|
|
||||||
0.025196 0.0631952
|
|
||||||
0.0302352 0.071111
|
|
||||||
0.0352744 0.0785363
|
|
||||||
0.0403136 0.0856119
|
|
||||||
0.0453528 0.0924397
|
|
||||||
0.050392 0.0990962
|
|
||||||
0.0554312 0.105641
|
|
||||||
0.0604704 0.112122
|
|
||||||
0.0705488 0.125041
|
|
||||||
0.0806272 0.138091
|
|
||||||
0.0907056 0.151435
|
|
||||||
0.100784 0.16519
|
|
||||||
0.1209408 0.194217
|
|
||||||
0.1410976 0.225513
|
|
||||||
0.1612544 0.25917
|
|
||||||
0.1814112 0.295144
|
|
||||||
0.201568 0.333333
|
|
||||||
0.25196 0.4377
|
|
||||||
0.302352 0.55345
|
|
||||||
0.352744 0.679377
|
|
||||||
0.403136 0.814707
|
|
||||||
0.453528 0.958947
|
|
||||||
0.50392 1.11177
|
|
||||||
0.604704 1.44231
|
|
||||||
0.705488 1.80513
|
|
||||||
0.806272 2.19946
|
|
||||||
0.907056 2.62475
|
|
||||||
1.00784 3.08057
|
|
||||||
1.2598 4.35139
|
|
||||||
1.51176 5.80613
|
|
||||||
1.76372 7.44108
|
|
||||||
2.01568 9.25315
|
|
||||||
2.26764 11.2397
|
|
||||||
2.5196 13.3984
|
|
||||||
3.02352 18.2246
|
|
||||||
3.52744 23.7179
|
|
||||||
4.03136 29.8671
|
|
||||||
4.53528 36.6625
|
|
||||||
5.0392 44.0961
|
|
||||||
5.54312 52.1607
|
|
||||||
6.04704 60.8501
|
|
||||||
6.55096 70.1587
|
|
||||||
7.05488 80.0814
|
|
||||||
7.5588 90.6136
|
|
||||||
8.06272 101.751
|
|
||||||
8.56664 113.49
|
|
||||||
9.07056 125.827
|
|
||||||
9.57448 138.759
|
|
||||||
10.0784 152.267
|
|
||||||
11.08624 180.081
|
|
||||||
12.09408 209.992
|
|
||||||
13.10192 241.974
|
|
||||||
14.10976 276.006
|
|
||||||
15.1176 312.066
|
|
||||||
16.12544 350.134
|
|
||||||
17.13328 390.189
|
|
||||||
18.14112 432.214
|
|
||||||
19.14896 476.19
|
|
||||||
20.1568 522.101
|
|
||||||
21.16464 569.93
|
|
||||||
22.17248 619.661
|
|
||||||
23.18032 671.279
|
|
||||||
24.18816 724.77
|
|
||||||
25.196 780.118
|
|
||||||
27.21168 896.334
|
|
||||||
29.22736 1019.82
|
|
||||||
31.24304 1150.48
|
|
||||||
33.25872 1288.2
|
|
||||||
35.2744 1432.91
|
|
||||||
38.29792 1662.88
|
|
||||||
41.32144 1908.07
|
|
||||||
44.34496 2168.23
|
|
||||||
47.36848 2443.1
|
|
||||||
50.392 2732.43
|
|
||||||
55.4312 3246.18
|
|
||||||
60.4704 3798.47
|
|
||||||
65.5096 4388.33
|
|
||||||
70.5488 5014.87
|
|
||||||
75.588 5677.25
|
|
||||||
80.6272 6374.65
|
|
||||||
85.6664 7106.3
|
|
||||||
90.7056 7871.46
|
|
||||||
95.7448 8669.43
|
|
||||||
100.784 9499.52
|
|
||||||
105.8232 10361.1
|
|
||||||
110.8624 11253.5
|
|
||||||
115.9016 12176.2
|
|
||||||
120.9408 13128.5
|
|
||||||
125.98 14109.9
|
|
||||||
131.0192 15119.8
|
|
||||||
136.0584 16157.8
|
|
||||||
141.0976 17223.3
|
|
||||||
146.1368 18315.7
|
|
||||||
151.176 19434.7
|
|
||||||
156.2152 20579.8
|
|
||||||
161.2544 21750.4
|
|
||||||
166.2936 22946.2
|
|
||||||
171.3328 24166.7
|
|
||||||
176.372 25411.6
|
|
||||||
181.4112 26680.3
|
|
||||||
186.4504 27972.5
|
|
||||||
191.4896 29287.8
|
|
||||||
196.5288 30625.8
|
|
||||||
201.568 31986.2
|
|
||||||
211.6464 34772.7
|
|
||||||
221.7248 37644.4
|
|
||||||
231.8032 40598.6
|
|
||||||
241.8816 43632.8
|
|
||||||
251.96 46744.7
|
|
||||||
262.0384 49931.8
|
|
||||||
272.1168 53192
|
|
||||||
282.1952 56523.1
|
|
||||||
292.2736 59923.1
|
|
||||||
302.352 63390
|
|
||||||
312.4304 66921.8
|
|
||||||
322.5088 70516.9
|
|
||||||
332.5872 74173.4
|
|
||||||
342.6656 77889.7
|
|
||||||
352.744 81664
|
|
||||||
362.8224 85494.9
|
|
||||||
372.9008 89380.9
|
|
||||||
382.9792 93320.4
|
|
||||||
393.0576 97312.1
|
|
||||||
403.136 101355
|
|
||||||
413.2144 105447
|
|
||||||
423.2928 109587
|
|
||||||
433.3712 113774
|
|
||||||
443.4496 118007
|
|
||||||
453.528 122284
|
|
||||||
463.6064 126605
|
|
||||||
473.6848 130969
|
|
||||||
483.7632 135373
|
|
||||||
493.8416 139818
|
|
||||||
503.92 144303
|
|
||||||
524.0768 153386
|
|
||||||
544.2336 162615
|
|
||||||
564.3904 171984
|
|
||||||
584.5472 181485
|
|
||||||
604.704 191113
|
|
||||||
624.8608 200861
|
|
||||||
645.0176 210724
|
|
||||||
665.1744 220697
|
|
||||||
685.3312 230775
|
|
||||||
705.488 240953
|
|
||||||
725.6448 251226
|
|
||||||
745.8016 261591
|
|
||||||
765.9584 272043
|
|
||||||
786.1152 282578
|
|
||||||
806.272 293192
|
|
||||||
826.4288 303883
|
|
||||||
846.5856 314646
|
|
||||||
866.7424 325478
|
|
||||||
886.8992 336377
|
|
||||||
907.056 347338
|
|
||||||
927.2128 358361
|
|
||||||
947.3696 369441
|
|
||||||
967.5264 380577
|
|
||||||
987.6832 391765
|
|
||||||
1007.84 403003
|
|
||||||
1027.9968 414290
|
|
||||||
1048.1536 425622
|
|
||||||
1068.3104 436998
|
|
||||||
1088.4672 448416
|
|
||||||
1108.624 459874
|
|
||||||
1128.7808 471370
|
|
||||||
1148.9376 482902
|
|
||||||
1169.0944 494468
|
|
||||||
1189.2512 506067
|
|
||||||
1209.408 517698
|
|
||||||
1229.5648 529358
|
|
||||||
1249.7216 541047
|
|
||||||
1269.8784 552762
|
|
||||||
1290.0352 564502
|
|
||||||
1310.192 576267
|
|
||||||
1330.3488 588055
|
|
||||||
1350.5056 599864
|
|
||||||
1370.6624 611694
|
|
||||||
1390.8192 623543
|
|
||||||
1410.976 635410
|
|
||||||
1431.1328 647295
|
|
||||||
1451.2896 659195
|
|
||||||
1471.4464 671111
|
|
||||||
1491.6032 683041
|
|
||||||
1511.76 694984
|
|
||||||
1531.9168 706940
|
|
||||||
1552.0736 718907
|
|
||||||
1572.2304 730885
|
|
||||||
1592.3872 742872
|
|
||||||
1612.544 754869
|
|
||||||
1632.7008 766874
|
|
||||||
1652.8576 778887
|
|
||||||
1673.0144 790907
|
|
||||||
1693.1712 802933
|
|
||||||
1713.328 814964
|
|
||||||
1763.72 845063
|
|
||||||
1814.112 875184
|
|
||||||
1864.504 905318
|
|
||||||
1914.896 935457
|
|
||||||
1965.288 965594
|
|
||||||
2015.68 995721
|
|
||||||
2116.464 1.06E+06
|
|
||||||
2217.248 1.12E+06
|
|
||||||
2318.032 1.18E+06
|
|
||||||
2418.816 1.24E+06
|
|
||||||
2519.6 1.30E+06
|
|
||||||
2620.384 1.35E+06
|
|
||||||
2721.168 1.41E+06
|
|
||||||
2821.952 1.47E+06
|
|
||||||
2922.736 1.53E+06
|
|
||||||
3023.52 1.59E+06
|
|
||||||
3225.088 1.70E+06
|
|
||||||
3426.656 1.82E+06
|
|
||||||
3628.224 1.93E+06
|
|
||||||
3829.792 2.04E+06
|
|
||||||
4031.36 2.15E+06
|
|
||||||
4232.928 2.26E+06
|
|
||||||
4434.496 2.37E+06
|
|
||||||
4636.064 2.48E+06
|
|
||||||
4837.632 2.58E+06
|
|
||||||
5039.2 2.68E+06
|
|
||||||
5291.16 2.81E+06
|
|
||||||
5543.12 2.94E+06
|
|
||||||
6047.04 3.18E+06
|
|
||||||
6550.96 3.42E+06
|
|
||||||
7054.88 3.64E+06
|
|
||||||
7558.8 3.87E+06
|
|
||||||
8062.72 4.08E+06
|
|
||||||
8566.64 4.29E+06
|
|
||||||
9070.56 4.49E+06
|
|
||||||
9574.48 4.69E+06
|
|
||||||
10078.4 4.88E+06
|
|
||||||
11086.24 5.25E+06
|
|
||||||
12094.08 5.61E+06
|
|
||||||
13101.92 5.94E+06
|
|
||||||
14109.76 6.26E+06
|
|
||||||
15117.6 6.57E+06
|
|
||||||
16125.44 6.86E+06
|
|
||||||
17133.28 7.14E+06
|
|
||||||
18141.12 7.41E+06
|
|
||||||
19148.96 7.67E+06
|
|
||||||
20156.8 7.93E+06
|
|
||||||
21164.64 8.17E+06
|
|
||||||
22172.48 8.41E+06
|
|
||||||
23180.32 8.63E+06
|
|
||||||
24188.16 8.86E+06
|
|
||||||
25196 9.07E+06
|
|
||||||
26203.84 9.28E+06
|
|
||||||
27211.68 9.48E+06
|
|
||||||
28219.52 9.68E+06
|
|
||||||
29227.36 9.87E+06
|
|
||||||
30235.2 1.01E+07
|
|
||||||
32250.88 1.04E+07
|
|
||||||
34266.56 1.08E+07
|
|
||||||
36282.24 1.11E+07
|
|
||||||
38297.92 1.14E+07
|
|
||||||
40313.6 1.17E+07
|
|
||||||
42329.28 1.20E+07
|
|
||||||
44344.96 1.23E+07
|
|
||||||
46360.64 1.25E+07
|
|
||||||
48376.32 1.28E+07
|
|
||||||
50392 1.30E+07
|
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
455
MakeVertex.C
455
MakeVertex.C
|
|
@ -13,8 +13,8 @@ Int_t colors[40] = {
|
||||||
#include "Armory/ClassPW.h"
|
#include "Armory/ClassPW.h"
|
||||||
#include "Armory/HistPlotter.h"
|
#include "Armory/HistPlotter.h"
|
||||||
#include "Armory/SX3Geom.h"
|
#include "Armory/SX3Geom.h"
|
||||||
#include "scratch/sx3z_vs_phiz/testmodel.h"
|
#include "Armory/PC_StepLadder_Correction.h"
|
||||||
#include "scratch/test_eloss.h"
|
#include "Armory/Kinematics.h"
|
||||||
#include <TH2.h>
|
#include <TH2.h>
|
||||||
#include <TF1.h>
|
#include <TF1.h>
|
||||||
#include <TStyle.h>
|
#include <TStyle.h>
|
||||||
|
|
@ -38,6 +38,7 @@ Int_t colors[40] = {
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
bool realtime = true;
|
bool realtime = true;
|
||||||
|
bool process_alpha_proton_scattering = true;
|
||||||
double source_vertex = 53; //53
|
double source_vertex = 53; //53
|
||||||
const double qqq_z = 100.0;
|
const double qqq_z = 100.0;
|
||||||
const double anode_gain = 1.5146e-5; //channels --> MeV
|
const double anode_gain = 1.5146e-5; //channels --> MeV
|
||||||
|
|
@ -58,6 +59,7 @@ TPolyLine3D *qqqw[16][4]={NULL};
|
||||||
TPolyLine3D *trajectory=NULL;
|
TPolyLine3D *trajectory=NULL;
|
||||||
TGraph2D *qqqg=NULL, *crossoverg=NULL, *guessg=NULL;
|
TGraph2D *qqqg=NULL, *crossoverg=NULL, *guessg=NULL;
|
||||||
|
|
||||||
|
|
||||||
double z_to_crossover_rho(double z) {
|
double z_to_crossover_rho(double z) {
|
||||||
return 9.20645e-5*z*z + 34.1973;
|
return 9.20645e-5*z*z + 34.1973;
|
||||||
}
|
}
|
||||||
|
|
@ -113,6 +115,9 @@ bool HitNonZero;
|
||||||
bool sx3ecut;
|
bool sx3ecut;
|
||||||
bool qqqEcut;
|
bool qqqEcut;
|
||||||
|
|
||||||
|
void protonAlphaHistograms(HistPlotter* plotter, std::vector<Event> QQQ_Events, std::vector<Event> SX3_Events, std::vector<Event> PC_Events);
|
||||||
|
|
||||||
|
|
||||||
void MakeVertex::Begin(TTree * /*tree*/)
|
void MakeVertex::Begin(TTree * /*tree*/)
|
||||||
{
|
{
|
||||||
pcfix_func.SetNpx(100000);
|
pcfix_func.SetNpx(100000);
|
||||||
|
|
@ -176,7 +181,7 @@ void MakeVertex::Begin(TTree * /*tree*/)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
std::cerr << "Error opening slope_intercept.txt" << std::endl;
|
std::cerr << "Error opening slope_intercept.dat" << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ... (Load QQQ Gains and Calibs - same as before) ...
|
// ... (Load QQQ Gains and Calibs - same as before) ...
|
||||||
|
|
@ -236,11 +241,12 @@ void MakeVertex::Begin(TTree * /*tree*/)
|
||||||
}
|
}
|
||||||
infile.close();
|
infile.close();
|
||||||
}
|
}
|
||||||
MeV_to_cm = new TGraph("ELoss/alpha_lookup_20MeV.dat","%lf %*lf %lf");
|
// MeV_to_cm = new TGraph("eloss_calculations/alphas_in_250torr_mix_filtered_6MeV.txt","%lf %*lf %lf");
|
||||||
|
MeV_to_cm = new TGraph("eloss_calculations/alpha_lookup_20MeV.dat","%lf %*lf %lf");
|
||||||
cm_to_MeV= new TGraph(MeV_to_cm->GetN(), MeV_to_cm->GetY(), MeV_to_cm->GetX());
|
cm_to_MeV= new TGraph(MeV_to_cm->GetN(), MeV_to_cm->GetY(), MeV_to_cm->GetX());
|
||||||
|
|
||||||
MeV_to_cm_p = new TGraph("ELoss/proton_lookup_20MeV.dat","%lf %*lf %lf");
|
MeV_to_cm_p = new TGraph("eloss_calculations/proton_lookup_20MeV.dat","%lf %*lf %lf");
|
||||||
cm_to_MeVp= new TGraph(MeV_to_cm->GetN(), MeV_to_cm->GetY(), MeV_to_cm->GetX());
|
cm_to_MeVp= new TGraph(MeV_to_cm_p->GetN(), MeV_to_cm_p->GetY(), MeV_to_cm_p->GetX());
|
||||||
|
|
||||||
//cm_to_MeV.Eval(MeV_to_cm.Eval(detectedE)-PathLength) gives energy of particle before it traversed 'path length'
|
//cm_to_MeV.Eval(MeV_to_cm.Eval(detectedE)-PathLength) gives energy of particle before it traversed 'path length'
|
||||||
|
|
||||||
|
|
@ -391,17 +397,17 @@ Bool_t MakeVertex::Process(Long64_t entry)
|
||||||
bool no_charge_sharing_strict = det.valid_front_chans.size()==1 && det.valid_back_chans.size()==1;
|
bool no_charge_sharing_strict = det.valid_front_chans.size()==1 && det.valid_back_chans.size()==1;
|
||||||
if(det.valid) {
|
if(det.valid) {
|
||||||
//std::cout << det.frontEL << " " << det.frontEL*sx3RightGain[id][det.stripF] << std::endl;
|
//std::cout << det.frontEL << " " << det.frontEL*sx3RightGain[id][det.stripF] << std::endl;
|
||||||
plotter->Fill2D("be_vs_x_sx3_id_"+std::to_string(id)+"_f"+std::to_string(det.stripF)+"_b"+std::to_string(det.stripB),200,-1,1,800,0,8192,
|
//plotter->Fill2D("be_vs_x_sx3_id_"+std::to_string(id)+"_f"+std::to_string(det.stripF)+"_b"+std::to_string(det.stripB),200,-1,1,800,0,8192,det.frontX,det.backE,"evsx");
|
||||||
det.frontX,det.backE,"evsx");
|
|
||||||
|
|
||||||
//std::cout << sx3BackGain[id][det.stripF][det.stripB] << " " << sx3FrontGain[id][det.stripF] << std::endl;
|
|
||||||
plotter->Fill2D("matched_be_vs_x_sx3_id_"+std::to_string(id)+"_f"+std::to_string(det.stripF),200,-60,60,800,0,8192,
|
plotter->Fill2D("matched_be_vs_x_sx3_id_"+std::to_string(id)+"_f"+std::to_string(det.stripF),200,-60,60,800,0,8192,
|
||||||
det.frontX*sx3FrontGain[id][det.stripF]+sx3FrontOffset[id][det.stripF],det.backE*sx3BackGain[id][det.stripF][det.stripB],"evsx_matched");
|
det.frontX*sx3FrontGain[id][det.stripF]+sx3FrontOffset[id][det.stripF],det.backE*sx3BackGain[id][det.stripF][det.stripB],"evsx_matched");
|
||||||
//plotter->Fill2D("fe_vs_x_sx3_id_"+std::to_string(id)+"_f"+std::to_string(det.stripF)+"_"+std::to_string(det.stripB),200,-1,1,800,0,4096,det.frontX,det.backE,"evsx");
|
//plotter->Fill2D("fe_vs_x_sx3_id_"+std::to_string(id)+"_f"+std::to_string(det.stripF)+"_"+std::to_string(det.stripB),200,-1,1,800,0,4096,det.frontX,det.backE,"evsx");
|
||||||
plotter->Fill2D("l_vs_r_sx3_id_"+std::to_string(id)+"_f"+std::to_string(det.stripF),800,0,4096,800,0,4096,det.frontEL,det.frontER,"l_vs_r");
|
//plotter->Fill2D("l_vs_r_sx3_id_"+std::to_string(id)+"_f"+std::to_string(det.stripF),800,0,4096,800,0,4096,det.frontEL,det.frontER,"l_vs_r");
|
||||||
}
|
}
|
||||||
if(det.valid && (id ==9 || id==7 || id == 1 || id==3) && det.stripF!=DEFAULT_NULL && det.stripB!=DEFAULT_NULL) {
|
if(det.valid && (id ==9 || id==7 || id == 1 || id==3) && det.stripF!=DEFAULT_NULL && det.stripB!=DEFAULT_NULL) {
|
||||||
double z = det.frontX*sx3FrontGain[id][det.stripF]+sx3FrontOffset[id][det.stripF];
|
double z = det.frontX*sx3FrontGain[id][det.stripF]+sx3FrontOffset[id][det.stripF];
|
||||||
|
z = z+(75.0/2.0)-3.0;//convert local sx3z to detector global coordinate system as indicated by measurements.
|
||||||
|
// Note that this will be different for the upstream barrel, when it gets implemented
|
||||||
double backE = det.backE*sx3BackGain[id][det.stripF][det.stripB];
|
double backE = det.backE*sx3BackGain[id][det.stripF][det.stripB];
|
||||||
//if(backE<2000) continue;
|
//if(backE<2000) continue;
|
||||||
det.stripF=3-det.stripF;
|
det.stripF=3-det.stripF;
|
||||||
|
|
@ -409,22 +415,25 @@ Bool_t MakeVertex::Process(Long64_t entry)
|
||||||
double phi_n = ((-id+0.5)*30+beta_n);
|
double phi_n = ((-id+0.5)*30+beta_n);
|
||||||
phi_n+=45;
|
phi_n+=45;
|
||||||
|
|
||||||
if(getenv("flip180")) {
|
//if(getenv("flip180")) {
|
||||||
if(std::string(getenv("flip180"))=="1") {
|
// if(std::string(getenv("flip180"))=="1") {
|
||||||
//if(dataset=="17F")
|
//if(dataset=="17F")
|
||||||
phi_n+=180;//run 37 in 17F-->
|
// phi_n+=180;//run 37 in 17F-->
|
||||||
}
|
//}
|
||||||
}
|
//}
|
||||||
phi_n*=M_PI/180.; //starting-position phi + strip contribution
|
phi_n*=M_PI/180.; //starting-position phi + strip contribution
|
||||||
Event sx3ev(TVector3(88.0*TMath::Cos(phi_n),88.0*TMath::Sin(phi_n),z),backE*0.001,-1,det.ts,-1,det.stripB+4*id,det.stripF+4*id);
|
Event sx3ev(TVector3(88.0*TMath::Cos(phi_n),88.0*TMath::Sin(phi_n),z),backE*0.001,-1,det.ts,-1,det.stripB+4*id,det.stripF+4*id);
|
||||||
SX3_Events.push_back(sx3ev);
|
SX3_Events.push_back(sx3ev);
|
||||||
plotter->Fill2D("sx3backs_gm",100,0,100,800,0,8192,det.stripB+4*id,backE);
|
plotter->Fill2D("sx3backs_gm",100,0,100,800,0,8192,det.stripB+4*id,backE);
|
||||||
plotter->Fill2D("sx3backs_raw",100,0,100,800,0,8192,det.stripB+4*id,det.backE);
|
|
||||||
|
|
||||||
//plotter->Fill2D("SX3CartesianPlot", 200, -100, 100, 200, -100, 100, 88.0*TMath::Cos(phi_n),88.0*TMath::Sin(phi_n), "hCalSX3");
|
//plotter->Fill2D("SX3CartesianPlot", 200, -100, 100, 200, -100, 100, 88.0*TMath::Cos(phi_n),88.0*TMath::Sin(phi_n), "hCalSX3");
|
||||||
plotter->Fill2D("SX3CartesianPlot" + std::to_string(id), 200, -100, 100, 200, -100, 100, 88.0*TMath::Cos(phi_n),88.0*TMath::Sin(phi_n), "hCalSX3");
|
plotter->Fill2D("SX3CartesianPlot" + std::to_string(id), 200, -100, 100, 200, -100, 100, 88.0*TMath::Cos(phi_n),88.0*TMath::Sin(phi_n), "hCalSX3");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
if(det.valid && det.stripF!=DEFAULT_NULL && det.stripB!=DEFAULT_NULL) {
|
||||||
|
plotter->Fill2D("sx3backs_raw",100,0,100,800,0,8192,det.stripB+4*id,det.backE);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//return kTRUE;
|
//return kTRUE;
|
||||||
|
|
@ -564,7 +573,6 @@ Bool_t MakeVertex::Process(Long64_t entry)
|
||||||
if (pc.index[k] >= 24 && pc.e[k] > 10) {
|
if (pc.index[k] >= 24 && pc.e[k] > 10) {
|
||||||
if (tRing - static_cast<double>(pc.t[k]) < -200) PCCQQQTimeCut = true;
|
if (tRing - static_cast<double>(pc.t[k]) < -200) PCCQQQTimeCut = true;
|
||||||
//if (tRing - static_cast<double>(pc.t[k]) > 200) PCCQQQTimeCut = true;
|
//if (tRing - static_cast<double>(pc.t[k]) > 200) PCCQQQTimeCut = true;
|
||||||
|
|
||||||
plotter->Fill2D("Timing_Difference_QQQ_PC_Cathode", 500, -2000, 2000, 16, 0, 16, tRing - static_cast<double>(pc.t[k]), chRing, "hTiming");
|
plotter->Fill2D("Timing_Difference_QQQ_PC_Cathode", 500, -2000, 2000, 16, 0, 16, tRing - static_cast<double>(pc.t[k]), chRing, "hTiming");
|
||||||
}
|
}
|
||||||
} //end of pc k loop
|
} //end of pc k loop
|
||||||
|
|
@ -574,7 +582,6 @@ Bool_t MakeVertex::Process(Long64_t entry)
|
||||||
//double rho = 50. + (50. / 16.) * (chRing + 0.5); //"?"
|
//double rho = 50. + (50. / 16.) * (chRing + 0.5); //"?"
|
||||||
double theta = 2 * TMath::Pi() * (-qqq.id[i] * 16 + (15-chWedge) + 0.5)/(16*4);
|
double theta = 2 * TMath::Pi() * (-qqq.id[i] * 16 + (15-chWedge) + 0.5)/(16*4);
|
||||||
double rho = 50. + (50. / 16.) * (chRing + 0.5); //"?"
|
double rho = 50. + (50. / 16.) * (chRing + 0.5); //"?"
|
||||||
|
|
||||||
double x = rho * TMath::Cos(theta);
|
double x = rho * TMath::Cos(theta);
|
||||||
double y = rho * TMath::Sin(theta);
|
double y = rho * TMath::Sin(theta);
|
||||||
hitPos.SetXYZ(x, y, qqq_z);
|
hitPos.SetXYZ(x, y, qqq_z);
|
||||||
|
|
@ -591,9 +598,9 @@ Bool_t MakeVertex::Process(Long64_t entry)
|
||||||
PCQQQTimeCut = PCAQQQTimeCut && PCCQQQTimeCut;
|
PCQQQTimeCut = PCAQQQTimeCut && PCCQQQTimeCut;
|
||||||
plotter->Fill1D("QQQ_Multiplicity", 10, 0, 10, qqqCount, "hRawQQQ");
|
plotter->Fill1D("QQQ_Multiplicity", 10, 0, 10, qqqCount, "hRawQQQ");
|
||||||
|
|
||||||
|
typedef std::unordered_map<int,std::tuple<int,double,double>> WireEvent; //this stores nearest neighbour wire events, or a 'cluster'
|
||||||
typedef std::unordered_map<int,std::tuple<int,double,double>> WireEvent; //this stores nearest neighbour wire events, or a 'cluster'
|
WireEvent aWireEvents, cWireEvents; //naming for book keeping
|
||||||
WireEvent aWireEvents, cWireEvents; //naming for book keeping
|
|
||||||
aWireEvents.clear();
|
aWireEvents.clear();
|
||||||
aWireEvents.reserve(24);
|
aWireEvents.reserve(24);
|
||||||
if(realtime) {
|
if(realtime) {
|
||||||
|
|
@ -752,91 +759,11 @@ Bool_t MakeVertex::Process(Long64_t entry)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//Sidetrack for a(p,p)
|
if(process_alpha_proton_scattering) {
|
||||||
std::string aplabel = "a(p,p)";
|
protonAlphaHistograms(plotter,QQQ_Events,SX3_Events,PC_Events);
|
||||||
for(auto qqqevent: QQQ_Events) {
|
//return kTRUE;
|
||||||
for(auto sx3event:SX3_Events) {
|
}//end if(process_alpha_proton_scattering)
|
||||||
plotter->Fill1D("qqq_sx3_dt",1024,-4000,4000,qqqevent.Time1-sx3event.Time1,aplabel);
|
|
||||||
if(TMath::Abs(qqqevent.Time1-sx3event.Time1)>300) continue;
|
|
||||||
plotter->Fill1D("qqq_sx3_dt_timecut",1024,-4000,4000,qqqevent.Time1-sx3event.Time1,aplabel);
|
|
||||||
plotter->Fill1D("qqq_sx3_dphi",180,-360,360,qqqevent.pos.Phi()*180/M_PI - sx3event.pos.Phi()*180/M_PI,aplabel);
|
|
||||||
plotter->Fill2D("qqq_sx3_matrix",400,0,10,400,0,10,qqqevent.Energy1,sx3event.Energy1,aplabel);
|
|
||||||
|
|
||||||
for(auto pcevent: PC_Events) {
|
|
||||||
|
|
||||||
double pcz_fix = pcfix_func.Eval(pcevent.pos.Z());
|
|
||||||
TVector3 x2f(pcevent.pos.X(),pcevent.pos.Y(),pcz_fix);
|
|
||||||
TVector3 x1(qqqevent.pos);
|
|
||||||
TVector3 v = x2f-x1;
|
|
||||||
double t_minimum = -1.0*(x1.X()*v.X()+x1.Y()*v.Y())/(v.X()*v.X()+v.Y()*v.Y());
|
|
||||||
TVector3 r_rhoMin_fix = x1 + t_minimum*v;
|
|
||||||
double sinTheta_customV = TMath::Sin((qqqevent.pos - TVector3(0,0,r_rhoMin_fix.Z())).Theta());
|
|
||||||
//double sinTheta = TMath::Sin((qqqevent.pos - pcevent.pos).Theta());
|
|
||||||
//plotter->Fill2D("sinTheta2_vs_sinTheta",80,-2,2,80,-2,2,sinTheta,sinTheta_customV,aplabel);
|
|
||||||
|
|
||||||
// plotter->Fill2D("dE_E_Anodesx3B",400,0,10,800,0,40000,sx3event.Energy1,pcevent.Energy1,aplabel);
|
|
||||||
// plotter->Fill2D("dE_E_Cathodesx3B",400,0,10,800,0,10000,sx3event.Energy1,pcevent.Energy2,aplabel);
|
|
||||||
// plotter->Fill2D("dE_E_AnodeQQQ",400,0,10,800,0,40000,qqqevent.Energy1,pcevent.Energy1,aplabel);
|
|
||||||
// plotter->Fill2D("dE_E_CathodeQQQ",400,0,10,800,0,10000,qqqevent.Energy1,pcevent.Energy2,aplabel);
|
|
||||||
// plotter->Fill2D("dE3_E_AnodeQQQ",400,0,10,400,0,40000,qqqevent.Energy1,pcevent.Energy1*sinTheta_customV,aplabel);
|
|
||||||
// plotter->Fill2D("dE3_E_CathodeQQQ",400,0,10,400,0,10000,qqqevent.Energy1,pcevent.Energy2*sinTheta_customV,aplabel);
|
|
||||||
|
|
||||||
// plotter->Fill2D("dPhi_QQQ_PC",180,-360,360,180,-360,360,pcevent.pos.Phi()*180/M_PI,qqqevent.pos.Phi()*180/M_PI,aplabel);
|
|
||||||
// plotter->Fill2D("dPhi_SX3_PC",180,-360,360,180,-360,360,pcevent.pos.Phi()*180/M_PI,sx3event.pos.Phi()*180/M_PI,aplabel);
|
|
||||||
// plotter->Fill1D("dt_Anode_QQQ",600,-2000,2000,pcevent.Time1-qqqevent.Time1,aplabel);
|
|
||||||
// plotter->Fill1D("dt_Cathode_QQQ",600,-2000,2000,pcevent.Time2-qqqevent.Time1,aplabel);
|
|
||||||
// plotter->Fill1D("dt_Anode_SX3",600,-2000,2000,pcevent.Time1-sx3event.Time1,aplabel);
|
|
||||||
// plotter->Fill1D("dt_Cathode_SX3",600,-2000,2000,pcevent.Time2-sx3event.Time1,aplabel);
|
|
||||||
// plotter->Fill1D("pczfix",600,-300,300,pcz_fix,aplabel);
|
|
||||||
// plotter->Fill1D("pcz",600,-300,300,pcevent.pos.Z(),aplabel);
|
|
||||||
|
|
||||||
double path_length_q = (qqqevent.pos-TVector3(0,0,r_rhoMin_fix.Z())).Mag()*0.1;
|
|
||||||
double path_length_s = (sx3event.pos-TVector3(0,0,r_rhoMin_fix.Z())).Mag()*0.1;
|
|
||||||
/*
|
|
||||||
We know that alphas predominantly are detected in QQQs, and protons in SX3s, and that protons don't leave much of a trace in dE layer.
|
|
||||||
Using the estimated path lengths, we correct alpha eloss in qqq, and protons in sx3. The result should (hopefully be) vertex independent.
|
|
||||||
*/
|
|
||||||
double qqqEfix = cm_to_MeV->Eval(MeV_to_cm->Eval(qqqevent.Energy1)-path_length_q);
|
|
||||||
double sx3Efix = cm_to_MeVp->Eval(MeV_to_cm_p->Eval(sx3event.Energy1)-path_length_s);
|
|
||||||
|
|
||||||
plotter->Fill2D("qqqEf_sx3E_matrix_all",400,0,10,400,0,10,qqqEfix,sx3event.Energy1,aplabel);
|
|
||||||
|
|
||||||
if(pcevent.multi1==1 && pcevent.multi2==2 && TMath::Abs(r_rhoMin_fix.Z())<200) { //one-anode, two-cathode events, as originally intended
|
|
||||||
plotter->Fill1D("VertexReconZ",400,-200,200,r_rhoMin_fix.Z(),aplabel);
|
|
||||||
plotter->Fill2D("VertexReconXY",200,-100,100,200,-100,100,r_rhoMin_fix.X(),r_rhoMin_fix.Y(),aplabel);
|
|
||||||
|
|
||||||
plotter->Fill2D("qqqEf_sx3E_matrix",400,0,10,400,0,10,qqqEfix,sx3event.Energy1,aplabel);
|
|
||||||
//plotter->Fill2D("dE3_Ef_AnodeQQQ_a1c2",400,0,10,400,0,40000,qqqEfix,pcevent.Energy1*sinTheta_customV,aplabel);
|
|
||||||
//plotter->Fill2D("dE3_Ef_CathodeQQQ_a1c2",400,0,10,400,0,10000,qqqEfix,pcevent.Energy2*sinTheta_customV,aplabel);
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
} //end sidetrack a(p,p)
|
|
||||||
//return kTRUE;
|
|
||||||
|
|
||||||
/*for(auto sx3event: SX3_Events) {
|
|
||||||
for(int i=0; i<24; i++) {
|
|
||||||
if(aWireEvents.find(i) != aWireEvents.end()) {
|
|
||||||
auto awire = aWireEvents[i];
|
|
||||||
if(sx3event.Time1 -(double)std::get<2>(awire)< -100) {
|
|
||||||
plotter->Fill2D("sx3_z_phi2_awire"+std::to_string(std::get<0>(awire)), 400,-100,100, 100, -200,200,sx3event.pos.Z(), sx3event.pos.Phi()*180/M_PI );
|
|
||||||
plotter->Fill2D("sx3_z_strip#_awire"+std::to_string(std::get<0>(awire)), 400,-100,100, 100, -50,50,sx3event.pos.Z(), sx3event.ch2);
|
|
||||||
|
|
||||||
//std::cout << sx3event.pos.Z() << " " << std::get<0>(awire) << " " << std::get<0>(awire) - sx3event.Time1 << std::endl;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(cWireEvents.find(i) != cWireEvents.end()) {
|
|
||||||
auto cwire = cWireEvents[i];
|
|
||||||
if(sx3event.Time1 -(double)std::get<2>(cwire) < -100) {
|
|
||||||
plotter->Fill2D("sx3_z_phi2_cwire"+std::to_string(std::get<0>(cwire)),400,-100,100, 100, -200,200,sx3event.pos.Z(), sx3event.pos.Phi()*180/M_PI );
|
|
||||||
plotter->Fill2D("sx3_z_strip#_cwire"+std::to_string(std::get<0>(cwire)),400,-100,100, 100, -50,50,sx3event.pos.Z(), sx3event.ch2 );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
|
|
||||||
if(QQQ_Events.size() && PC_Events.size())
|
if(QQQ_Events.size() && PC_Events.size())
|
||||||
plotter->Fill2D("PCEv_vs_QQQEv",20,0,20,20,0,20,QQQ_Events.size(),PC_Events.size());
|
plotter->Fill2D("PCEv_vs_QQQEv",20,0,20,20,0,20,QQQ_Events.size(),PC_Events.size());
|
||||||
|
|
@ -852,6 +779,51 @@ Bool_t MakeVertex::Process(Long64_t entry)
|
||||||
if(cClusters.size() && aClusters.size()) {
|
if(cClusters.size() && aClusters.size()) {
|
||||||
plotter->Fill2D("ac_vs_cc_ign0",20,0,20,20,0,20,aClusters.size(),cClusters.size(),"wiremult");
|
plotter->Fill2D("ac_vs_cc_ign0",20,0,20,20,0,20,aClusters.size(),cClusters.size(),"wiremult");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for(auto sx3event: SX3_Events) {
|
||||||
|
for(int i=0; i<24; i++) {
|
||||||
|
if(aWireEvents.find(i) != aWireEvents.end()) {
|
||||||
|
auto awire = aWireEvents[i];
|
||||||
|
if(sx3event.Time1 -(double)std::get<2>(awire)< -150) {
|
||||||
|
//plotter->Fill2D("sx3_z_phi2_awire"+std::to_string(std::get<0>(awire)), 400,-100,100, 100, -200,200,sx3event.pos.Z(), sx3event.pos.Phi()*180/M_PI );
|
||||||
|
//plotter->Fill2D("sx3_z_strip#_awire"+std::to_string(std::get<0>(awire)), 400,-100,100, 100, -50,50,sx3event.pos.Z(), sx3event.ch2);
|
||||||
|
plotter->Fill2D("onewire_dEa_Esx3_TC1_fullev"+std::to_string(PC_Events.size()>0),400,0,10,800,0,40000,sx3event.Energy1,std::get<1>(awire));
|
||||||
|
plotter->Fill2D("onewire_aNum_sx3Phi_TC1_fullev"+std::to_string(PC_Events.size()>0),24,0,24,120,-360,360,i,sx3event.pos.Phi()*180./M_PI);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(cWireEvents.find(i) != cWireEvents.end()) {
|
||||||
|
auto cwire = cWireEvents[i];
|
||||||
|
if(sx3event.Time1 -(double)std::get<2>(cwire) < -150) {
|
||||||
|
//plotter->Fill2D("sx3_z_phi2_cwire"+std::to_string(std::get<0>(cwire)),400,-100,100, 100, -200,200,sx3event.pos.Z(), sx3event.pos.Phi()*180/M_PI );
|
||||||
|
//plotter->Fill2D("sx3_z_strip#_cwire"+std::to_string(std::get<0>(cwire)),400,-100,100, 100, -50,50,sx3event.pos.Z(), sx3event.ch2 );
|
||||||
|
plotter->Fill2D("onewire_dEc_Esx3_fullev"+std::to_string(PC_Events.size()>0),400,0,10,800,0,40000,sx3event.Energy1,std::get<1>(cwire));
|
||||||
|
plotter->Fill2D("onewire_cNum_sx3Phi_TC1_fullev"+std::to_string(PC_Events.size()>0),24,0,24,120,-360,360,i,sx3event.pos.Phi()*180./M_PI);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}//for 'i' loop
|
||||||
|
}
|
||||||
|
|
||||||
|
for(auto qqqevent: QQQ_Events) {
|
||||||
|
for(int i=0; i<24; i++) {
|
||||||
|
if(aWireEvents.find(i) != aWireEvents.end()) {
|
||||||
|
auto awire = aWireEvents[i];
|
||||||
|
if(qqqevent.Time1 -(double)std::get<2>(awire)< -150) {
|
||||||
|
plotter->Fill2D("onewire_dEa_Eqqq_TC1_fullev"+std::to_string(PC_Events.size()>0),400,0,10,800,0,40000,qqqevent.Energy1,std::get<1>(awire));
|
||||||
|
plotter->Fill2D("onewire_aNum_QQQPhi_TC1_fullev"+std::to_string(PC_Events.size()>0),24,0,24,120,-360,360,i,qqqevent.pos.Phi()*180./M_PI);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(cWireEvents.find(i) != cWireEvents.end()) {
|
||||||
|
auto cwire = cWireEvents[i];
|
||||||
|
if(qqqevent.Time1 -(double)std::get<2>(cwire) < -150) {
|
||||||
|
plotter->Fill2D("onewire_dEc_Eqqq_TC1_fullev"+std::to_string(PC_Events.size()>0),400,0,10,800,0,40000,qqqevent.Energy1,std::get<1>(cwire));
|
||||||
|
plotter->Fill2D("onewire_cNum_QQQPhi_TC1_fullev"+std::to_string(PC_Events.size()>0),24,0,24,120,-360,360,i,qqqevent.pos.Phi()*180./M_PI);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}//for 'i' loop
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
for(auto pcevent:PC_Events) {
|
for(auto pcevent:PC_Events) {
|
||||||
if(aClusters.size()==1 && cClusters.size() == 1) {
|
if(aClusters.size()==1 && cClusters.size() == 1) {
|
||||||
|
|
@ -864,8 +836,8 @@ Bool_t MakeVertex::Process(Long64_t entry)
|
||||||
|
|
||||||
PCSX3TimeCut=false;
|
PCSX3TimeCut=false;
|
||||||
for(auto sx3event:SX3_Events) {
|
for(auto sx3event:SX3_Events) {
|
||||||
plotter->Fill1D("dt_pcA_sx3B"+std::to_string(sx3event.ch2),1024,-4000,4000,sx3event.Time1 - pcevent.Time1,"hTiming");
|
plotter->Fill1D("dt_pcA_sx3B"+std::to_string(sx3event.ch2),640,-2000,2000,sx3event.Time1 - pcevent.Time1,"hTiming");
|
||||||
plotter->Fill1D("dt_pcC_sx3B"+std::to_string(sx3event.ch2),1024,-4000,4000,sx3event.Time1 - pcevent.Time2,"hTiming");
|
plotter->Fill1D("dt_pcC_sx3B"+std::to_string(sx3event.ch2),640,-2000,2000,sx3event.Time1 - pcevent.Time2,"hTiming");
|
||||||
if(sx3event.Time1 - pcevent.Time1 < 0)//-150 for alphas
|
if(sx3event.Time1 - pcevent.Time1 < 0)//-150 for alphas
|
||||||
PCASX3TimeCut = 1;
|
PCASX3TimeCut = 1;
|
||||||
if(sx3event.Time1 - pcevent.Time2 < 0)//-200 for alphas
|
if(sx3event.Time1 - pcevent.Time2 < 0)//-200 for alphas
|
||||||
|
|
@ -874,28 +846,30 @@ Bool_t MakeVertex::Process(Long64_t entry)
|
||||||
|
|
||||||
bool phicut = sx3event.pos.Phi() <= pcevent.pos.Phi()+TMath::Pi()/4. && sx3event.pos.Phi() >= pcevent.pos.Phi()-TMath::Pi()/4.;
|
bool phicut = sx3event.pos.Phi() <= pcevent.pos.Phi()+TMath::Pi()/4. && sx3event.pos.Phi() >= pcevent.pos.Phi()-TMath::Pi()/4.;
|
||||||
|
|
||||||
|
plotter->Fill1D("dt_pcA_sx3B",640,-2000,2000,sx3event.Time1 - pcevent.Time1);
|
||||||
plotter->Fill1D("dt_pcA_sx3B",1024,-4000,4000,sx3event.Time1 - pcevent.Time1);
|
plotter->Fill1D("dt_pcC_sx3B",640,-2000,2000,sx3event.Time1 - pcevent.Time2);
|
||||||
plotter->Fill1D("dt_pcC_sx3B",1024,-4000,4000,sx3event.Time1 - pcevent.Time2);
|
plotter->Fill2D("dt_pcA_vs_sx3RE",640,-2000,2000,400,0,30,sx3event.Time1-pcevent.Time1, sx3event.Energy1);
|
||||||
plotter->Fill2D("dt_pcA_vs_sx3RE",1024,-4000,4000,400,0,10,sx3event.Time1-pcevent.Time1, sx3event.Energy1);
|
plotter->Fill2D("dE_E_Anodesx3B",400,0,30,800,0,40000,sx3event.Energy1,pcevent.Energy1);
|
||||||
plotter->Fill2D("dE_E_Anodesx3B",400,0,10,800,0,40000,sx3event.Energy1,pcevent.Energy1);
|
plotter->Fill2D("dE_E_Cathodesx3B",400,0,30,800,0,10000,sx3event.Energy1,pcevent.Energy2);
|
||||||
plotter->Fill2D("dE_E_Cathodesx3B",400,0,10,800,0,10000,sx3event.Energy1,pcevent.Energy2);
|
if(pcevent.multi1==1 && pcevent.multi2==2) plotter->Fill2D("dE_E_Anodesx3B_a1c2",400,0,30,800,0,40000,sx3event.Energy1,pcevent.Energy1);
|
||||||
|
if(pcevent.multi1==1 && pcevent.multi2==2) plotter->Fill2D("dE_E_Cathodesx3B_a1c2",400,0,30,800,0,10000,sx3event.Energy1,pcevent.Energy2);
|
||||||
|
if(pcevent.multi1==2 && pcevent.multi2==1) plotter->Fill2D("dE_E_Anodesx3B_a2c1",400,0,30,800,0,40000,sx3event.Energy1,pcevent.Energy1);
|
||||||
|
if(pcevent.multi1==2 && pcevent.multi2==1) plotter->Fill2D("dE_E_Cathodesx3B_a2c1",400,0,30,800,0,10000,sx3event.Energy1,pcevent.Energy2);
|
||||||
plotter->Fill2D("sx3phi_vs_pcphi"+std::to_string(sx3event.Time1 - pcevent.Time1<-150),100,-360,360,100,-360,360,sx3event.pos.Phi()*180/M_PI,pcevent.pos.Phi()*180/M_PI);
|
plotter->Fill2D("sx3phi_vs_pcphi"+std::to_string(sx3event.Time1 - pcevent.Time1<-150),100,-360,360,100,-360,360,sx3event.pos.Phi()*180/M_PI,pcevent.pos.Phi()*180/M_PI);
|
||||||
if(PCSX3TimeCut) {
|
if(PCSX3TimeCut) {
|
||||||
plotter->Fill1D("dt_pcA_sx3B_timecut",1024,-4000,4000,sx3event.Time1 - pcevent.Time1);
|
plotter->Fill1D("dt_pcA_sx3B_timecut",640,-2000,2000,sx3event.Time1 - pcevent.Time1);
|
||||||
plotter->Fill1D("dt_pcC_sx3B_timecut",1024,-4000,4000,sx3event.Time1 - pcevent.Time2);
|
plotter->Fill1D("dt_pcC_sx3B_timecut",640,-2000,2000,sx3event.Time1 - pcevent.Time2);
|
||||||
plotter->Fill2D("xyplot_sx3"+std::to_string(sx3event.ch2/4),100,-100,100,100,-100,100,sx3event.pos.X(),sx3event.pos.Y());
|
plotter->Fill2D("xyplot_sx3"+std::to_string(sx3event.ch2/4),100,-100,100,100,-100,100,sx3event.pos.X(),sx3event.pos.Y());
|
||||||
plotter->Fill2D("xyplot_sx3"+std::to_string(sx3event.ch2/4),100,-100,100,100,-100,100,pcevent.pos.X(),pcevent.pos.Y());
|
plotter->Fill2D("xyplot_sx3"+std::to_string(sx3event.ch2/4),100,-100,100,100,-100,100,pcevent.pos.X(),pcevent.pos.Y());
|
||||||
plotter->Fill2D("pcz_vs_pcphi_TimeCut",600,-200,200,120,-360,360,pcevent.pos.Z(),pcevent.pos.Phi()*180/M_PI); //x-axis is all Si det, y-axis is PC anode+cathode only
|
plotter->Fill2D("pcz_vs_pcphi_TimeCut",600,-200,200,120,-360,360,pcevent.pos.Z(),pcevent.pos.Phi()*180/M_PI); //x-axis is all Si det, y-axis is PC anode+cathode only
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
double sx3rho = 88.0;//approximate barrel radius
|
double sx3rho = 88.0;//approximate barrel radius
|
||||||
double sx3z = sx3event.pos.Z()+(75.0/2.0)-3.0; //w.r.t target origin at 90 for run12
|
double sx3z = sx3event.pos.Z(); //w.r.t target origin at 90 for run12
|
||||||
double pcz = pcevent.pos.Z();
|
double pcz = pcevent.pos.Z();
|
||||||
double calcsx3theta = TMath::ATan2(sx3rho-z_to_crossover_rho(pcz),sx3z-pcz);
|
double calcsx3theta = TMath::ATan2(sx3rho-z_to_crossover_rho(pcz),sx3z-pcz);
|
||||||
plotter->Fill2D("dE2_E_Anodesx3B",400,0,10,800,0,40000,sx3event.Energy1,pcevent.Energy1*TMath::Sin(calcsx3theta));
|
plotter->Fill2D("dE2_E_Anodesx3B",400,0,30,800,0,40000,sx3event.Energy1,pcevent.Energy1*TMath::Sin(calcsx3theta));
|
||||||
plotter->Fill2D("dE2_E_Cathodesx3B",400,0,10,800,0,10000,sx3event.Energy1,pcevent.Energy2*TMath::Sin(calcsx3theta));
|
plotter->Fill2D("dE2_E_Cathodesx3B",400,0,30,800,0,10000,sx3event.Energy1,pcevent.Energy2*TMath::Sin(calcsx3theta));
|
||||||
|
|
||||||
|
|
||||||
double sx3theta = TMath::ATan2(sx3rho,sx3z-source_vertex);
|
double sx3theta = TMath::ATan2(sx3rho,sx3z-source_vertex);
|
||||||
|
|
@ -912,14 +886,14 @@ Bool_t MakeVertex::Process(Long64_t entry)
|
||||||
|
|
||||||
plotter->Fill2D("pcz_vs_time",2000,0,2000,600,-200,200,pcevent.Time1*1e-9,pcevent.pos.Z()); //x-axis is all Si det, y-axis is PC anode+cathode only
|
plotter->Fill2D("pcz_vs_time",2000,0,2000,600,-200,200,pcevent.Time1*1e-9,pcevent.pos.Z()); //x-axis is all Si det, y-axis is PC anode+cathode only
|
||||||
plotter->Fill2D("pcphi_vs_time",2000,0,2000,180,-360,360,pcevent.Time1*1e-9,pcevent.pos.Phi()*180./M_PI); //x-axis is all Si det, y-axis is PC anode+cathode only
|
plotter->Fill2D("pcphi_vs_time",2000,0,2000,180,-360,360,pcevent.Time1*1e-9,pcevent.pos.Phi()*180./M_PI); //x-axis is all Si det, y-axis is PC anode+cathode only
|
||||||
|
//plotter->Fill2D("pcz_vs_time_strip"+std::to_string(sx3event.ch2),2000,0,2000,600,-200,200,pcevent.Time1*1e-9,pcevent.pos.Z()); //x-axis is all Si det, y-axis is PC anode+cathode only
|
||||||
//plotter->Fill2D("pcz_vs_time_strip"+std::to_string(sx3event.ch2),2000,0,2000,600,-200,200,pcevent.Time1*1e-9,pcevent.pos.Z()); //x-axis is all Si det, y-axis is PC anode+cathode only
|
|
||||||
plotter->Fill2D("sx3phi_vs_time",2000,0,2000,180,-360,360,pcevent.Time1*1e-9,sx3event.pos.Phi()*180./M_PI); //x-axis is all Si det, y-axis is PC anode+cathode only
|
plotter->Fill2D("sx3phi_vs_time",2000,0,2000,180,-360,360,pcevent.Time1*1e-9,sx3event.pos.Phi()*180./M_PI); //x-axis is all Si det, y-axis is PC anode+cathode only
|
||||||
|
|
||||||
|
|
||||||
plotter->Fill2D("pcz_vs_sx3pczguess",600,-200,200,600,-200,200,pczguess,pcevent.pos.Z()); //x-axis is all Si det, y-axis is PC anode+cathode only
|
plotter->Fill2D("pcz_vs_sx3pczguess",600,-200,200,600,-200,200,pczguess,pcevent.pos.Z()); //x-axis is all Si det, y-axis is PC anode+cathode only
|
||||||
if(pcevent.multi1==1 && pcevent.multi2==2) {
|
if(pcevent.multi1==1 && pcevent.multi2==2) {
|
||||||
plotter->Fill2D("pcz_vs_sx3pczguess_A1C2",600,-200,200,600,-200,200,pczguess,pcevent.pos.Z());
|
//if(pcevent.multi1==1) {
|
||||||
|
plotter->Fill2D("pcz_vs_sx3pczguess_A1C2",600,-200,200,600,-200,200,pczguess,pcevent.pos.Z());
|
||||||
double pcz_fix = pcfix_func.Eval(pcevent.pos.Z());
|
double pcz_fix = pcfix_func.Eval(pcevent.pos.Z());
|
||||||
|
|
||||||
TVector3 x2f(pcevent.pos.X(),pcevent.pos.Y(),pcz_fix);
|
TVector3 x2f(pcevent.pos.X(),pcevent.pos.Y(),pcz_fix);
|
||||||
|
|
@ -932,12 +906,12 @@ Bool_t MakeVertex::Process(Long64_t entry)
|
||||||
plotter->Fill2D("pcz_vs_sx3pczguess_A1C2_strip"+std::to_string(sx3event.ch2),300,-200,200,600,-200,200,pczguess,pcevent.pos.Z());
|
plotter->Fill2D("pcz_vs_sx3pczguess_A1C2_strip"+std::to_string(sx3event.ch2),300,-200,200,600,-200,200,pczguess,pcevent.pos.Z());
|
||||||
|
|
||||||
double sinTheta_customV = TMath::Sin((sx3event.pos - TVector3(0,0,r_rhoMin_fix.Z())).Theta());
|
double sinTheta_customV = TMath::Sin((sx3event.pos - TVector3(0,0,r_rhoMin_fix.Z())).Theta());
|
||||||
plotter->Fill2D("dE3_E_CathodeSX3_A1C2_TC"+std::to_string(PCSX3TimeCut)+"_PC"+std::to_string(phicut),400,0,10,800,0,10000,sx3event.Energy1,pcevent.Energy2*sinTheta_customV);
|
plotter->Fill2D("dE3_E_CathodeSX3_A1C2_TC"+std::to_string(PCSX3TimeCut)+"_PC"+std::to_string(phicut),400,0,30,800,0,10000,sx3event.Energy1,pcevent.Energy2*sinTheta_customV);
|
||||||
plotter->Fill2D("dE3_E_AnodeSX3_A1C2_TC"+std::to_string(PCSX3TimeCut)+"_PC"+std::to_string(phicut),400,0,10,800,0,40000,sx3event.Energy1,pcevent.Energy1*sinTheta_customV);
|
plotter->Fill2D("dE3_E_AnodeSX3_A1C2_TC"+std::to_string(PCSX3TimeCut)+"_PC"+std::to_string(phicut),400,0,30,800,0,40000,sx3event.Energy1,pcevent.Energy1*sinTheta_customV);
|
||||||
|
|
||||||
if(TMath::Abs(r_rhoMin_fix.Z())<200.0) {
|
if(TMath::Abs(r_rhoMin_fix.Z())<200.0) {
|
||||||
plotter->Fill2D("dE3_E_AnodeSX3B_A1C2_(vertex_fix_z/100)="+std::to_string(floor(r_rhoMin_fix.Z()/100.0)),400,0,10,800,0,40000,sx3event.Energy1,pcevent.Energy1*sinTheta_customV);
|
plotter->Fill2D("dE3_E_AnodeSX3B_A1C2_(vertex_fix_z/100)="+std::to_string(floor(r_rhoMin_fix.Z()/100.0)),400,0,30,800,0,40000,sx3event.Energy1,pcevent.Energy1*sinTheta_customV);
|
||||||
plotter->Fill2D("dE3_E_CathodeSX3B_A1C2_(vertex_fix_z/100)="+std::to_string(floor(r_rhoMin_fix.Z()/100.0)),400,0,10,800,0,10000,sx3event.Energy1,pcevent.Energy2*sinTheta_customV);
|
plotter->Fill2D("dE3_E_CathodeSX3B_A1C2_(vertex_fix_z/100)="+std::to_string(floor(r_rhoMin_fix.Z()/100.0)),400,0,30,800,0,10000,sx3event.Energy1,pcevent.Energy2*sinTheta_customV);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(pcevent.multi1==1 && pcevent.multi2==3) {
|
if(pcevent.multi1==1 && pcevent.multi2==3) {
|
||||||
|
|
@ -981,8 +955,8 @@ Bool_t MakeVertex::Process(Long64_t entry)
|
||||||
plotter->Fill1D("pcz_sx3Coinc_phiCut"+std::to_string(sx3PhiCut)+"_TC"+std::to_string(PCSX3TimeCut),300,0,200,sx3z);
|
plotter->Fill1D("pcz_sx3Coinc_phiCut"+std::to_string(sx3PhiCut)+"_TC"+std::to_string(PCSX3TimeCut),300,0,200,sx3z);
|
||||||
plotter->Fill2D("pcz_vs_sx3z_phiCut"+std::to_string(sx3PhiCut)+"_TC"+std::to_string(PCSX3TimeCut),300,0,200,600,-400,400,sx3z,pcevent.pos.Z());
|
plotter->Fill2D("pcz_vs_sx3z_phiCut"+std::to_string(sx3PhiCut)+"_TC"+std::to_string(PCSX3TimeCut),300,0,200,600,-400,400,sx3z,pcevent.pos.Z());
|
||||||
|
|
||||||
//plotter->Fill2D("sx3E_vs_sx3z"+std::to_string(sx3event.ch2),400,0,10,300,0,200,sx3event.Energy1,sx3z);
|
//plotter->Fill2D("sx3E_vs_sx3z"+std::to_string(sx3event.ch2),400,0,30,300,0,200,sx3event.Energy1,sx3z);
|
||||||
plotter->Fill2D("sx3E_vs_sx3z",400,0,10,300,0,200,sx3event.Energy1,sx3z);
|
plotter->Fill2D("sx3E_vs_sx3z",400,0,30,300,0,200,sx3event.Energy1,sx3z);
|
||||||
|
|
||||||
plotter->Fill2D("pcdEA_vs_sx3z",800,0,20000,300,0,200,pcevent.Energy1,sx3z);
|
plotter->Fill2D("pcdEA_vs_sx3z",800,0,20000,300,0,200,pcevent.Energy1,sx3z);
|
||||||
plotter->Fill2D("pcdEC_vs_sx3z",800,0,20000,300,0,200,pcevent.Energy2,sx3z);
|
plotter->Fill2D("pcdEC_vs_sx3z",800,0,20000,300,0,200,pcevent.Energy2,sx3z);
|
||||||
|
|
@ -1005,7 +979,7 @@ Bool_t MakeVertex::Process(Long64_t entry)
|
||||||
}
|
}
|
||||||
}//end PC-SX3 coincidence
|
}//end PC-SX3 coincidence
|
||||||
|
|
||||||
for(size_t ii=0; ii<QQQ_Events.size(); ii++) {
|
/*for(size_t ii=0; ii<QQQ_Events.size(); ii++) {
|
||||||
for(size_t jj=ii+1; jj<QQQ_Events.size(); jj++) {
|
for(size_t jj=ii+1; jj<QQQ_Events.size(); jj++) {
|
||||||
//if(TMath::Abs(QQQ_Events.at(ii).pos.Phi()*180/M_PI-QQQ_Events.at(jj).pos.Phi()*180/M_PI)>20) continue;
|
//if(TMath::Abs(QQQ_Events.at(ii).pos.Phi()*180/M_PI-QQQ_Events.at(jj).pos.Phi()*180/M_PI)>20) continue;
|
||||||
if(QQQ_Events.at(ii).ch1 == QQQ_Events.at(jj).ch1) continue;
|
if(QQQ_Events.at(ii).ch1 == QQQ_Events.at(jj).ch1) continue;
|
||||||
|
|
@ -1016,32 +990,31 @@ Bool_t MakeVertex::Process(Long64_t entry)
|
||||||
if(QQQ_Events.at(ii).ch2 == QQQ_Events.at(jj).ch2+1) continue;
|
if(QQQ_Events.at(ii).ch2 == QQQ_Events.at(jj).ch2+1) continue;
|
||||||
|
|
||||||
double dt = QQQ_Events.at(ii).Time1-QQQ_Events.at(jj).Time1;
|
double dt = QQQ_Events.at(ii).Time1-QQQ_Events.at(jj).Time1;
|
||||||
plotter->Fill1D("dt_qqqi_qqqj",1024,-4000,4000,dt);
|
plotter->Fill1D("dt_qqqi_qqqj",800,-2000,2000,dt);
|
||||||
if(TMath::Abs(dt) > 150) continue;
|
if(TMath::Abs(dt) > 150) continue;
|
||||||
plotter->Fill1D("dt_qqqi_qqqj_coinc",1024,-4000,4000,dt);
|
plotter->Fill1D("dt_qqqi_qqqj_coinc",800,-2000,2000,dt);
|
||||||
double sum_e = QQQ_Events.at(ii).Energy1+QQQ_Events.at(jj).Energy1;
|
double sum_e = QQQ_Events.at(ii).Energy1+QQQ_Events.at(jj).Energy1;
|
||||||
plotter->Fill2D("sum_qqqE",400,0,10,400,0,10,QQQ_Events.at(ii).Energy1,sum_e);
|
plotter->Fill2D("sum_qqqE",400,0,30,400,0,30,QQQ_Events.at(ii).Energy1,sum_e);
|
||||||
plotter->Fill2D("qqq_matrix",400,0,10,400,0,10,QQQ_Events.at(ii).Energy1,QQQ_Events.at(jj).Energy1);
|
plotter->Fill2D("qqq_matrix",400,0,30,400,0,30,QQQ_Events.at(ii).Energy1,QQQ_Events.at(jj).Energy1);
|
||||||
plotter->Fill2D("qqq_matrix",400,0,10,400,0,10,QQQ_Events.at(jj).Energy1,QQQ_Events.at(ii).Energy1);
|
plotter->Fill2D("qqq_matrix",400,0,30,400,0,30,QQQ_Events.at(jj).Energy1,QQQ_Events.at(ii).Energy1);
|
||||||
plotter->Fill2D("qqq_ch2_ch2",400,0,400,400,0,400,QQQ_Events.at(jj).ch2,QQQ_Events.at(ii).ch2);
|
plotter->Fill2D("qqq_ch2_ch2",400,0,400,400,0,400,QQQ_Events.at(jj).ch2,QQQ_Events.at(ii).ch2);
|
||||||
plotter->Fill2D("qqq_ch1_ch1",400,0,400,400,0,400,QQQ_Events.at(jj).ch1,QQQ_Events.at(ii).ch1);
|
plotter->Fill2D("qqq_ch1_ch1",400,0,400,400,0,400,QQQ_Events.at(jj).ch1,QQQ_Events.at(ii).ch1);
|
||||||
|
|
||||||
if(sum_e > 6.50 && sum_e < 7.50) {
|
if(sum_e > 6.50 && sum_e < 7.50) {
|
||||||
plotter->Fill2D("qqq_ang1_ang2",180,-360,360,180,-360,360,QQQ_Events.at(jj).pos.Phi()*180/M_PI,QQQ_Events.at(ii).pos.Phi()*180/M_PI);
|
plotter->Fill2D("qqq_ang1_ang2",180,-360,360,180,-360,360,QQQ_Events.at(jj).pos.Phi()*180/M_PI,QQQ_Events.at(ii).pos.Phi()*180/M_PI);
|
||||||
//if(PC_Events.size()<2) continue;
|
//if(PC_Events.size()<2) continue;
|
||||||
/*for(auto pcevent: PC_Events) {
|
for(auto pcevent: PC_Events) {
|
||||||
plotter->Fill2D("pcphi_vs_qqqphi_i_esumcut",180,-360,360,180,-360,360,pcevent.pos.Phi()*180/M_PI,QQQ_Events.at(ii).pos.Phi()*180/M_PI);
|
plotter->Fill2D("pcphi_vs_qqqphi_i_esumcut",180,-360,360,180,-360,360,pcevent.pos.Phi()*180/M_PI,QQQ_Events.at(ii).pos.Phi()*180/M_PI);
|
||||||
plotter->Fill2D("pcphi_vs_qqqphi_j_esumcut",180,-360,360,180,-360,360,pcevent.pos.Phi()*180/M_PI,QQQ_Events.at(jj).pos.Phi()*180/M_PI);
|
plotter->Fill2D("pcphi_vs_qqqphi_j_esumcut",180,-360,360,180,-360,360,pcevent.pos.Phi()*180/M_PI,QQQ_Events.at(jj).pos.Phi()*180/M_PI);
|
||||||
}*/
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}*/
|
||||||
}
|
|
||||||
for(auto pcevent: PC_Events) {
|
for(auto pcevent: PC_Events) {
|
||||||
for(auto qqqevent: QQQ_Events) {
|
for(auto qqqevent: QQQ_Events) {
|
||||||
plotter->Fill1D("dt_pcA_qqqR",1024,-4000,4000,qqqevent.Time1 - pcevent.Time1);
|
plotter->Fill1D("dt_pcA_qqqR",640,-2000,2000,qqqevent.Time1 - pcevent.Time1);
|
||||||
plotter->Fill2D("dt_pcA_qqqR_vs_qqqRE",1024,-4000,4000,400,0,10,qqqevent.Time1-pcevent.Time1, qqqevent.Energy1);
|
plotter->Fill2D("dt_pcA_qqqR_vs_qqqRE",640,-2000,2000,400,0,30,qqqevent.Time1-pcevent.Time1, qqqevent.Energy1);
|
||||||
plotter->Fill1D("dt_pcC_qqqW",1024,-4000,4000,qqqevent.Time2 - pcevent.Time2);
|
plotter->Fill1D("dt_pcC_qqqW",640,-2000,2000,qqqevent.Time2 - pcevent.Time2);
|
||||||
plotter->Fill2D("phiPC_vs_phiQQQ",180,-360,360,180,-360,360,qqqevent.pos.Phi()*180/M_PI,pcevent.pos.Phi()*180/M_PI);
|
plotter->Fill2D("phiPC_vs_phiQQQ",180,-360,360,180,-360,360,qqqevent.pos.Phi()*180/M_PI,pcevent.pos.Phi()*180/M_PI);
|
||||||
double sinTheta = TMath::Sin((qqqevent.pos - TVector3(0,0,source_vertex)).Theta());///TMath::Sin((TVector3(51.5,0,128.) - TVector3(0,0,85)).Theta());
|
double sinTheta = TMath::Sin((qqqevent.pos - TVector3(0,0,source_vertex)).Theta());///TMath::Sin((TVector3(51.5,0,128.) - TVector3(0,0,85)).Theta());
|
||||||
|
|
||||||
|
|
@ -1051,56 +1024,40 @@ Bool_t MakeVertex::Process(Long64_t entry)
|
||||||
double t_minimum = -1.0*(x1.X()*v.X()+x1.Y()*v.Y())/(v.X()*v.X()+v.Y()*v.Y());
|
double t_minimum = -1.0*(x1.X()*v.X()+x1.Y()*v.Y())/(v.X()*v.X()+v.Y()*v.Y());
|
||||||
TVector3 r_rhoMin = x1 + t_minimum*v;
|
TVector3 r_rhoMin = x1 + t_minimum*v;
|
||||||
|
|
||||||
|
|
||||||
/*if((qqqevent.pos - r_rhoMin).Theta()*180/M_PI > 52) {
|
|
||||||
plotter->Fill2D("dE3_E_AnodeQQQR_outer",400,0,10,800,0,40000,qqqevent.Energy1,pcevent.Energy1*sinTheta_customV,"customVertex");
|
|
||||||
plotter->Fill2D("dE3_E_CathodeQQQR_outer",400,0,10,800,0,10000,qqqevent.Energy2,pcevent.Energy2*sinTheta_customV,"customVertex");
|
|
||||||
} else {
|
|
||||||
plotter->Fill2D("dE3_E_AnodeQQQR_inner",400,0,10,800,0,40000,qqqevent.Energy1,pcevent.Energy1*sinTheta_customV,"customVertex");
|
|
||||||
plotter->Fill2D("dE3_E_CathodeQQQR_inner",400,0,10,800,0,10000,qqqevent.Energy2,pcevent.Energy2*sinTheta_customV,"customVertex");
|
|
||||||
}*/
|
|
||||||
|
|
||||||
//bool timecut = (qqqevent.Time1 - pcevent.Time1 < -150);
|
//bool timecut = (qqqevent.Time1 - pcevent.Time1 < -150);
|
||||||
bool timecut = (qqqevent.Time1 - pcevent.Time1 < -150);
|
bool timecut = (qqqevent.Time1 - pcevent.Time1 < -150);
|
||||||
|
bool lowercut_cath = pcevent.Energy2*sinTheta < 250 && (qqqevent.Energy2 < 5.0 || qqqevent.Energy1 < 5.0) ;
|
||||||
|
bool phicut = qqqevent.pos.Phi() <= pcevent.pos.Phi()+TMath::Pi()/4. && qqqevent.pos.Phi() >= pcevent.pos.Phi()-TMath::Pi()/4.;
|
||||||
|
|
||||||
|
if(lowercut_cath && phicut) {
|
||||||
|
plotter->Fill1D("dt_pcA_qqqR_pidlow_PC1",640,-2000,2000,qqqevent.Time1 - pcevent.Time1);
|
||||||
|
plotter->Fill2D("dt_pcA_qqqR_vs_qqqRE_pidlow_PC1",640,-2000,2000,400,0,30,qqqevent.Time1-pcevent.Time1, qqqevent.Energy1);
|
||||||
|
plotter->Fill1D("dt_pcC_qqqW_pidlow_PC1",640,-2000,2000,qqqevent.Time2 - pcevent.Time2);
|
||||||
|
}
|
||||||
if(timecut) {// && qqqevent.pos.Phi() <= pcevent.pos.Phi()+TMath::Pi()/4. && qqqevent.pos.Phi() >= pcevent.pos.Phi()-TMath::Pi()/4. ) {
|
if(timecut) {// && qqqevent.pos.Phi() <= pcevent.pos.Phi()+TMath::Pi()/4. && qqqevent.pos.Phi() >= pcevent.pos.Phi()-TMath::Pi()/4. ) {
|
||||||
|
|
||||||
bool phicut = qqqevent.pos.Phi() <= pcevent.pos.Phi()+TMath::Pi()/4. && qqqevent.pos.Phi() >= pcevent.pos.Phi()-TMath::Pi()/4.;
|
plotter->Fill2D("dE_E_AnodeQQQR",400,0,30,800,0,40000,qqqevent.Energy1,pcevent.Energy1);
|
||||||
plotter->Fill2D("dE_E_AnodeQQQR",400,0,10,800,0,40000,qqqevent.Energy1,pcevent.Energy1);
|
plotter->Fill2D("dE_E_CathodeQQQR",400,0,30,800,0,10000,qqqevent.Energy2,pcevent.Energy2);
|
||||||
plotter->Fill2D("dE_E_CathodeQQQR",400,0,10,800,0,10000,qqqevent.Energy2,pcevent.Energy2);
|
if(pcevent.multi1==1 && pcevent.multi2==2) plotter->Fill2D("dE_E_AnodeQQQR_a1c2",400,0,30,800,0,40000,qqqevent.Energy1,pcevent.Energy1);
|
||||||
|
if(pcevent.multi1==1 && pcevent.multi2==2) plotter->Fill2D("dE_E_CathodeQQQR_a1c2",400,0,30,800,0,10000,qqqevent.Energy1,pcevent.Energy2);
|
||||||
|
if(pcevent.multi1==2 && pcevent.multi2==1) plotter->Fill2D("dE_E_AnodeQQQR_a2c1",400,0,30,800,0,40000,qqqevent.Energy1,pcevent.Energy1);
|
||||||
|
if(pcevent.multi1==2 && pcevent.multi2==1) plotter->Fill2D("dE_E_CathodeQQQR_a2c1",400,0,30,800,0,10000,qqqevent.Energy1,pcevent.Energy2);
|
||||||
|
|
||||||
bool lowercut_cath = pcevent.Energy2*sinTheta < 250 && (qqqevent.Energy2 < 5.0 || qqqevent.Energy1 < 5.0) ;
|
|
||||||
if(phicut) {
|
if(phicut) {
|
||||||
plotter->Fill2D("dE2_E_AnodeQQQR_TC1PC1_pidlow"+std::to_string(lowercut_cath),400,0,10,800,0,4000,qqqevent.Energy1,pcevent.Energy1*sinTheta);
|
plotter->Fill2D("dE2_E_AnodeQQQR_TC1PC1_pidlow"+std::to_string(lowercut_cath),400,0,30,800,0,4000,qqqevent.Energy1,pcevent.Energy1*sinTheta);
|
||||||
plotter->Fill2D("dE2_E_CathodeQQQW_TC1PC1_pidlow"+std::to_string(lowercut_cath),400,0,10,800,0,1000,qqqevent.Energy2,pcevent.Energy2*sinTheta);
|
plotter->Fill2D("dE2_E_CathodeQQQW_TC1PC1_pidlow"+std::to_string(lowercut_cath),400,0,30,800,0,1000,qqqevent.Energy2,pcevent.Energy2*sinTheta);
|
||||||
//plotter->Fill2D("E_theta_AnodeQQQR_TC1PC1_pidlow"+std::to_string(lowercut_cath),75,0,90,300,0,15,(qqqevent.pos - TVector3(0,0,source_vertex)).Theta()*180/M_PI,qqqevent.Energy1);
|
//plotter->Fill2D("E_theta_AnodeQQQR_TC1PC1_pidlow"+std::to_string(lowercut_cath),75,0,90,300,0,15,(qqqevent.pos - TVector3(0,0,source_vertex)).Theta()*180/M_PI,qqqevent.Energy1);
|
||||||
plotter->Fill2D("E_theta_zoomin_AnodeQQQR_TC1PC1_pidlow"+std::to_string(lowercut_cath),60,0,30,300,0,15,(qqqevent.pos - TVector3(0,0,source_vertex)).Theta()*180/M_PI,qqqevent.Energy1);
|
plotter->Fill2D("E_theta_zoomin_AnodeQQQR_TC1PC1_pidlow"+std::to_string(lowercut_cath),60,0,30,300,0,15,(qqqevent.pos - TVector3(0,0,source_vertex)).Theta()*180/M_PI,qqqevent.Energy1);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
plotter->Fill2D("dE2_E_AnodeQQQR_TC1_PC"+std::to_string(phicut),400,0,10,800,0,4000,qqqevent.Energy1,pcevent.Energy1*sinTheta);
|
plotter->Fill2D("dE2_E_AnodeQQQR_TC1_PC"+std::to_string(phicut),400,0,30,800,0,4000,qqqevent.Energy1,pcevent.Energy1*sinTheta);
|
||||||
plotter->Fill2D("dE2_E_CathodeQQQR_TC1_PC"+std::to_string(phicut),400,0,10,800,0,1000,qqqevent.Energy2,pcevent.Energy2*sinTheta);
|
plotter->Fill2D("dE2_E_CathodeQQQR_TC1_PC"+std::to_string(phicut),400,0,30,800,0,1000,qqqevent.Energy2,pcevent.Energy2*sinTheta);
|
||||||
plotter->Fill2D("dEC_vs_dEA_TC1_PC"+std::to_string(phicut),800,0,40000,800,0,10000,pcevent.Energy1,pcevent.Energy2);
|
plotter->Fill2D("dEC_vs_dEA_TC1_PC"+std::to_string(phicut),800,0,40000,800,0,10000,pcevent.Energy1,pcevent.Energy2);
|
||||||
|
|
||||||
/*if((qqqevent.pos - TVector3(0,0,source_vertex)).Theta()*180/M_PI > 52) {
|
|
||||||
plotter->Fill2D("dE2_E_AnodeQQQR_outer",400,0,10,800,0,40000,qqqevent.Energy1,pcevent.Energy1*sinTheta);
|
|
||||||
plotter->Fill2D("dE2_E_CathodeQQQR_outer",400,0,10,800,0,10000,qqqevent.Energy2,pcevent.Energy2*sinTheta);
|
|
||||||
plotter->Fill2D("dE_E_AnodeQQQR_outer",400,0,10,800,0,40000,qqqevent.Energy1,pcevent.Energy1);
|
|
||||||
plotter->Fill2D("dE_E_CathodeQQQR_outer",400,0,10,800,0,10000,qqqevent.Energy2,pcevent.Energy2);
|
|
||||||
} else {
|
|
||||||
plotter->Fill2D("dE2_E_AnodeQQQR_inner",400,0,10,800,0,40000,qqqevent.Energy1,pcevent.Energy1*sinTheta);
|
|
||||||
plotter->Fill2D("dE2_E_CathodeQQQR_inner",400,0,10,800,0,10000,qqqevent.Energy2,pcevent.Energy2*sinTheta);
|
|
||||||
plotter->Fill2D("dE_E_AnodeQQQR_inner",400,0,10,800,0,40000,qqqevent.Energy1,pcevent.Energy1);
|
|
||||||
plotter->Fill2D("dE_E_CathodeQQQR_inner",400,0,10,800,0,10000,qqqevent.Energy2,pcevent.Energy2);
|
|
||||||
}*/
|
|
||||||
|
|
||||||
|
|
||||||
plotter->Fill2D("qqqphi_vs_time",2000,0,2000,180,-360,360,pcevent.Time1*1e-9,qqqevent.pos.Phi()*180./M_PI); //x-axis is all Si det, y-axis is PC anode+cathode only
|
plotter->Fill2D("qqqphi_vs_time",2000,0,2000,180,-360,360,pcevent.Time1*1e-9,qqqevent.pos.Phi()*180./M_PI); //x-axis is all Si det, y-axis is PC anode+cathode only
|
||||||
//plotter->Fill2D("dE_E_CathodeQQQ(R/4)"+std::to_string(floor((qqqevent.ch1%16)/4))+"_TC1PC"+std::to_string(phicut),400,0,10,800,0,10000,qqqevent.Energy2,pcevent.Energy2);
|
|
||||||
//plotter->Fill2D("dE_E_AnodeQQQ(R/4)"+std::to_string(floor((qqqevent.ch1%16)/4))+"_TC1PC"+std::to_string(phicut),400,0,10,400,0,20000,qqqevent.Energy1,pcevent.Energy1);
|
|
||||||
|
|
||||||
|
plotter->Fill1D("dt_pcA_qqqR_timecut",640,-2000,2000,qqqevent.Time1 - pcevent.Time1);
|
||||||
plotter->Fill1D("dt_pcA_qqqR_timecut",1024,-4000,4000,qqqevent.Time1 - pcevent.Time1);
|
plotter->Fill1D("dt_pcC_qqqW_timecut",640,-2000,2000,qqqevent.Time2 - pcevent.Time2);
|
||||||
plotter->Fill1D("dt_pcC_qqqW_timecut",1024,-4000,4000,qqqevent.Time2 - pcevent.Time2);
|
|
||||||
plotter->Fill2D("dE_theta_AnodeQQQR",90,0,90,400,0,20000,(qqqevent.pos - TVector3(0,0,source_vertex)).Theta()*180/M_PI,pcevent.Energy1);
|
plotter->Fill2D("dE_theta_AnodeQQQR",90,0,90,400,0,20000,(qqqevent.pos - TVector3(0,0,source_vertex)).Theta()*180/M_PI,pcevent.Energy1);
|
||||||
plotter->Fill2D("dE2_theta_AnodeQQQR_zoomin",60,0,30,400,0,5000,(qqqevent.pos - TVector3(0,0,source_vertex)).Theta()*180/M_PI,pcevent.Energy1*sinTheta);
|
plotter->Fill2D("dE2_theta_AnodeQQQR_zoomin",60,0,30,400,0,5000,(qqqevent.pos - TVector3(0,0,source_vertex)).Theta()*180/M_PI,pcevent.Energy1*sinTheta);
|
||||||
plotter->Fill2D("dE2_theta_AnodeQQQR",90,0,90,400,0,20000,(qqqevent.pos - TVector3(0,0,source_vertex)).Theta()*180/M_PI,pcevent.Energy1*sinTheta);
|
plotter->Fill2D("dE2_theta_AnodeQQQR",90,0,90,400,0,20000,(qqqevent.pos - TVector3(0,0,source_vertex)).Theta()*180/M_PI,pcevent.Energy1*sinTheta);
|
||||||
|
|
@ -1137,15 +1094,15 @@ Bool_t MakeVertex::Process(Long64_t entry)
|
||||||
TVector3 r_rhoMin_fix = x1 + t_minimum*v;
|
TVector3 r_rhoMin_fix = x1 + t_minimum*v;
|
||||||
|
|
||||||
double sinTheta_customV = TMath::Sin((qqqevent.pos - TVector3(0,0,r_rhoMin_fix.Z())).Theta());
|
double sinTheta_customV = TMath::Sin((qqqevent.pos - TVector3(0,0,r_rhoMin_fix.Z())).Theta());
|
||||||
plotter->Fill2D("dE3_E_CathodeQQQW_A1C2_TC1_PC"+std::to_string(phicut),400,0,10,800,0,10000,qqqevent.Energy2,pcevent.Energy2*sinTheta_customV);
|
plotter->Fill2D("dE3_E_CathodeQQQW_A1C2_TC1_PC"+std::to_string(phicut),400,0,30,800,0,10000,qqqevent.Energy2,pcevent.Energy2*sinTheta_customV);
|
||||||
plotter->Fill2D("dE3_E_AnodeQQQR_A1C2_TC1_PC"+std::to_string(phicut),400,0,10,800,0,10000,qqqevent.Energy1,pcevent.Energy1*sinTheta_customV);
|
plotter->Fill2D("dE3_E_AnodeQQQR_A1C2_TC1_PC"+std::to_string(phicut),400,0,30,800,0,10000,qqqevent.Energy1,pcevent.Energy1*sinTheta_customV);
|
||||||
|
|
||||||
plotter->Fill1D("VertexRecon_pczfix_qqq",800,-400,400,r_rhoMin_fix.Z());
|
plotter->Fill1D("VertexRecon_pczfix_qqq",800,-400,400,r_rhoMin_fix.Z());
|
||||||
plotter->Fill1D("VertexRecon_pczfix_qqq_PC"+std::to_string(phicut)+"_pidlow"+std::to_string(lowercut_cath),800,-400,400,r_rhoMin_fix.Z());
|
plotter->Fill1D("VertexRecon_pczfix_qqq_PC"+std::to_string(phicut)+"_pidlow"+std::to_string(lowercut_cath),800,-400,400,r_rhoMin_fix.Z());
|
||||||
|
|
||||||
if(TMath::Abs(r_rhoMin_fix.Z())<200.0) {
|
if(TMath::Abs(r_rhoMin_fix.Z())<200.0) {
|
||||||
plotter->Fill2D("dE3_E_AnodeQQQR_A1C2_(vertex_fix_z/100)="+std::to_string(floor(r_rhoMin_fix.Z()/100.0)),400,0,10,800,0,40000,qqqevent.Energy1,pcevent.Energy1*sinTheta_customV);
|
plotter->Fill2D("dE3_E_AnodeQQQR_A1C2_(vertex_fix_z/100)="+std::to_string(floor(r_rhoMin_fix.Z()/100.0)),400,0,30,800,0,40000,qqqevent.Energy1,pcevent.Energy1*sinTheta_customV);
|
||||||
plotter->Fill2D("dE3_E_CathodeQQQR_A1C2_(vertex_fix_z/100)="+std::to_string(floor(r_rhoMin_fix.Z()/100.0)),400,0,10,800,0,10000,qqqevent.Energy1,pcevent.Energy2*sinTheta_customV);
|
plotter->Fill2D("dE3_E_CathodeQQQR_A1C2_(vertex_fix_z/100)="+std::to_string(floor(r_rhoMin_fix.Z()/100.0)),400,0,30,800,0,10000,qqqevent.Energy1,pcevent.Energy2*sinTheta_customV);
|
||||||
}
|
}
|
||||||
|
|
||||||
plotter->Fill1D("pczfix_A1C2_1d_qqq",600,-200,200,pcz_fix);
|
plotter->Fill1D("pczfix_A1C2_1d_qqq",600,-200,200,pcz_fix);
|
||||||
|
|
@ -1180,28 +1137,22 @@ Bool_t MakeVertex::Process(Long64_t entry)
|
||||||
double pcz_guess_int2 = z_to_crossover_rho(pcevent.pos.Z())/tan_theta + source_vertex;
|
double pcz_guess_int2 = z_to_crossover_rho(pcevent.pos.Z())/tan_theta + source_vertex;
|
||||||
plotter->Fill2D("pczguess_vs_pc_int2",180,0,200,150,0,200,pcz_guess_int2,pcevent.pos.Z(),"phicut");
|
plotter->Fill2D("pczguess_vs_pc_int2",180,0,200,150,0,200,pcz_guess_int2,pcevent.pos.Z(),"phicut");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
double qqqz2 = (qqqevent.pos - r_rhoMin).Z();
|
double qqqz2 = (qqqevent.pos - r_rhoMin).Z();
|
||||||
double tan_theta2 = qqqrho/qqqz2;
|
double tan_theta2 = qqqrho/qqqz2;
|
||||||
double pcz_guess_int3 = z_to_crossover_rho(pcevent.pos.Z())/tan_theta2 + r_rhoMin.Z();
|
double pcz_guess_int3 = z_to_crossover_rho(pcevent.pos.Z())/tan_theta2 + r_rhoMin.Z();
|
||||||
plotter->Fill2D("pczguess_vs_pc_int3",180,0,200,150,0,200,pcz_guess_int3,pcevent.pos.Z(),"phicut");
|
plotter->Fill2D("pczguess_vs_pc_int3",180,0,200,150,0,200,pcz_guess_int3,pcevent.pos.Z(),"phicut");
|
||||||
//plotter->Fill2D("pczguess_vs_pc_int2_a"+std::to_string(pcevent.multi1)+"_c"+std::to_string(pcevent.multi2),180,0,200,150,0,200,pcz_guess_int2,pcevent.pos.Z(),"phicut");
|
//plotter->Fill2D("pczguess_vs_pc_int2_a"+std::to_string(pcevent.multi1)+"_c"+std::to_string(pcevent.multi2),180,0,200,150,0,200,pcz_guess_int2,pcevent.pos.Z(),"phicut");
|
||||||
|
|
||||||
|
|
||||||
double pcz_guess = pcz_guess_int;
|
double pcz_guess = pcz_guess_int;
|
||||||
plotter->Fill2D("pctheta_vs_qqqtheta_sv",180,-360,360,180,-360,360,(qqqevent.pos-TVector3(0,0,source_vertex)).Theta()*180/M_PI,(pcevent.pos-TVector3(0,0,source_vertex)).Theta()*180/M_PI,"phicut");
|
plotter->Fill2D("pctheta_vs_qqqtheta_sv",180,-360,360,180,-360,360,(qqqevent.pos-TVector3(0,0,source_vertex)).Theta()*180/M_PI,(pcevent.pos-TVector3(0,0,source_vertex)).Theta()*180/M_PI,"phicut");
|
||||||
plotter->Fill2D("pctheta_vs_qqqtheta_rmz",180,-360,360,180,-360,360,(qqqevent.pos-TVector3(0,0,r_rhoMin.Z())).Theta()*180/M_PI,(pcevent.pos-TVector3(0,0,r_rhoMin.Z())).Theta()*180/M_PI,"phicut");
|
plotter->Fill2D("pctheta_vs_qqqtheta_rmz",180,-360,360,180,-360,360,(qqqevent.pos-TVector3(0,0,r_rhoMin.Z())).Theta()*180/M_PI,(pcevent.pos-TVector3(0,0,r_rhoMin.Z())).Theta()*180/M_PI,"phicut");
|
||||||
plotter->Fill2D("pctheta_vs_qqqtheta_rm",180,-360,360,180,-360,360,(qqqevent.pos-r_rhoMin).Theta()*180/M_PI,(pcevent.pos-r_rhoMin).Theta()*180/M_PI,"phicut");
|
plotter->Fill2D("pctheta_vs_qqqtheta_rm",180,-360,360,180,-360,360,(qqqevent.pos-r_rhoMin).Theta()*180/M_PI,(pcevent.pos-r_rhoMin).Theta()*180/M_PI,"phicut");
|
||||||
|
|
||||||
plotter->Fill2D("pczguess_vs_pc_phi="+std::to_string(qqqevent.pos.Phi()*180./M_PI),300,0,200,150,0,200,pcz_guess,pcevent.pos.Z(),"phicut");
|
plotter->Fill2D("pczguess_vs_pc_phi="+std::to_string(qqqevent.pos.Phi()*180./M_PI),300,0,200,150,0,200,pcz_guess,pcevent.pos.Z(),"phicut");
|
||||||
|
|
||||||
//plotter->Fill1D("PCZ",800,-200,200,pcevent.pos.Z(),"phicut");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}//end PC QQQ coincidence
|
}//end PC QQQ coincidence
|
||||||
//HALFTIME! Can stop here in future versions
|
//HALFTIME! Can stop here in future versions
|
||||||
return kTRUE;
|
//return kTRUE;
|
||||||
if (anodeHits.size() >= 1 && cathodeHits.size() >= 1)
|
if (anodeHits.size() >= 1 && cathodeHits.size() >= 1)
|
||||||
{
|
{
|
||||||
// 2. CRITICAL FIX: Define reference vector 'a'
|
// 2. CRITICAL FIX: Define reference vector 'a'
|
||||||
|
|
@ -1228,6 +1179,7 @@ Bool_t MakeVertex::Process(Long64_t entry)
|
||||||
cE = cathode.second;
|
cE = cathode.second;
|
||||||
plotter->Fill2D("AnodeMax_Vs_Cathode_Coincidence_Matrix", 24, 0, 24, 24, 0, 24, aIDMax, cID, "hRawPC");
|
plotter->Fill2D("AnodeMax_Vs_Cathode_Coincidence_Matrix", 24, 0, 24, 24, 0, 24, aIDMax, cID, "hRawPC");
|
||||||
plotter->Fill2D("Anode_Vs_Cathode_Coincidence_Matrix", 24, 0, 24, 24, 0, 24, aID, cID, "hRawPC");
|
plotter->Fill2D("Anode_Vs_Cathode_Coincidence_Matrix", 24, 0, 24, 24, 0, 24, aID, cID, "hRawPC");
|
||||||
|
plotter->Fill2D("Anode_Vs_Cathode_Coincidence_Matrix_qqq"+std::to_string(HitNonZero), 24, 0, 24, 24, 0, 24, aID, cID, "hRawPC");
|
||||||
plotter->Fill2D("Anode_vs_CathodeE", 2000, 0, 30000, 2000, 0, 30000, aE, cE, "hGMPC");
|
plotter->Fill2D("Anode_vs_CathodeE", 2000, 0, 30000, 2000, 0, 30000, aE, cE, "hGMPC");
|
||||||
plotter->Fill2D("CathodeMult_V_CathodeE", 6, 0, 6, 2000, 0, 30000, cathodeHits.size(), cE, "hGMPC");
|
plotter->Fill2D("CathodeMult_V_CathodeE", 6, 0, 6, 2000, 0, 30000, cathodeHits.size(), cE, "hGMPC");
|
||||||
/*for (int j = -4; j < 3; j++)
|
/*for (int j = -4; j < 3; j++)
|
||||||
|
|
@ -1321,15 +1273,6 @@ Bool_t MakeVertex::Process(Long64_t entry)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//for (double Tz = 60; Tz <= 100; Tz += 1.0)
|
|
||||||
//{
|
|
||||||
// TVector3 TargetPos(0, 0, Tz);
|
|
||||||
//if(PCQQQPhiCut && anodeIntersection.Perp()>0 && anodeIntersection.Z()!=0 && cathodeHits.size()>=2) {
|
|
||||||
//plotter->Fill2D("Inttheta_vs_QQQtheta_TC" + std::to_string(PCQQQTimeCut) + "_TZ" + std::to_string(Tz), 400, 0, 180, 90, 0, 90, (anodeIntersection - TargetPos).Theta() * 180. / TMath::Pi(), (hitPos - TargetPos).Theta() * 180. / TMath::Pi(), "TPosVariation");
|
|
||||||
//plotter->Fill2D("R_ratio_to_Z_ratio" + std::to_string(PCQQQTimeCut) + "_TZ" + std::to_string(Tz), 100, -2, 2, 100, -2, 2, (anodeIntersection - TargetPos).Z()/(hitPos-TargetPos).Z(), ((anodeIntersection - TargetPos).Perp()+2.5)/(hitPos-TargetPos).Perp(), "TPosVariation");
|
|
||||||
//}
|
|
||||||
//}
|
|
||||||
|
|
||||||
if (anodeIntersection.Z() != 0 && anodeIntersection.Perp()>0 && HitNonZero)
|
if (anodeIntersection.Z() != 0 && anodeIntersection.Perp()>0 && HitNonZero)
|
||||||
{
|
{
|
||||||
plotter->Fill1D("PC_Z_Projection", 600, -300, 300, anodeIntersection.Z(), "hPCzQQQ");
|
plotter->Fill1D("PC_Z_Projection", 600, -300, 300, anodeIntersection.Z(), "hPCzQQQ");
|
||||||
|
|
@ -1585,7 +1528,7 @@ Bool_t MakeVertex::Process(Long64_t entry)
|
||||||
//plotter->Fill2D("AnodeSumE_Vs_Cathode_Max_Energy_path_corrected", 800, 0, 20000, 800, 0, 10000, aESum*sinTheta, cEMax*sinTheta, "hGMPC");
|
//plotter->Fill2D("AnodeSumE_Vs_Cathode_Max_Energy_path_corrected", 800, 0, 20000, 800, 0, 10000, aESum*sinTheta, cEMax*sinTheta, "hGMPC");
|
||||||
|
|
||||||
if(PCQQQTimeCut && PCQQQPhiCut) {
|
if(PCQQQTimeCut && PCQQQPhiCut) {
|
||||||
plotter->Fill2D("AnodeSumE_Vs_Cathode_Max_Energy_TC"+std::to_string(PCQQQTimeCut)+"_PC"+std::to_string(PCQQQPhiCut)+"_cMax"+std::to_string(cIDMax), 800, 0, 20000, 800, 0, 10000, aESum, cEMax, "hGMPC");
|
plotter->Fill2D("AnodeSumE_Vs_Cathode_Max_Energy_TC"+std::to_string(PCQQQTimeCut)+"_PC"+std::to_string(PCQQQPhiCut)+"_cMax"+std::to_string(cIDMax), 800, 0, 20000, 800, 0, 10000, aESum, cEMax, "hGMPC");
|
||||||
}
|
}
|
||||||
//plotter->Fill2D("AnodeSumE_Vs_CathodeSum_Energy_path_corrected", 800, 0, 20000, 800, 0, 10000, aESum*sinTheta, cESum*sinTheta, "hGMPC");
|
//plotter->Fill2D("AnodeSumE_Vs_CathodeSum_Energy_path_corrected", 800, 0, 20000, 800, 0, 10000, aESum*sinTheta, cESum*sinTheta, "hGMPC");
|
||||||
//plotter->Fill2D("AnodeSumE_Vs_CathodeSum_Energy_path_corrected_TC"+std::to_string(PCQQQTimeCut)+"_PC"+std::to_string(PCQQQPhiCut), 800, 0, 20000, 800, 0, 10000, aESum*sinTheta, cESum*sinTheta, "hGMPC"); */
|
//plotter->Fill2D("AnodeSumE_Vs_CathodeSum_Energy_path_corrected_TC"+std::to_string(PCQQQTimeCut)+"_PC"+std::to_string(PCQQQPhiCut), 800, 0, 20000, 800, 0, 10000, aESum*sinTheta, cESum*sinTheta, "hGMPC"); */
|
||||||
|
|
@ -1595,11 +1538,10 @@ Bool_t MakeVertex::Process(Long64_t entry)
|
||||||
plotter->Fill1D("AnodeHits", 12, 0, 11, anodeHits.size(), "hGMPC");
|
plotter->Fill1D("AnodeHits", 12, 0, 11, anodeHits.size(), "hGMPC");
|
||||||
plotter->Fill2D("AnodeMaxE_vs_AnodeHits", 12, 0, 11, 2000, 0, 30000, anodeHits.size(), aEMax, "hGMPC");
|
plotter->Fill2D("AnodeMaxE_vs_AnodeHits", 12, 0, 11, 2000, 0, 30000, anodeHits.size(), aEMax, "hGMPC");
|
||||||
|
|
||||||
if (anodeHits.size() < 1)
|
if (anodeHits.size() < 1) {
|
||||||
{
|
|
||||||
plotter->Fill1D("NoAnodeHits_CathodeHits", 6, 0, 5, cathodeHits.size(), "hGMPC");
|
plotter->Fill1D("NoAnodeHits_CathodeHits", 6, 0, 5, cathodeHits.size(), "hGMPC");
|
||||||
}
|
}
|
||||||
|
|
||||||
for(auto cwevent: cWireEvents) {
|
for(auto cwevent: cWireEvents) {
|
||||||
//plotter->Fill1D("cwdtqqq_vs_cw"+std::to_string(PCQQQTimeCut),800,-2000,2000,24,0,24,std::get<2>(cwevent)-qqqtimestamp,std::get<0>(cwevent));
|
//plotter->Fill1D("cwdtqqq_vs_cw"+std::to_string(PCQQQTimeCut),800,-2000,2000,24,0,24,std::get<2>(cwevent)-qqqtimestamp,std::get<0>(cwevent));
|
||||||
for(auto awevent: aWireEvents) {
|
for(auto awevent: aWireEvents) {
|
||||||
|
|
@ -1610,14 +1552,12 @@ Bool_t MakeVertex::Process(Long64_t entry)
|
||||||
for(auto awevent: aWireEvents) {
|
for(auto awevent: aWireEvents) {
|
||||||
//plotter->Fill1D("awdtqqq_vs_aw"+std::to_string(PCQQQTimeCut),800,-2000,2000,24,0,24,std::get<2>(awevent)-qqqtimestamp,std::get<0>(awevent));
|
//plotter->Fill1D("awdtqqq_vs_aw"+std::to_string(PCQQQTimeCut),800,-2000,2000,24,0,24,std::get<2>(awevent)-qqqtimestamp,std::get<0>(awevent));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return kTRUE;
|
return kTRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void MakeVertex::Terminate()
|
void MakeVertex::Terminate()
|
||||||
{
|
{
|
||||||
plotter->FlushToDisk();
|
plotter->FlushToDisk(10);
|
||||||
/* can1->Modified();
|
/* can1->Modified();
|
||||||
can1->Update();
|
can1->Update();
|
||||||
can2->Modified();
|
can2->Modified();
|
||||||
|
|
@ -1625,3 +1565,108 @@ void MakeVertex::Terminate()
|
||||||
while(can1->WaitPrimitive());
|
while(can1->WaitPrimitive());
|
||||||
while(can2->WaitPrimitive());*/
|
while(can2->WaitPrimitive());*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void protonAlphaHistograms(HistPlotter* plotter, std::vector<Event> QQQ_Events, std::vector<Event> SX3_Events, std::vector<Event> PC_Events){
|
||||||
|
|
||||||
|
//Sidetrack for a(p,p)
|
||||||
|
std::string aplabel = "a(p,p)";
|
||||||
|
Kinematics apkin_p(1.008664916,4.002603254,1.008664916,4.002603254,7.0);//m3 is proton
|
||||||
|
Kinematics apkin_a(1.008664916,4.002603254,4.002603254,1.008664916,7.0); //m3 is alpha
|
||||||
|
|
||||||
|
for(auto qqqevent: QQQ_Events) {
|
||||||
|
for(auto sx3event:SX3_Events) {
|
||||||
|
plotter->Fill1D("ap_qqq_sx3_dt",800,-2000,2000,qqqevent.Time1-sx3event.Time1,aplabel);
|
||||||
|
if(TMath::Abs(qqqevent.Time1-sx3event.Time1)>300) continue;
|
||||||
|
//sx3event.pos.SetZ(sx3event.pos.Z()+5.0);
|
||||||
|
plotter->Fill1D("ap_qqq_sx3_dt_timecut",800,-2000,2000,qqqevent.Time1-sx3event.Time1,aplabel);
|
||||||
|
plotter->Fill1D("ap_qqq_sx3_dphi",180,-360,360,qqqevent.pos.Phi()*180/M_PI - sx3event.pos.Phi()*180/M_PI,aplabel);
|
||||||
|
plotter->Fill2D("ap_qqq_sx3_dphi_vs_qqqphi",180,-360,360,180,-360,360,qqqevent.pos.Phi()*180/M_PI - sx3event.pos.Phi()*180/M_PI,qqqevent.pos.Phi()*180/M_PI,aplabel);
|
||||||
|
plotter->Fill2D("ap_qqq_sx3_matrix",400,0,10,400,0,10,qqqevent.Energy1,sx3event.Energy1,aplabel);
|
||||||
|
|
||||||
|
for(auto pcevent: PC_Events) {
|
||||||
|
|
||||||
|
double pcz_fix = pcfix_func.Eval(pcevent.pos.Z())-5.0;
|
||||||
|
TVector3 x2f(pcevent.pos.X(),pcevent.pos.Y(),pcz_fix);
|
||||||
|
TVector3 x1(qqqevent.pos);
|
||||||
|
TVector3 v = x2f-x1;
|
||||||
|
double t_minimum = -1.0*(x1.X()*v.X()+x1.Y()*v.Y())/(v.X()*v.X()+v.Y()*v.Y());
|
||||||
|
TVector3 r_rhoMin_fix = x1 + t_minimum*v;
|
||||||
|
double vertex_z = r_rhoMin_fix.Z();
|
||||||
|
double theta_q = (qqqevent.pos - TVector3(0,0,vertex_z)).Theta();
|
||||||
|
//double theta_q = (qqqevent.pos - r_rhoMin_fix).Theta();
|
||||||
|
double sinTheta_customV = TMath::Sin(theta_q);
|
||||||
|
double theta_s = (sx3event.pos - TVector3(0,0,vertex_z)).Theta();
|
||||||
|
//double theta_s = (sx3event.pos - r_rhoMin_fix).Theta();
|
||||||
|
double sinTheta_s = TMath::Sin(theta_s);
|
||||||
|
//if(vertex_z<0 || vertex_z>100) continue;
|
||||||
|
|
||||||
|
//double sinTheta = TMath::Sin((qqqevent.pos - pcevent.pos).Theta());
|
||||||
|
//plotter->Fill2D("sinTheta2_vs_sinTheta",80,-2,2,80,-2,2,sinTheta,sinTheta_customV,aplabel);
|
||||||
|
|
||||||
|
plotter->Fill2D("ap_dE_E_Anodesx3B",400,0,10,800,0,40000,sx3event.Energy1,pcevent.Energy1,aplabel);
|
||||||
|
plotter->Fill2D("ap_dE_E_Cathodesx3B",400,0,10,800,0,10000,sx3event.Energy1,pcevent.Energy2,aplabel);
|
||||||
|
plotter->Fill2D("ap_dE_E_AnodeQQQ",400,0,10,800,0,40000,qqqevent.Energy1,pcevent.Energy1,aplabel);
|
||||||
|
plotter->Fill2D("ap_dE_E_CathodeQQQ",400,0,10,800,0,10000,qqqevent.Energy1,pcevent.Energy2,aplabel);
|
||||||
|
plotter->Fill2D("ap_dE3_E_AnodeQQQ",400,0,10,400,0,40000,qqqevent.Energy1,pcevent.Energy1*sinTheta_customV,aplabel);
|
||||||
|
plotter->Fill2D("ap_dE3_E_CathodeQQQ",400,0,10,400,0,10000,qqqevent.Energy1,pcevent.Energy2*sinTheta_customV,aplabel);
|
||||||
|
|
||||||
|
plotter->Fill2D("ap_dPhi_QQQ_PC",180,-360,360,180,-360,360,pcevent.pos.Phi()*180/M_PI,qqqevent.pos.Phi()*180/M_PI,aplabel);
|
||||||
|
plotter->Fill2D("ap_dPhi_SX3_PC",180,-360,360,180,-360,360,pcevent.pos.Phi()*180/M_PI,sx3event.pos.Phi()*180/M_PI,aplabel);
|
||||||
|
plotter->Fill1D("ap_dt_Anode_QQQ",600,-2000,2000,pcevent.Time1-qqqevent.Time1,aplabel);
|
||||||
|
plotter->Fill1D("ap_dt_Cathode_QQQ",600,-2000,2000,pcevent.Time2-qqqevent.Time1,aplabel);
|
||||||
|
plotter->Fill1D("ap_dt_Anode_SX3",600,-2000,2000,pcevent.Time1-sx3event.Time1,aplabel);
|
||||||
|
plotter->Fill1D("ap_dt_Cathode_SX3",600,-2000,2000,pcevent.Time2-sx3event.Time1,aplabel);
|
||||||
|
plotter->Fill1D("ap_pczfix",600,-300,300,pcz_fix,aplabel);
|
||||||
|
plotter->Fill1D("ap_pcz",600,-300,300,pcevent.pos.Z(),aplabel);
|
||||||
|
|
||||||
|
double path_length_q = (qqqevent.pos-TVector3(0,0,vertex_z)).Mag()*0.1;
|
||||||
|
double path_length_s = (sx3event.pos-TVector3(0,0,vertex_z)).Mag()*0.1;
|
||||||
|
//double path_length_q = (qqqevent.pos-r_rhoMin_fix).Mag()*0.1;
|
||||||
|
//double path_length_s = (sx3event.pos-r_rhoMin_fix).Mag()*0.1;
|
||||||
|
|
||||||
|
//We know that alphas predominantly are detected in QQQs, and protons in SX3s, and that protons don't leave much of a trace in dE layer.
|
||||||
|
//Using the estimated path lengths, we correct alpha eloss in qqq, and protons in sx3. The result should (hopefully be) vertex independent.
|
||||||
|
|
||||||
|
double qqqEfix = cm_to_MeV->Eval(MeV_to_cm->Eval(qqqevent.Energy1)-path_length_q);
|
||||||
|
double sx3Efix = cm_to_MeVp->Eval(MeV_to_cm_p->Eval(sx3event.Energy1)-path_length_s);
|
||||||
|
//plotter->Fill2D("qqqEf_sx3E_matrix_all",400,0,10,400,0,10,qqqEfix,sx3event.Energy1,aplabel);
|
||||||
|
plotter->Fill2D("ap_qqqEf_sx3Ef_matrix",400,0,10,400,0,10,qqqEfix,sx3Efix,aplabel);
|
||||||
|
|
||||||
|
plotter->Fill2D("ap_Ef_vs_theta_qqq",100,0,180,400,0,10,theta_q*180/M_PI,qqqEfix,aplabel);
|
||||||
|
plotter->Fill2D("ap_Ef_vs_theta_sx3",100,0,180,400,0,10,theta_s*180/M_PI,sx3Efix,aplabel);
|
||||||
|
plotter->Fill2D("ap_theta_vs_theta_qqq_sx3",100,0,180,100,0,180,theta_q*180/M_PI,theta_s*180/M_PI,aplabel);
|
||||||
|
plotter->Fill1D("ap_VertexReconZ",400,-200,200,vertex_z,aplabel);
|
||||||
|
plotter->Fill2D("ap_VertexReconXY",200,-100,100,200,-100,100,r_rhoMin_fix.X(),r_rhoMin_fix.Y(),aplabel);
|
||||||
|
plotter->Fill1D("ap_Ex_from_protons",200,-10,10,apkin_p.getExc(sx3Efix,theta_s*180/M_PI),aplabel);
|
||||||
|
plotter->Fill1D("ap_Ex_from_alpha",200,-10,10,apkin_a.getExc(qqqEfix,theta_q*180/M_PI),aplabel);
|
||||||
|
|
||||||
|
if(pcevent.multi1==1 && pcevent.multi2==2) { //one-anode, two-cathode events, as originally intended
|
||||||
|
//std::cout << "Test" << std::endl;
|
||||||
|
plotter->Fill1D("ap_VertexReconZ_a1c2",400,-200,200,vertex_z,aplabel);
|
||||||
|
plotter->Fill2D("ap_VertexReconXY_a1c2",200,-100,100,200,-100,100,r_rhoMin_fix.X(),r_rhoMin_fix.Y(),aplabel);
|
||||||
|
plotter->Fill2D("ap_theta_vs_theta_qqq_sx3_a1c2",100,0,180,100,0,180,theta_q*180/M_PI,theta_s*180/M_PI,aplabel);
|
||||||
|
plotter->Fill2D("ap_Ef_vs_theta_qqq_a1c2",100,0,180,400,0,10,theta_q*180/M_PI,qqqEfix,aplabel);
|
||||||
|
plotter->Fill1D("ap_Ex_from_protons_a1c2",200,-10,10,apkin_p.getExc(sx3Efix,theta_s*180/M_PI),aplabel);
|
||||||
|
plotter->Fill1D("ap_Ex_from_alpha_a1c2",200,-10,10,apkin_a.getExc(qqqEfix,theta_q*180/M_PI),aplabel);
|
||||||
|
|
||||||
|
//std::cout << apkin_p.getExc(sx3Efix,theta_s*180/M_PI) << " " << apkin_a.getExc(qqqEfix,theta_q*180/M_PI)<< std::endl;
|
||||||
|
plotter->Fill2D("ap_Ef_vs_theta_sx3_a1c2",100,0,180,400,0,10,theta_s*180/M_PI,sx3Efix,aplabel);
|
||||||
|
|
||||||
|
//plotter->Fill2D("qqqEf_sx3E_matrix",400,0,10,400,0,10,qqqEfix,sx3event.Energy1,aplabel);
|
||||||
|
plotter->Fill2D("ap_qqq_sx3_matrix_a1c2",400,0,10,400,0,10,qqqevent.Energy1,sx3event.Energy1,aplabel);
|
||||||
|
plotter->Fill2D("ap_qqqEf_sx3Ef_matrix_a1c2",400,0,10,400,0,10,qqqEfix,sx3Efix,aplabel);
|
||||||
|
//std::cout << sx3event.Energy1 << " " << path_length_s << " " << sx3Efix << std::endl;
|
||||||
|
|
||||||
|
//plotter->Fill2D("dE3_Ef_AnodeQQQ_a1c2",400,0,10,400,0,40000,qqqEfix,pcevent.Energy1*sinTheta_customV,aplabel);
|
||||||
|
//plotter->Fill2D("dE3_Ef_CathodeQQQ_a1c2",400,0,10,400,0,10000,qqqEfix,pcevent.Energy2*sinTheta_customV,aplabel);
|
||||||
|
|
||||||
|
} //end if(a1c2) loop
|
||||||
|
}//end PC_Events for loop
|
||||||
|
|
||||||
|
|
||||||
|
}//end SX3_Events for loop
|
||||||
|
} //end QQQ_Events for loop, end sidetrack a(p,p)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ rm results_run*.root
|
||||||
export DATASET="17F"
|
export DATASET="17F"
|
||||||
export flip180="0"
|
export flip180="0"
|
||||||
export flipa=0
|
export flipa=0
|
||||||
export anode_offset=1
|
export anode_offset=0
|
||||||
#root -q -l -b -x ../ANASEN_analysis/data/17F_Data/Source_005_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run05.root;
|
#root -q -l -b -x ../ANASEN_analysis/data/17F_Data/Source_005_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run05.root;
|
||||||
#root -q -l -b -x ../ANASEN_analysis/data/17F_Data/Source_006_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run06.root;
|
#root -q -l -b -x ../ANASEN_analysis/data/17F_Data/Source_006_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run06.root;
|
||||||
#root -q -l -b -x ../ANASEN_analysis/data/17F_Data/Source_007_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run07.root;
|
#root -q -l -b -x ../ANASEN_analysis/data/17F_Data/Source_007_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run07.root;
|
||||||
|
|
@ -26,9 +26,9 @@ export anode_offset=1
|
||||||
#root -q -l -b -x ../ANASEN_analysis/data/17F_Data/SourceRun_021_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run21.root;
|
#root -q -l -b -x ../ANASEN_analysis/data/17F_Data/SourceRun_021_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run21.root;
|
||||||
|
|
||||||
#17F reaction data
|
#17F reaction data
|
||||||
export flip180="1"
|
export flip180="0"
|
||||||
declare -i run=231 #49
|
declare -i run=231 #49
|
||||||
while [[ $run -lt 235 ]]; do #392
|
while [[ $run -lt 258 ]]; do #392
|
||||||
wrun=$(printf "%03d" $run)
|
wrun=$(printf "%03d" $run)
|
||||||
file_exists=$(test -f ../ANASEN_analysis/data/17F_Data/Run_"$wrun"_mapped.root)
|
file_exists=$(test -f ../ANASEN_analysis/data/17F_Data/Run_"$wrun"_mapped.root)
|
||||||
if [[ $file_exists -ne 0 ]]; then continue; fi
|
if [[ $file_exists -ne 0 ]]; then continue; fi
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ export anode_offset=1
|
||||||
declare -i run=50
|
declare -i run=50
|
||||||
while [[ $run -lt 59 ]]; do #runs 1 to 84
|
while [[ $run -lt 59 ]]; do #runs 1 to 84
|
||||||
wrun=$(printf "%03d" $run)
|
wrun=$(printf "%03d" $run)
|
||||||
root -q -l -b -x ../ANASEN_analysis/data/27Al_Data/Run_"$wrun"_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root 27Al_output/results_run$wrun.root;
|
root -q -l -b -x ../ANASEN_analysis/data/27Al_Data/Run_"$wrun"_mapped.root -e 'tree->Process("MakeVertex.C+O","Analyzer_27Al.root")'; mv Analyzer_27Al.root 27Al_output/results_run$wrun.root;
|
||||||
run=run+1
|
run=run+1
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|
|
||||||
137
run_sx3.sh
137
run_sx3.sh
|
|
@ -1,101 +1,104 @@
|
||||||
#Alpha runs at different spacer positions
|
#Alpha runs at different spacer positions
|
||||||
rm results_run*.root
|
#rm results_run*.root
|
||||||
#export flipa=1
|
export flipa=0
|
||||||
export anode_offset=1
|
export anode_offset=0
|
||||||
export DATASET="27Al"
|
export DATASET="27Al"
|
||||||
if [[ 1 -eq 0 ]]; then
|
if [[ 1 -eq 0 ]]; then
|
||||||
root -b -q -l -x ../Remapped_files/27Al_Data/root_data/Run_009_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run09.root;
|
#root -b -q -l -x ../ANASEN_analysis/data/27Al_Data/Run_009_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run09.root;
|
||||||
exit
|
root -b -q -l -x ../ANASEN_analysis/data/27Al_Data/Run_001_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run01.root;
|
||||||
root -b -q -l -x ../Remapped_files/27Al_Data/root_data/Run_001_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run01.root;
|
root -b -q -l -x ../ANASEN_analysis/data/27Al_Data/Run_002_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run02.root;
|
||||||
root -b -q -l -x ../Remapped_files/27Al_Data/root_data/Run_002_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run02.root;
|
root -b -q -l -x ../ANASEN_analysis/data/27Al_Data/Run_003_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run03.root;
|
||||||
root -b -q -l -x ../Remapped_files/27Al_Data/root_data/Run_003_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run03.root;
|
root -b -q -l -x ../ANASEN_analysis/data/27Al_Data/Run_004_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run04.root;
|
||||||
root -b -q -l -x ../Remapped_files/27Al_Data/root_data/Run_004_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run04.root;
|
root -b -q -l -x ../ANASEN_analysis/data/27Al_Data/Run_005_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run05.root;
|
||||||
root -b -q -l -x ../Remapped_files/27Al_Data/root_data/Run_005_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run05.root;
|
root -b -q -l -x ../ANASEN_analysis/data/27Al_Data/Run_006_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run06.root;
|
||||||
root -b -q -l -x ../Remapped_files/27Al_Data/root_data/Run_006_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run06.root;
|
root -b -q -l -x ../ANASEN_analysis/data/27Al_Data/Run_007_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run07.root;
|
||||||
root -b -q -l -x ../Remapped_files/27Al_Data/root_data/Run_007_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run07.root;
|
root -b -q -l -x ../ANASEN_analysis/data/27Al_Data/Run_008_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run08.root;
|
||||||
root -b -q -l -x ../Remapped_files/27Al_Data/root_data/Run_008_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run08.root;
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#exit
|
#exit
|
||||||
#alpha+gas 27Al
|
#alpha+gas 27Al
|
||||||
export DATASET="27Al"
|
export DATASET="27Al"
|
||||||
export flip180="0"
|
export flip180="0"
|
||||||
#root -q -b -x ../Remapped_files/27Al_Data/root_data/Run_009_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run09.root;
|
#root -q -b -x ../ANASEN_analysis/data/27Al_Data/Run_009_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run09.root;
|
||||||
if [[ 1 -eq 0 ]]; then
|
if [[ 1 -eq 0 ]]; then
|
||||||
#export timecut_low=500.0;
|
#export timecut_low=230.0;
|
||||||
#export timecut_high=500.0;
|
#export timecut_low=400.0;
|
||||||
|
#export timecut_high=400.0;
|
||||||
#unset timecut_low, timecut_high
|
#unset timecut_low, timecut_high
|
||||||
#export source_vertex=53.44; root -q -b -x ../Remapped_files/27Al_Data/root_data/Run_009_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run09.root;
|
#export source_vertex=53.44; root -q -b -x ../ANASEN_analysis/data/27Al_Data/Run_009_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run09.root;
|
||||||
#export source_vertex=53.44; root -q -b -x ../Remapped_files/27Al_Data/root_data/Run_010_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run10.root;
|
#export source_vertex=53.44; root -q -b -x ../ANASEN_analysis/data/27Al_Data/Run_010_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run10.root;
|
||||||
#export source_vertex=53.44; root -q -b -x ../Remapped_files/27Al_Data/root_data/Run_011_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run11.root;
|
#export source_vertex=53.44; root -q -b -x ../ANASEN_analysis/data/27Al_Data/Run_011_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run11.root;
|
||||||
export source_vertex=53.44; root -q -b -x ../Remapped_files/27Al_Data/root_data/Run_012_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run12.root;
|
export source_vertex=53.44; root -q -b -x ../ANASEN_analysis/data/27Al_Data/Run_012_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run12.root;
|
||||||
#export source_vertex=53.44; root -q -b -x ../Remapped_files/27Al_Data/root_data/Run_013_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run13.root;
|
#export source_vertex=53.44; root -q -b -x ../ANASEN_analysis/data/27Al_Data/Run_013_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run13.root;
|
||||||
#exit
|
#exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#protons+gas, 27Al
|
#protons+gas, 27Al
|
||||||
#export flip180="1"
|
#export flip180="1"
|
||||||
#export flip180="0"
|
#export flip180="0"
|
||||||
if [[ 1 -eq 0 ]] ; then
|
if [[ 1 -eq 1 ]] ; then
|
||||||
export anode_offset=1
|
export flipa=0
|
||||||
root -q -b -x ../Remapped_files/27Al_Data/root_data/Run_015_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run15.root;
|
export anode_offset=0
|
||||||
exit
|
export source_vertex=-200.0; #put the 'source' on the entrance window
|
||||||
root -q -b -x ../Remapped_files/27Al_Data/root_data/Run_017_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run17.root;
|
root -q -b -x ../ANASEN_analysis/data/27Al_Data/Run_015_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run15.root;
|
||||||
root -q -b -x ../Remapped_files/27Al_Data/root_data/Run_018_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run18.root;
|
root -q -b -x ../ANASEN_analysis/data/27Al_Data/Run_017_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run17.root;
|
||||||
root -q -b -x ../Remapped_files/27Al_Data/root_data/Run_019_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run19.root;
|
root -q -b -x ../ANASEN_analysis/data/27Al_Data/Run_018_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run18.root;
|
||||||
root -q -b -x ../Remapped_files/27Al_Data/root_data/Run_020_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run20.root;
|
root -q -b -x ../ANASEN_analysis/data/27Al_Data/Run_019_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run19.root;
|
||||||
root -q -b -x ../Remapped_files/27Al_Data/root_data/Run_021_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run21.root;
|
root -q -b -x ../ANASEN_analysis/data/27Al_Data/Run_020_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run20.root;
|
||||||
root -q -b -x ../Remapped_files/27Al_Data/root_data/Run_022_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run22.root;
|
root -q -b -x ../ANASEN_analysis/data/27Al_Data/Run_021_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run21.root;
|
||||||
|
root -q -b -x ../ANASEN_analysis/data/27Al_Data/Run_022_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run22.root;
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#27Al reaction data
|
#27Al reaction data
|
||||||
#root -b -q -l -x ../Remapped_files/27Al_Data/root_data/Run_051_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run51.root;
|
#root -b -q -l -x ../ANASEN_analysis/data/27Al_Data/Run_051_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run51.root;
|
||||||
#root -b -q -l -x ../Remapped_files/27Al_Data/root_data/Run_078_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run78.root;
|
#root -b -q -l -x ../ANASEN_analysis/data/27Al_Data/Run_078_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run78.root;
|
||||||
#root -b -q -l -x ../Remapped_files/27Al_Data/root_data/Run_081_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run81.root;
|
#root -b -q -l -x ../ANASEN_analysis/data/27Al_Data/Run_081_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run81.root;
|
||||||
|
|
||||||
#root -l -x results_run19.root results_run12.root -e "new TBrowser"
|
#root -l -x results_run19.root results_run12.root -e "new TBrowser"
|
||||||
#exit
|
#exit
|
||||||
export DATASET="17F"
|
export DATASET="17F"
|
||||||
export flip180="0"
|
export flip180="0"
|
||||||
if [[ 1 -eq 1 ]]; then
|
if [[ 1 -eq 0 ]]; then
|
||||||
root -q -l -b -x ../Remapped_files/17F_Data/root_data/Source_005_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run05.root;
|
root -q -l -b -x ../ANASEN_analysis/data/17F_Data/Source_005_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run05.root;
|
||||||
root -q -l -b -x ../Remapped_files/17F_Data/root_data/Source_006_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run06.root;
|
root -q -l -b -x ../ANASEN_analysis/data/17F_Data/Source_006_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run06.root;
|
||||||
root -q -l -b -x ../Remapped_files/17F_Data/root_data/Source_007_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run07.root;
|
root -q -l -b -x ../ANASEN_analysis/data/17F_Data/Source_007_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run07.root;
|
||||||
root -q -l -b -x ../Remapped_files/17F_Data/root_data/Source_008_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run08.root;
|
root -q -l -b -x ../ANASEN_analysis/data/17F_Data/Source_008_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run08.root;
|
||||||
root -q -l -b -x ../Remapped_files/17F_Data/root_data/Source_009_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run09.root;
|
root -q -l -b -x ../ANASEN_analysis/data/17F_Data/Source_009_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run09.root;
|
||||||
root -q -l -b -x ../Remapped_files/17F_Data/root_data/Source_010_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run10.root;
|
root -q -l -b -x ../ANASEN_analysis/data/17F_Data/Source_010_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run10.root;
|
||||||
root -q -l -b -x ../Remapped_files/17F_Data/root_data/Source_011_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run11.root;
|
root -q -l -b -x ../ANASEN_analysis/data/17F_Data/Source_011_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run11.root;
|
||||||
root -q -l -b -x ../Remapped_files/17F_Data/root_data/Source_012_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run12.root;
|
root -q -l -b -x ../ANASEN_analysis/data/17F_Data/Source_012_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run12.root;
|
||||||
root -q -l -b -x ../Remapped_files/17F_Data/root_data/Source_013_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run13.root;
|
root -q -l -b -x ../ANASEN_analysis/data/17F_Data/Source_013_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run13.root;
|
||||||
root -q -l -b -x ../Remapped_files/17F_Data/root_data/Source_014_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run14.root;
|
root -q -l -b -x ../ANASEN_analysis/data/17F_Data/Source_014_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run14.root;
|
||||||
fi
|
fi
|
||||||
#17F pulser runs
|
#17F pulser runs
|
||||||
#root -q -l -b -x ../Remapped_files/17F_Data/root_data/PulserRun_015_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run15.root;
|
#root -q -l -b -x ../ANASEN_analysis/data/17F_Data/PulserRun_015_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run15.root;
|
||||||
#root -q -l -b -x ../Remapped_files/17F_Data/root_data/PulserRun_016_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run16.root;
|
#root -q -l -b -x ../ANASEN_analysis/data/17F_Data/PulserRun_016_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run16.root;
|
||||||
#root -q -l -b -x ../Remapped_files/17F_Data/root_data/PulserRun_017_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run17.root;
|
#root -q -l -b -x ../ANASEN_analysis/data/17F_Data/PulserRun_017_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run17.root;
|
||||||
|
|
||||||
#17F alpha run with gas
|
#17F alpha run with gas
|
||||||
export source_vertex=53.44; root -q -l -b -x ../Remapped_files/17F_Data/root_data/SourceRun_018_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run18.root;
|
if [[ 1 -eq 1 ]]; then
|
||||||
export source_vertex=14.24; root -q -l -b -x ../Remapped_files/17F_Data/root_data/SourceRun_019_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run19.root;
|
export source_vertex=53.44; root -q -l -b -x ../ANASEN_analysis/data/17F_Data/SourceRun_018_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run18.root;
|
||||||
export source_vertex=-24.96; root -q -l -b -x ../Remapped_files/17F_Data/root_data/SourceRun_020_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run20.root;
|
export source_vertex=14.24; root -q -l -b -x ../ANASEN_analysis/data/17F_Data/SourceRun_019_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run19.root;
|
||||||
export source_vertex=-73.96; root -q -l -b -x ../Remapped_files/17F_Data/root_data/SourceRun_021_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run21.root;
|
export source_vertex=-24.96; root -q -l -b -x ../ANASEN_analysis/data/17F_Data/SourceRun_020_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run20.root;
|
||||||
|
export source_vertex=-73.96; root -q -l -b -x ../ANASEN_analysis/data/17F_Data/SourceRun_021_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run21.root;
|
||||||
|
fi
|
||||||
#17F reaction data
|
#17F reaction data
|
||||||
export flip180="1"
|
#export flip180="0"
|
||||||
#export source_vertex=-57.28; root -q -l -b -x ../Remapped_files/17F_Data/root_data/ProtonRun_035_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run35.root;
|
if [[ 1 -eq 0 ]]; then
|
||||||
#export source_vertex=-8.28; root -q -l -b -x ../Remapped_files/17F_Data/root_data/ProtonRun_036_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root resulrs_run36.root;
|
export source_vertex=-57.28; root -q -l -b -x ../ANASEN_analysis/data/17F_Data/ProtonRun_035_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run35.root;
|
||||||
#export source_vertex=-27.88; root -q -l -b -x ../Remapped_files/17F_Data/root_data/ProtonRun_037_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run37.root;
|
#export source_vertex=-8.28; root -q -l -b -x ../ANASEN_analysis/data/17F_Data/ProtonRun_036_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root resulrs_run36.root;
|
||||||
#export source_vertex=11.32; root -q -l -b -x ../Remapped_files/17F_Data/root_data/ProtonRun_038_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run38.root;
|
#export source_vertex=-27.88; root -q -l -b -x ../ANASEN_analysis/data/17F_Data/ProtonRun_037_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run37.root;
|
||||||
#export source_vertex=30.92; root -q -l -b -x ../Remapped_files/17F_Data/root_data/ProtonRun_039_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run39.root;
|
#export source_vertex=11.32; root -q -l -b -x ../ANASEN_analysis/data/17F_Data/ProtonRun_038_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run38.root;
|
||||||
#export source_vertex=50.52; root -q -l -b -x ../Remapped_files/17F_Data/root_data/ProtonRun_041_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run41.root;
|
#export source_vertex=30.92; root -q -l -b -x ../ANASEN_analysis/data/17F_Data/ProtonRun_039_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run39.root;
|
||||||
#export source_vertex=70.12; root -q -l -b -x ../Remapped_files/17F_Data/root_data/ProtonRun_042_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run42.root;
|
#export source_vertex=50.52; root -q -l -b -x ../ANASEN_analysis/data/17F_Data/ProtonRun_041_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run41.root;
|
||||||
#export source_vertex=109.32; root -q -l -b -x ../Remapped_files/17F_Data/root_data/ProtonRun_043_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run43.root;
|
#export source_vertex=70.12; root -q -l -b -x ../ANASEN_analysis/data/17F_Data/ProtonRun_042_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run42.root;
|
||||||
#root -q -l -b -x ../Remapped_files/17F_Data/root_data/ProtonRun_043_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run43.root;
|
#export source_vertex=109.32; root -q -l -b -x ../ANASEN_analysis/data/17F_Data/ProtonRun_043_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run43.root;
|
||||||
#root -q -l -b -x ../Remapped_files/17F_Data/root_data/Run_099_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run99.root;
|
#root -q -l -b -x ../ANASEN_analysis/data/17F_Data/ProtonRun_043_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run43.root;
|
||||||
#root -q -l -b -x ../Remapped_files/17F_Data/root_data/Run_104_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run104.root;
|
#root -q -l -b -x ../ANASEN_analysis/data/17F_Data/Run_099_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run99.root;
|
||||||
|
#root -q -l -b -x ../ANASEN_analysis/data/17F_Data/Run_104_mapped.root -e 'tree->Process("MakeVertex.C+O")'; mv Analyzer_SX3.root results_run104.root;
|
||||||
#mv Analyzer_SX3.root results_run19.root;
|
#mv Analyzer_SX3.root results_run19.root;
|
||||||
|
fi
|
||||||
unset flipa
|
unset flipa
|
||||||
unset flipc
|
unset flipc
|
||||||
unset anode_offset
|
unset anode_offset
|
||||||
|
|
@ -103,4 +106,4 @@ unset cathode_offset
|
||||||
unset souce_vertex
|
unset souce_vertex
|
||||||
unset DATASET
|
unset DATASET
|
||||||
unset flip180
|
unset flip180
|
||||||
unset timecut_low, timecut_high
|
unset timecut_low, timecut_high
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user