DD4hep Conditions mini-workshop

→ Europe/Zurich
124/R-012 (CERN)

124/R-012

CERN

10
Show room on map
Andre Sailer (CERN), Ben Couturier (CERN), Frank-Dieter Gaede (Deutsches Elektronen-Synchrotron (DE)), Joschka Lingemann (CERN), Marko Petric (CERN), Markus Frank (CERN)

Based on Markus' presentation

* access conditions from slice

  (pressure) --> "world/TPC/EndA/Sector1$pressure"
                             |
  Cond <------------------> Slice


** options
   cond = slice.get(pressure, detElem)
   OR
   cond = detElem.get(pressure, slice)

   OR
   at init:
     condHandle = detElem.cond(pressure)

   at event:
     cond = condHandle.get( slice )
     OR
     cond = slice.get( condHandle )


   Want to use something like this (just different name from before):
     at init:
       key = detElem.cond(pressure)

     at event:
       cond = slice.get( key )

 

* Alignment

  * want to keep localToGlobal, which has to be correctly applying alignment deltas
  * what is the alignment? The alignment is the derived conditions
    after applying the transformations based on rotation, translation,
    pivot point. The transformation to get from a point to its global position.
    Keeping transformation to mother and to global


** Using misaligned detectors

   Move the hits or move the volumes?

** Include derivation of alignment constants

 

* Access of conditions data with DetElement or without?
  Separate DDCond from the rest of DD4hep?
 

* Frank: Separate Cond/Align
   id = hit.getID()
   DetElement det = volmgr.getDetElement(id)
   Transform t = det.worldtransform(   );
   
* Export to the framework the handle to DDCond - Benedikt
   id = hit.getID()
   AllignementData = CondStoreWhatever( ) <- framework dependent function
   AlignGeoCache = volMgr.getAlignCache(AllignementData)
   Transform = AlignGeoCache(id)
   
   the two middle lines are not in the event loop
   
   
* process(evt, [cache])
  id = ent.hit.id()
  trans = cache.transformation(id) or detector element as argument
 
  agree that the function will be DetElement based
  but provide de=volmgr.de(id)
 
  implement in marlin then cache.transform(id) or in the handle in gaudi
 
* Benedikt separate cache for geometry along the following pseudocode
   id = hit.getID()
   AllignementData = CondStoreWhatever( ) <- framework dependant function
   Transforms = alignmanager.getTransform(AllignementData)
   Transform = Transform(id)
   
   You define somewhere
   Handle<transform> tr[key];
   Handle<pressure> pressure[key];
   
   and in the event loop
   id = hit.getID();
   td(id);
   pressure(id);
   This is what Guadi would like
   
   ID is the only thing we need to get conditions apart from getting transformations
   
*  There no difference between a map of [delta, detelement] and a handle to slice for alignment means


Summary:
 - the alignment manger constructs from a map of deltas and DetElements
 - how do you get the map is framework business or DDCond
 - all conditions are via slice DetElement doesn't know anything about alignment/cond

There are minutes attached to this event. Show them.