77 FairRootManager* ioman = FairRootManager::Instance();
80 LOG(fatal) <<
"R3BNeulandClusterMon::Init: No FairRootManager";
87 fh3 =
new TH3D(
"hClusters",
"hClusters", 60, 1400, 1700, 50, -125, 125, 50, -125, 125);
88 fh3->SetTitle(
"NeuLAND Clusters");
89 fh3->GetXaxis()->SetTitle(
"Z");
90 fh3->GetYaxis()->SetTitle(
"X");
91 fh3->GetZaxis()->SetTitle(
"Y");
93 ioman->Register(
fOutput,
"Cluster TH3Ds in NeuLAND",
fh3, kTRUE);
96 TH1::AddDirectory(kFALSE);
98 fhClusters =
new TH1D(
"nClusters",
"Number of clusters in one event", 100, 0, 100);
99 fhClusterSize =
new TH1D(
"ClusterSize",
"Number of Digis for each Cluster", 100, 0, 100);
100 fhClusterEnergy =
new TH1D(
"ClusterEnergy",
"Energy for each Cluster", 2000, 0., 2000.);
102 new TH2D(
"ClusterEnergyVSSize",
"Energy for each Cluster vs Cluster Size", 2000, 0., 2000., 100, 0., 100.);
103 fhClusterTime =
new TH1D(
"ClusterTime",
"Time for each Cluster", 5000, 0., 500.);
104 fhClusterEToF =
new TH1D(
"ClusterEToF",
"Cluster EToF", 2000, 0, 2000);
105 fhClusterRValue =
new TH1D(
"ClusterRValue",
"Log Cluster R Value", 20000, -10, 1);
108 new TH2D(
"ClusterSizeVSEToF",
"Number of Digis for each Cluster vs EToF", 100, 0, 100, 2000, 0, 2000);
110 new TH2D(
"ClusterEnergyVSEToF",
"Energy for each Cluster vs EToF", 2000, 0., 2000., 2000, 0, 2000);
112 "Energy for each Cluster vs Cluster Size vs EToF",
123 fhENFromScatterVSEToF =
new TH2D(
"ENFromScatterVSEToF",
"ENFromScatterVSEToF", 1000, 0, 1000, 1000, 0, 1000);
126 new TH2D(
"ClusterNumberEtot",
"Number of Clusters vs. Total Energy", 200, 0, 2000, 50, 0, 50);
131 new TH2D(
"ClusterEToFVSEnergy",
"Cluster E_{ToF} vs. Cluster Energy", 100, 0, 1000, 100, 0, 1000);
135 fhClusterEToFVSTime =
new TH2D(
"ClusterEToFVSTime",
"Cluster E_{ToF} vs. Cluster Time", 100, 0, 1000, 500, 0, 500);
139 fhClusterEVSTime =
new TH2D(
"ClusterEVSTime",
"Cluster E vs. Cluster Time", 250, 0, 250, 500, 0, 250);
144 "ClusterLastMinusFirstDigiMagVSEnergy",
"ClusterLastMinusFirstDigiMagVSEnergy", 101, 0, 100, 60, 0, 600);
147 new TH2D(
"ClusterForemostMinusCentroidVSEnergy",
148 "Distance between Foremost Digi and Energy Centroid vs Cluster Energy",
159 new TH2D(
"ClusterForemostMinusMaxEnergyDigiPosVSEnergy",
160 "Distance between Foremost Digi and Max Energy Digi vs Cluster Energy",
171 new TH2D(
"ClusterCentroidMinusFirstDigiPosVSEnergy",
172 "Distance between Cluster Energy Centroid and First Hit vs Cluster Energy",
183 new TH2D(
"ClusterMaxEnergyDigiMinusFirstDigiPosVSEnergy",
184 "Distance between Max Energy Digi and First Digi vs Cluster Energy",
195 new TH2D(
"ClusterMaxEnergyDigiMinusCentroidVSEnergy",
196 "Distance between Max Energy Digi and Energy Centroid vs Cluster Energy",
207 new TH2D(
"ClusterEnergyMomentVSEnergy",
"Cluster Energy Moment VS Energy", 100, 0, 100, 60, 0, 600);
213 new TH1D(
"ClusterMaxEnergyDigiMinusFirstDigiMag",
"ClusterMaxEnergyDigiMinusFirstDigiMag", 100, 0, 1000);
216 new TH2D(
"ClusterEnergyMomentVSClusterSize",
"Cluster Energy Moment VS Cluster Size", 100, 0, 100, 30, 0, 30);
218 fhEToFVSEelastic =
new TH2D(
"EToFVSEelastic",
"EToFVSEelastic", 50, 0, 1000, 50, 10, 1000);
220 fhScatteredNEnergyVSEdep =
new TH2D(
"ScatteredNEnergyVSEdep",
"ScatteredNEnergyVSEdep", 100, 0, 1000, 100, 0, 1000);
223 new TH2D(
"ScatterAngleVSRecoilAngle",
"ScatterAngleVSRecoilAngle", 50, 0, 3.2, 50, 0, 3.2);
227 new TH2D(
"ClusterEnergyVSScatteredRecoilAngle",
"ClusterEnergyVSScatteredRecoilAngle", 50, 0, 1000, 50, 0, 3.2);
229 "ClusterEnergyVSScatteredNeutronAngle",
"ClusterEnergyVSScatteredNeutronAngle", 50, 0, 1000, 50, 0, 3.2);
231 fhElasticTargetMass =
new TH2D(
"ElasticTargetMass",
"ElasticTargetMass", 200, -50000, 50000, 100, 0, 1000);
242 fhZ =
new TH1D(
"Z",
"Z", 5000, 0., 5000.);
243 fhZVSEToF =
new TH2D(
"ZVSEToF",
"Z vs EToF", 4000, 1000, 5000, 2000, 0, 2000);
244 fhDistFromCenter =
new TH1D(
"DistFromCenter",
"DistFromCenter", 500, 0., 500.);
245 fhDistFromCenterVSEToF =
new TH2D(
"DistFromCenterVSEToF",
"DistFromCenter vs EToF", 500, 0, 500, 2000, 0, 2000);
247 fhDeltaT =
new TH1D(
"fhDeltaT",
"T_{Last Digi} - T_{First Digi}", 1000, 0, 100);
249 new TH1D(
"fhForemostMinusFirstDigiTime",
"T_{Foremost} - T_{First Digi}", 1000, -10, 10);
251 fhThetaEDigi =
new TH2D(
"fhThetaEDigi",
"fhThetaEDigi", 1000, -500, 500, 400, 0, 400);
252 fhThetaEDigiCosTheta =
new TH2D(
"fhThetaEDigiCosTheta",
"fhThetaEDigiCosTheta", 1000, -500, 500, 400, 0, 400);
254 hT =
new TH1D(
"hT",
"Cluster Digi Delta T", 3000, 0., 15.);
255 hTNeigh =
new TH1D(
"hTNeigh",
"Cluster Digi Neigh Delta T", 3000, 0., 15.);
266 [&](
R3BNeulandCluster& cluster) { return !(fClusterFilters.IsValid(&cluster)); }),
278 fh3->Fill(start.Z(), start.X(), start.Y(), cluster.
GetE());
282 const Double_t etot =
286 [](Double_t sum,
const R3BNeulandCluster& cluster) { return sum + cluster.GetE(); });
346 const auto theta =
GetTheta(cluster);
347 for (
const auto& digi : cluster.
GetHits())
391 if ((*ita).GetSize() >= 3)
406 const auto& digis = cluster.
GetHits();
407 for (
auto it1 = digis.begin(); it1 != digis.end(); it1++)
409 for (
auto it2 = it1 + 1; it2 != digis.end(); it2++)
411 if (std::abs(it1->GetPosition().X() - it2->GetPosition().X()) < 7.5 &&
412 std::abs(it1->GetPosition().Y() - it2->GetPosition().Y()) < 7.5 &&
413 std::abs(it1->GetPosition().Z() - it2->GetPosition().Z()) < 7.5)
415 hTNeigh->Fill(std::abs(it1->GetT() - it2->GetT()));
417 hT->Fill(std::abs(it1->GetT() - it2->GetT()));