16 vector<MSLayer> allLayers;
19 vector<MSLayer>::iterator it;
21 for (it = allLayers.begin(); it != allLayers.end(); it++) {
27 float x0 = getDataX0(*it).x0;
31 float sumX0D = theLayersData.sumX0D(
zero, middle);
32 dataX0 =
DataX0(x0, sumX0D, cotTheta);
34 float hrange = (it->range().max() - it->range().min()) / 2.;
35 float cot1 = it->position() / (it->range().mean() - hrange / 2);
36 float cot2 = it->position() / (it->range().mean() + hrange / 2);
39 float sum1 = theLayersData.sumX0D(
zero, it->crossing(line1).first);
40 float sum2 = theLayersData.sumX0D(
zero, it->crossing(line2).first);
41 float slope = (sum2 - sum1) / (1 / cot2 - 1 / cot1);
42 float sumX0D = sum1 +
slope * (1 / cotTheta - 1 / cot1);
43 dataX0 =
DataX0(x0, sumX0D, cotTheta);
44 dataX0.setForwardSumX0DSlope(
slope);
46 setDataX0(*it, dataX0);
47 theLayersData.update(*it);
static const double slope[3]
MSLayersKeeperX0DetLayer()