ATLAS Offline Software
Loading...
Searching...
No Matches
MuonSectorMappingTest.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3*/
4
5#include <iostream>
6#include <string>
7
9#include "TFile.h"
10#include "TTree.h"
11
12int main(int argc, char* argv[]) {
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
int main()
Definition hello.cxx:18
TChain * tree