12 {
13 if (argc > 1) { std::cout <<
argv[0] << std::endl; }
15
16 TFile*
output =
new TFile(
"MuonSectorMapping.root",
"RECREATE");
17 TTree*
tree =
new TTree(
"sm",
"sm");
20 float rInSector;
21 float rTest;
22 float phiInSector;
23 float phiTest;
24 float phiSector;
25 float neighbourPhi;
26 float rNeighbour;
27 float overlapPhi;
29 int closeToEdge;
30 int neighbours;
31 int neighbourId;
33 tree->Branch(
"phi", &
phi,
"phi/F");
35 tree->Branch(
"phiInSector", &phiInSector,
"phiInSector/F");
36 tree->Branch(
"phiTest", &phiTest,
"phiTest/F");
37 tree->Branch(
"rInSector", &rInSector,
"rInSector/F");
38 tree->Branch(
"rTest", &rTest,
"rTest/F");
39 tree->Branch(
"phiSector", &phiSector,
"phiSector/F");
40 tree->Branch(
"neighbourPhi", &neighbourPhi,
"neighbourPhi/F");
41 tree->Branch(
"rNeighbour", &rNeighbour,
"rNeighbour/F");
42 tree->Branch(
"overlapPhi", &overlapPhi,
"overlapPhi/F");
43 tree->Branch(
"id", &
id,
"id/I");
44 tree->Branch(
"closeToEdge", &closeToEdge,
"closeToEdge/I");
45 tree->Branch(
"neighbours", &neighbours,
"neighbours/I");
46 tree->Branch(
"neighbourId", &neighbourId,
"neighbourId/I");
47 tree->Branch(
"inside", &inside,
"inside/I");
48
50 unsigned int nsamplings = 100000;
51 float dphi = 2 *
M_PI / nsamplings;
52 for (
unsigned int i = 0;
i < nsamplings; ++
i) {
61 std::vector<int> sectors;
63 neighbours = sectors.size();
64 neighbourId = -1;
65 for (auto val : sectors) {
66 if (val !=
id) neighbourId =
val;
67 }
68 neighbourPhi = -5;
69 overlapPhi = -5.;
70 rNeighbour = 1100;
71 if (neighbourId > 0) {
72 neighbourPhi = sectorMapping.
sectorPhi(neighbourId);
75 }
79 }
83 return 0;
84}
Scalar phi() const
phi method
double sectorOverlapPhi(int sector1, int sector2) const
returns the phi position of the overlap between the two sectors (which have to be neighboring) in rad...
double transformPhiToSector(double phi, int sector, bool toSector=true) const
transforms a phi position from and to the sector coordinate system in radians
double sectorPhi(int sector) const
returns the centeral phi position of a sector in radians
double sectorWidth(int sector) const
sector width (with overlap) in radians
double transformRToSector(double r, double phi, int sector, bool toSector=true) const
expresses a radial position from and to the sector coordinate frame, the phi position should always b...
void getSectors(double phi, std::vector< int > §ors) const
returns the main sector plus neighboring if the phi position is in an overlap region
bool insideSector(int sector, double phi) const
checks whether the phi position is consistent with sector
bool closeToSectorBoundary(double phi) const
checks whether the phi position is close to a sector boundary
int getSector(double phi) const
returns the sector corresponding to the phi position
double transformRToNeighboringSector(double r, int sectorHit, int sectorTarget) const
transform a radial position from one sector frame into another