7 for(
int i = 0; i < 10; ++i) {
11 fH2[slot][
"xiThetaDetCount"] =
new TH2D(
"xiThetaDetCount",
12 "Possible #xi Angles in GRIFFIN Array for coincidence angle #theta (measured from clover faces);Experimental Angle #xi (#circ);Coincidence Angle #theta (#circ);Counts",
14 fH2[slot][
"xiThetaDet"] =
new TH2D(
"xiThetaDet",
15 "Measured #xi Angles in GRIFFIN Array for coincidence angle #theta (measured from clover faces);Experimental Angle #xi (#circ);Coincidence Angle #theta (#circ);Counts",
17 fH2[slot][
"xiThetaDetMixed"] =
new TH2D(
"xiThetaDetMixed",
18 "Measured #xi Angles in GRIFFIN Array for mixed angle #theta (measured from clover faces);Experimental Angle #xi (#circ);Coincidence Angle #theta (#circ);Counts",
20 fH2[slot][
"xiThetaCryCount"] =
new TH2D(
"xiThetaCryCount",
21 "Possible #xi Angles in GRIFFIN Array for coincidence angle #theta (measured from crystal positions);Experimental Angle #xi (#circ);Coincidence Angle #theta (#circ);Counts",
23 fH2[slot][
"xiThetaCry"] =
new TH2D(
"xiThetaCry",
24 "Measured #xi Angles in GRIFFIN Array for coincidence angle #theta (measured from crystal positions);Experimental Angle #xi (#circ);Coincidence Angle #theta (#circ);Counts",
26 fH2[slot][
"xiThetaCryMixed"] =
new TH2D(
"xiThetaCryMixed",
27 "Measured #xi Angles in GRIFFIN Array for mixed angle #theta (measured from crystal positions);Experimental Angle #xi (#circ);Coincidence Angle #theta (#circ);Counts",
31 fH2[slot][
"gammagamma"] =
new TH2D(
"gammagamma",
"#gamma - #gamma (All Events);Energy [keV];Energy [keV]",
fBins,
33 fH2[slot][
"gammaCrystal"] =
new TH2D(
"gammaCrystal",
"#gamma Crystal (All Events);Energy [keV];Crystal Number",
35 fH2[slot][
"xiCrystalCount"] =
new TH2D(
"xiCrystalCount",
"Possible #xi Crystal (All Events);#xi;Crystal Number",
36 fXiBins, 0.0, 180.000001, 64, 0, 64);
37 fH2[slot][
"thetaCrystalCount"] =
38 new TH2D(
"thetaCrystalCount",
"Possible #theta Crystal (All Events);#theta;Crystal Number",
fThetaBins, 0.0,
39 180.000001, 64, 0, 64);
40 fH2[slot][
"xiCrystal"] =
41 new TH2D(
"xiCrystal",
"#xi Crystal (All Events);#xi;Crystal Number",
fXiBins, 0.0, 180.000001, 64, 0, 64);
42 fH2[slot][
"thetaCrystal"] =
new TH2D(
"thetaCrystal",
"#theta Crystal (All Events);#theta;Crystal Number",
fThetaBins,
43 0.0, 180.000001, 64, 0, 64);
44 fH2[slot][
"gammaXi_g1"] =
45 new TH2D(
"gammaXi_g1",
"#xi - #gamma (Only #gamma_{1} from Triple Coincidence);#xi;Energy [keV]",
fXiBins, 0.0,
47 fH2[slot][
"gammaXi_g2"] =
48 new TH2D(
"gammaXi_g2",
"#xi - #gamma (Only #gamma_{2} from Triple Coincidence);#xi;Energy [keV]",
fXiBins, 0.0,
50 fH1[slot][
"gammaSingles_g1"] =
51 new TH1D(
"gammaSingles_g1",
"#gamma singles (Only #gamma_{1} from Triple Coincidence);Energy [keV]",
fBins,
53 fH1[slot][
"gammaSingles_g2"] =
54 new TH1D(
"gammaSingles_g2",
"#gamma singles (Only #gamma_{2} from Triple Coincidence);Energy [keV]",
fBins,
56 fH1[slot][
"gammaSingles_g3"] =
57 new TH1D(
"gammaSingles_g3",
"#gamma singles (Only #gamma_{3} from Triple Coincidence);Energy [keV]",
fBins,
59 fH1[slot][
"ggTimeDiff_g1g2"] =
new TH1D(
"ggTimeDiff_g1g2",
"#gamma_{1}-#gamma_{2} time difference", 300, 0, 300);
60 fH1[slot][
"ggTimeDiff_g1g3"] =
new TH1D(
"ggTimeDiff_g1g3",
"#gamma_{1}-#gamma_{3} time difference", 300, 0, 300);
61 fH1[slot][
"ggTimeDiff_g2g3"] =
new TH1D(
"ggTimeDiff_g2g3",
"#gamma_{2}-#gamma_{3} time difference", 300, 0, 300);
66 for(
int one = 0; one < 64; ++one) {
71 for(
int two = (one / 4) * 4; two < (one / 4 + 1) * 4; ++two) {
73 if(one == two) {
continue; }
75 for(
int three = 0; three < 64; ++three) {
77 if(three / 4 == one / 4) {
continue; }
82 TVector3 n1 = v3.Cross(v1);
83 TVector3 n2 = v1.Cross(v2);
84 double xi = n1.Angle(n2) * TMath::RadToDeg();
85 double theta = v3.Angle(v1) * TMath::RadToDeg();
87 std::cout << one <<
", " << two <<
", " << three <<
": " << xi <<
", "
88 << d1.Angle(d3) * TMath::RadToDeg() <<
", " << theta << std::endl;
89 fH2[slot][
"xiThetaDetCount"]->Fill(xi, d1.Angle(d3) * TMath::RadToDeg());
90 fH2[slot][
"xiThetaCryCount"]->Fill(xi, theta);
91 fH2[slot][
"xiCrystalCount"]->Fill(xi, one);
92 fH2[slot][
"thetaCrystalCount"]->Fill(theta, one);
105 fH1[slot].at(
"gammaSingles")->Fill(grif1->GetEnergy());
106 fH2[slot].at(
"gammaCrystal")->Fill(grif1->GetEnergy(), grif1->GetArrayNumber() - 1);
108 if(g1 == g2) {
continue; }
112 fH2[slot].at(
"gammagamma")->Fill(grif1->GetEnergy(), grif2->GetEnergy());
116 if(grif1->GetDetector() != grif2->GetDetector() || grif1->GetCrystal() == grif2->GetCrystal() ||
117 grif1->GetEnergy() < grif2->GetEnergy() || !
Coincident(grif1, grif2)) {
122 int index =
CheckEnergy(grif1->GetEnergy() + grif2->GetEnergy());
123 if(index < 0) {
continue; }
130 if(g1 == g3 || g2 == g3) {
continue; }
134 if(grif1->GetDetector() == grif3->GetDetector()) {
continue; }
136 if(
CheckEnergy(grif3->GetEnergy(), 1 - index) < 0) {
continue; }
139 fH1[slot].at(
"ggTimeDiff_g1g2")->Fill(
TimeDiff(grif1, grif2));
140 fH1[slot].at(
"ggTimeDiff_g1g3")->Fill(
TimeDiff(grif1, grif3));
141 fH1[slot].at(
"ggTimeDiff_g2g3")->Fill(
TimeDiff(grif2, grif3));
147 TVector3 n1 = v3.Cross(v1);
148 TVector3 n2 = v1.Cross(v2);
150 double xi = n1.Angle(n2) * TMath::RadToDeg();
151 double theta = v3.Angle(v1) * TMath::RadToDeg();
153 fH2[slot].at(
"xiThetaCry")->Fill(xi, theta);
154 fH2[slot].at(
"xiThetaDet")->Fill(xi, d1.Angle(d3) * TMath::RadToDeg());
155 fH2[slot].at(
"xiCrystal")->Fill(xi, grif1->GetArrayNumber() - 1);
156 fH2[slot].at(
"thetaCrystal")->Fill(theta, grif1->GetArrayNumber() - 1);
158 fH2[slot].at(
"gammaXi_g1")->Fill(xi, grif1->GetEnergy());
159 fH2[slot].at(
"gammaXi_g2")->Fill(xi, grif2->GetEnergy());
160 fH1[slot].at(
"gammaSingles_g1")->Fill(grif1->GetEnergy());
161 fH1[slot].at(
"gammaSingles_g2")->Fill(grif2->GetEnergy());
162 fH1[slot].at(
"gammaSingles_g3")->Fill(grif3->GetEnergy());
168 for(
auto g3 = 0; g3 < fLastGriffin->GetMultiplicity(); ++g3) {
169 if(g1 == g3 || g2 == g3) {
continue; }
170 auto grif3 = fLastGriffin->GetGriffinHit(g3);
173 if(grif1->GetDetector() == grif3->GetDetector()) {
continue; }
175 if(
CheckEnergy(grif3->GetEnergy(), 1 - index) < 0) {
continue; }
180 TVector3 n1 = v3.Cross(v1);
181 TVector3 n2 = v1.Cross(v2);
183 double xi = n1.Angle(n2) * TMath::RadToDeg();
184 double theta = v3.Angle(v1) * TMath::RadToDeg();
186 fH2[slot].at(
"xiThetaCryMixed")->Fill(xi, theta);
187 fH2[slot].at(
"xiThetaDetMixed")->Fill(xi, d1.Angle(d3) * TMath::RadToDeg());