12#ifndef LITHITDATAMUON_H_
13#define LITHITDATAMUON_H_
15#include "LitComparators.h"
54 fHits.resize(nofGroups);
56 for (
int i = 0; i < nofGroups; i++) {
58 fHits[i].resize(nofStations);
60 for (
int j = 0; j < nofStations; j++) {
62 fHits[i][j].resize(nofSubstations);
63 fMaxErr[i][j].resize(nofSubstations);
64 for (
int k = 0; k < nofSubstations; k++) {
65 fHits[i][j][k].reserve(1500);
80 fHits[stationGroup][station][substation].push_back(hit);
81 if (
fMaxErr[stationGroup][station][substation] < hit->
Dx) {
82 fMaxErr[stationGroup][station][substation] = hit->
Dx;
93 unsigned char stationGroup;
94 unsigned char station;
95 unsigned char substation;
97 AddHit(stationGroup, station, substation, hit);
110 return fHits[stationGroup][station][substation][hitId];
120 const std::vector<LitScalPixelHit*>&
GetHits(
int stationGroup,
int station,
int substation)
122 return fHits[stationGroup][station][substation];
132 unsigned int GetNofHits(
int stationGroup,
int station,
int substation)
const
134 return fHits[stationGroup][station][substation].size();
146 return fMaxErr[stationGroup][station][substation];
154 for (
unsigned int i = 0; i <
fHits.size(); i++) {
155 for (
unsigned int j = 0; j <
fHits[i].size(); j++) {
156 for (
unsigned int k = 0; k <
fHits[i][j].size(); k++) {
157 fHits[i][j][k].clear();
158 fHits[i][j][k].reserve(1500);
171 for (
int i = 0; i <
fLayout.GetNofStationGroups(); i++) {
172 for (
int j = 0; j <
fLayout.GetNofStations(i); j++) {
173 for (
int k = 0; k <
fLayout.GetNofSubstations(i, j); k++) {
174 std::vector<LitScalPixelHit*>& shits =
fHits[i][j][k];
175 std::sort(shits.begin(), shits.end(), ComparePixelHitXLess());
191 std::string str =
"HitDataMuon:\n";
192 for (
int i = 0; i <
fLayout.GetNofStationGroups(); i++) {
194 for (
int j = 0; j <
fLayout.GetNofStations(i); j++) {
196 for (
int k = 0; k <
fLayout.GetNofSubstations(i, j); k++) {
224 void StationByPlaneId(
unsigned char planeId,
unsigned char& stationGroup,
unsigned char& station,
225 unsigned char& substation)
const
228 for (
unsigned char i = 0; i <
fLayout.GetNofStationGroups(); i++) {
229 for (
unsigned char j = 0; j <
fLayout.GetNofStations(i); j++) {
234 substation =
fLayout.GetNofSubstations(i, j) - (
counter - planeId);
242 std::vector<std::vector<std::vector<PixelHitArray>>>
fHits;
244 std::vector<std::vector<std::vector<fscal>>>
fMaxErr;
Classes for muon geometry description of CBM.
unsigned char GetNofStationGroups() const
Return number of station groups.
unsigned char GetNofStations(unsigned char stationGroup) const
Return number of stations for specified station group.
unsigned char GetNofSubstations(unsigned char stationGroup, unsigned char station) const
Return number of substations for specified station group and station.
std::vector< std::vector< std::vector< PixelHitArray > > > fHits
LitHitDataMuon()
Constructor.
void SortHits()
Sort hits in each substation by X coordinate.
void Clear()
Clear hit arrays.
virtual ~LitHitDataMuon()
Destructor.
void AddHit(unsigned char planeId, LitScalPixelHit *hit)
Add hit using absolute detector plane (substation) index in the detector.
void AddHit(int stationGroup, int station, int substation, LitScalPixelHit *hit)
Add hit using station group, station and substation indices.
fscal GetMaxErr(int stationGroup, int station, int substation) const
Return maximum hit error in [cm] for the specified substation.
unsigned int GetNofHits(int stationGroup, int station, int substation) const
Return number of hits for the specified substation.
const LitScalPixelHit * GetHit(int stationGroup, int station, int substation, int hitId) const
Return hit using station group, station and substation indices.
const std::vector< LitScalPixelHit * > & GetHits(int stationGroup, int station, int substation)
Return hit vector using station group, station and substation indices.
void SetDetectorLayout(const LitDetectorLayoutMuon< T > &layout)
Set detector layout for which hits are arranged.
std::string ToString() const
Return std::string representation for the class.
void StationByPlaneId(unsigned char planeId, unsigned char &stationGroup, unsigned char &station, unsigned char &substation) const
Calculate station group, station and substation indices using the detector plane number.
LitDetectorLayoutMuon< T > fLayout
friend std::ostream & operator<<(std::ostream &strm, const LitHitDataMuon &hitData)
Operator << for convenient output to std::ostream.
std::vector< std::vector< std::vector< fscal > > > fMaxErr
Base class for scalar pixel hits.
class lit::parallel::LitDetectorLayout _fvecalignment
std::string ToString(const T &value)
Function converts object into a std::string.