28 std::poisson_distribution<> distTracks(mMeanTracksPerEvent);
29 int nTracks = distTracks(mGenerator);
38 std::vector<Track> tracks;
40 std::array<float, 3>
pos;
41 std::array<float, 2> dir;
42 for (
int itrack = 0; itrack < nTracks; ++itrack) {
43 for (
int ipos = 0; ipos < 3; ++ipos) {
45 std::uniform_real_distribution<float>{mPositionLimits[2 * ipos], mPositionLimits[2 * ipos + 1]}(mGenerator);
49 std::array<float, 4> limits = getLimitsForAcceptance(
pos);
51 for (
int idir = 0; idir < 2; ++idir) {
52 dir[idir] = std::uniform_real_distribution<float>{limits[2 * idir], limits[2 * idir + 1]}(mGenerator);
55 tracks.push_back(track);
61std::array<float, 4> TrackGenerator::getLimitsForAcceptance(std::array<float, 3>
pos)
65 std::array<float, 4> limits = mSlopeLimits;
66 float dZ = -1600. -
pos[2];
72 std::array<float, 2> maxValues{{257., 306.7}};
73 for (
int icoor = 0; icoor < 2; ++icoor) {
75 int imax = 2 * icoor + 1;
76 float minSlope = (
pos[icoor] - maxValues[icoor]) / dZ;
77 float maxSlope = (maxValues[icoor] -
pos[icoor]) / dZ;
78 if (minSlope > limits[imin]) {
79 limits[imin] = minSlope;
81 if (maxSlope < limits[imax]) {
82 limits[imax] = maxSlope;
Fast track generator for MID.
std::vector< Track > generate()
This class defines the MID track.
void setDirection(float xDir, float yDir, float zDir)
void setPosition(float xPos, float yPos, float zPos)
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...