DD4hep Conditions mini-workshop
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