ATLAS Offline Software
Loading...
Searching...
No Matches
MuonSectorMappingTest.cxx File Reference
#include <iostream>
#include <string>
#include "MuonDetDescrUtils/MuonSectorMapping.h"
#include "TFile.h"
#include "TTree.h"
Include dependency graph for MuonSectorMappingTest.cxx:

Go to the source code of this file.

Functions

int main (int argc, char *argv[])

Function Documentation

◆ main()

int main ( int argc,
char * argv[] )

Definition at line 12 of file MuonSectorMappingTest.cxx.

12 {
13 if (argc > 1) { std::cout << argv[0] << std::endl; }
14 Muon::MuonSectorMapping sectorMapping;
15
16 TFile* output = new TFile("MuonSectorMapping.root", "RECREATE");
17 TTree* tree = new TTree("sm", "sm");
18 float phi;
19 float width;
20 float rInSector;
21 float rTest;
22 float phiInSector;
23 float phiTest;
24 float phiSector;
25 float neighbourPhi;
26 float rNeighbour;
27 float overlapPhi;
28 int id;
29 int closeToEdge;
30 int neighbours;
31 int neighbourId;
32 int inside;
33 tree->Branch("phi", &phi, "phi/F");
34 tree->Branch("width", &width, "width/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
49 float r = 1000.;
50 unsigned int nsamplings = 100000;
51 float dphi = 2 * M_PI / nsamplings;
52 for (unsigned int i = 0; i < nsamplings; ++i) {
53 phi = -M_PI + dphi * i;
54 id = sectorMapping.getSector(phi);
55 width = sectorMapping.sectorWidth(id);
56 phiSector = sectorMapping.sectorPhi(id);
57 phiInSector = sectorMapping.transformPhiToSector(phi, id);
58 phiTest = sectorMapping.transformPhiToSector(phiInSector, id, false);
59 rInSector = sectorMapping.transformRToSector(r, phi, id);
60 rTest = sectorMapping.transformRToSector(rInSector, phi, id, false);
61 std::vector<int> sectors;
62 sectorMapping.getSectors(phi, 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);
73 overlapPhi = sectorMapping.sectorOverlapPhi(id, neighbourId);
74 rNeighbour = sectorMapping.transformRToNeighboringSector(rInSector, id, neighbourId);
75 }
76 closeToEdge = sectorMapping.closeToSectorBoundary(phi);
77 inside = sectorMapping.insideSector(id, phi);
78 tree->Fill();
79 }
80 tree->Write();
81 output->Write();
82 output->Close();
83 return 0;
84}
#define M_PI
Scalar phi() const
phi method
const double width
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 > &sectors) 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
int r
Definition globals.cxx:22
output
Definition merge.py:16
TChain * tree