CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Member Functions | Public Attributes
geometry.Alignables Class Reference

Public Member Functions

def __init__
 
def create_children_list
 
def create_list
 
def get_detids
 
def get_discriminator
 
def get_ndiscriminator
 
def get_subdetid
 

Public Attributes

 config
 
 structures
 

Detailed Description

Creates a list of the aligned strucutres. Get the fields out of the
TrackerTree.root file.

Definition at line 16 of file geometry.py.

Constructor & Destructor Documentation

def geometry.Alignables.__init__ (   self,
  config 
)

Definition at line 21 of file geometry.py.

21 
22  def __init__(self, config):
23  # list of Structure objects, contains structures which were aligned
24  self.structures = []
25  self.config = config

Member Function Documentation

def geometry.Alignables.create_children_list (   self)

Definition at line 70 of file geometry.py.

References geometry.Alignables.get_detids(), join(), sistrip::SpyUtilities.range(), geometry.Alignables.structures, and ComparisonHelper.zip().

70 
71  def create_children_list(self):
72  for struct in self.structures:
73  # loop over discriminators -> create patterns
74  # pattern {"half": 2, "side": 2, "layer": 6, ...}
75  ranges = struct.ndiscriminator
76  pranges = [list(range(1, x+1)) for x in ranges]
77  # loop over all possible combinations of the values of the
78  # discriminators
79  for number in itertools.product(*pranges):
80  # create pattern dict
81  pattern = dict(zip(map(lambda x: x.lower(), struct.discriminator), number))
82  # name out of pattern
83  name = " ".join("{0} {1}".format(key.lower(), value)
84  for (key, value) in pattern.items())
85  # get detids of child
86  detids = self.get_detids(struct.subdetid, pattern)
87  # create child and add it to parent
88  child = Structure(name, struct.subdetid, detids=detids)
89  struct.children.append(child)
90 
const uint16_t range(const Frame &aFrame)
OutputIterator zip(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result, Compare comp)
static std::string join(char **cmd)
Definition: RemoteFile.cc:19
def create_children_list
Definition: geometry.py:70
def geometry.Alignables.create_list (   self,
  MillePedeUser 
)

Definition at line 52 of file geometry.py.

References any(), geometry.Alignables.get_detids(), geometry.Alignables.get_discriminator(), geometry.Alignables.get_ndiscriminator(), geometry.Alignables.get_subdetid(), str, and geometry.Alignables.structures.

52 
53  def create_list(self, MillePedeUser):
54  # loop over output TTree
55  for entry in MillePedeUser:
56  # check which structures were aligned
57  if (entry.ObjId != 1 and 999999 not in map(abs, entry.Par)):
58  # check if structure is not yet in the list
59  if not any(x.name == str(entry.Name) for x in self.structures):
60  # create new structure object
61  name = str(entry.Name)
62  subdetid = self.get_subdetid(entry.ObjId)
63  discriminator = self.get_discriminator(entry.ObjId)
64  ndiscriminator = self.get_ndiscriminator(entry.ObjId)
65  # create structure
66  self.structures.append(
67  Structure(name, subdetid, discriminator, ndiscriminator))
68  # add detids which belong to this structure
69  self.structures[-1].detids = self.get_detids(subdetid)
bool any(const std::vector< T > &v, const T &what)
Definition: ECalSD.cc:37
#define str(s)
def geometry.Alignables.get_detids (   self,
  subdetid,
  pattern = {} 
)

Definition at line 91 of file geometry.py.

Referenced by geometry.Alignables.create_children_list(), and geometry.Alignables.create_list().

91 
92  def get_detids(self, subdetid, pattern={}):
93  # list of all detids in the structure
94  detids = []
95  # open TrackerTree.root file
96  treeFile = ROOT.TFile(os.path.join(self.config.jobDataPath,
97  ".TrackerTree.root"))
98  tree = treeFile.Get("TrackerTreeGenerator/TrackerTree/TrackerTree")
99 
100  for entry in tree:
101  # check if entry is part of the structure
102  if (entry.SubdetId == subdetid):
103  # to create a child also check the pattern
104  structure_found = False
105  for structure in ("Half", "Side", "Layer", "Rod", "Ring",
106  "Petal", "Blade", "Panel", "OuterInner",
107  "Module"):
108  if structure.lower() in pattern:
109  if getattr(entry, structure) != pattern[structure.lower()]:
110  structure_found = True
111  break
112  if structure_found: continue
113 
114  detids.append(entry.RawId)
115  return detids
116 
def geometry.Alignables.get_discriminator (   self,
  objid 
)

Definition at line 29 of file geometry.py.

Referenced by geometry.Alignables.create_list(), and geometry.Alignables.get_ndiscriminator().

29 
30  def get_discriminator(self, objid):
31  return mpsv_geometrydata.data[objid].discriminator
def geometry.Alignables.get_ndiscriminator (   self,
  objid 
)

Definition at line 32 of file geometry.py.

References bitset_utilities.append(), geometry.Alignables.get_discriminator(), and geometry.Alignables.get_subdetid().

Referenced by geometry.Alignables.create_list().

32 
33  def get_ndiscriminator(self, objid):
34  subdetid = self.get_subdetid(objid)
35  discriminator = self.get_discriminator(objid)
36  ndiscriminator = {key: [] for key in discriminator}
37  # open TrackerTree.root file
38  treeFile = ROOT.TFile(os.path.join(self.config.jobDataPath,
39  ".TrackerTree.root"))
40  tree = treeFile.Get("TrackerTreeGenerator/TrackerTree/TrackerTree")
41 
42  for entry in tree:
43  # check if entry is part of the structure
44  if (entry.SubdetId == subdetid):
45  for structure in discriminator:
46  ndiscriminator[structure].append(getattr(entry, structure))
47  for structure in discriminator:
48  ndiscriminator[structure] = [x for x in ndiscriminator[structure] if x != 0]
49 
50  return [len(set(ndiscriminator[structure]))
51  for structure in discriminator]
boost::dynamic_bitset append(const boost::dynamic_bitset<> &bs1, const boost::dynamic_bitset<> &bs2)
this method takes two bitsets bs1 and bs2 and returns result of bs2 appended to the end of bs1 ...
def geometry.Alignables.get_subdetid (   self,
  objid 
)

Definition at line 26 of file geometry.py.

Referenced by geometry.Alignables.create_list(), and geometry.Alignables.get_ndiscriminator().

26 
27  def get_subdetid(self, objid):
28  return mpsv_geometrydata.data[objid].subdetid

Member Data Documentation

geometry.Alignables.config

Definition at line 24 of file geometry.py.

Referenced by preexistingValidation.PreexistingValidation.getRepMap(), genericValidation.GenericValidation.getRepMap(), and zMuMuValidation.ZMuMuValidation.trackcollection().

geometry.Alignables.structures

Definition at line 23 of file geometry.py.

Referenced by geometry.Alignables.create_children_list(), and geometry.Alignables.create_list().