75void CbmKresTrainAnn::Exec(
int event,
int IdForANN,
double InvariantMass,
double OpeningAngle,
double PlaneAngle_last,
76 double ZPos, TVector3 Momentum1, TVector3 Momentum2)
79 TMath::Sqrt(Momentum1.X() * Momentum1.X() + Momentum1.Y() * Momentum1.Y() + Momentum1.Z() * Momentum1.Z());
81 TMath::Sqrt(Momentum2.X() * Momentum2.X() + Momentum2.Y() * Momentum2.Y() + Momentum2.Z() * Momentum2.Z());
103 if (
IM_correct.size() % 100 == 0 && IdForANN == 1)
129 TTree* simu =
new TTree(
"MonteCarlo",
"MontecarloData");
133 simu->Branch(
"x0", &
x[0],
"x0/D");
134 simu->Branch(
"x1", &
x[1],
"x1/D");
135 simu->Branch(
"x2", &
x[2],
"x2/D");
136 simu->Branch(
"x3", &
x[3],
"x3/D");
137 simu->Branch(
"x4", &
x[4],
"x4/D");
138 simu->Branch(
"x5", &
x[5],
"x5/D");
139 simu->Branch(
"xOut", &xOut,
"xOut/D");
141 for (
size_t i = 0; i <
IM_correct.size(); i++) {
149 if (
x[0] > 1.0)
x[0] = 1.0;
150 if (
x[1] > 1.0)
x[1] = 1.0;
151 if (
x[2] > 1.0)
x[2] = 1.0;
152 if (
x[3] > 1.0)
x[3] = 1.0;
153 if (
x[4] > 1.0)
x[4] = 1.0;
154 if (
x[5] > 1.0)
x[5] = 1.0;
160 for (
size_t i = 0; i <
IM_wrong.size(); i++) {
168 if (
x[0] > 1.0)
x[0] = 1.0;
169 if (
x[1] > 1.0)
x[1] = 1.0;
170 if (
x[2] > 1.0)
x[2] = 1.0;
171 if (
x[3] > 1.0)
x[3] = 1.0;
172 if (
x[4] > 1.0)
x[4] = 1.0;
173 if (
x[5] > 1.0)
x[5] = 1.0;
180 TMultiLayerPerceptron network(
"x0,x1,x2,x3,x4,x5:12:xOut", simu,
"Entry$+1");
181 network.Train(300,
"text,update=10");
182 network.DumpWeights(
"../../../analysis/conversion2/KresAnalysis_ann_weights.txt");
189 for (
size_t i = 0; i <
IM_correct.size(); i++) {
197 if (params[0] > 1.0) params[0] = 1.0;
198 if (params[1] > 1.0) params[1] = 1.0;
199 if (params[2] > 1.0) params[2] = 1.0;
200 if (params[3] > 1.0) params[3] = 1.0;
201 if (params[4] > 1.0) params[4] = 1.0;
202 if (params[5] > 1.0) params[5] = 1.0;
204 Double_t netEval = network.Evaluate(0, params);
208 for (
size_t i = 0; i <
IM_wrong.size(); i++) {
216 if (params[0] > 1.0) params[0] = 1.0;
217 if (params[1] > 1.0) params[1] = 1.0;
218 if (params[2] > 1.0) params[2] = 1.0;
219 if (params[3] > 1.0) params[3] = 1.0;
220 if (params[4] > 1.0) params[4] = 1.0;
221 if (params[5] > 1.0) params[5] = 1.0;
223 Double_t netEval = network.Evaluate(0, params);
void Exec(int event, int IdForANN, double InvariantMass, double OpeningAngle, double PlaneAngle_last, double ZPos, TVector3 Momentum1, TVector3 Momentum2)