LHCb Outer Tracker Software TWiki

Table of Contents

Outer Tracker Packges

The Outer Tracker software packages are

Package Project Purpose
Det/OTDet LHCb OT Detector Interface
OT/OTDAQ LHCb Decoding
OT/OTSimulation Boole Digitisation
OT/OTAssociators Lbcom MC Associators for OTChannelID to MCOTDeposit, MCHit and MCParticle
OT/OTMonitor Lbcom Simple Monitoring for MC/Offline
OT/OTCalibration No official release yet Set of algorithms for T0 and RT calibration

There are also other OT specific classes in the following packages

Class Package Project Purpose
OTChannelID Kernel/LHCbKernel LHCb Constructs a channel id for a given station, layer, quarter, module, straw and tdc time
MCOTDeposit Event/MCEvent LHCb Constructs an MC Deposit for a given MChit and channel ID
MCOTTime Event/MCEvent LHCb Constructs an MCOTTime from a channel id and list of deposits that fall inside the same tdc window
OTTime Event/DigiEvent LHCb Constructs an OTTime for a given channel id and t0 corrected tdc time

For more info and usage see the doxygen of the corresponding packages/classes.

OT Geometry

Modules

These are the basic building "blocks" in the OT description. There are three types of modules F, S1, S2, (64 straws per mono-layer) and S3 (32 straws per mono-layer). The length of a module is such that it corresponds to the straw length. ( The readout boards & boxes fall outside the LHCb acceptance and are thus not part of the description. ) The width of a module is determined by the number of straws and the straw pitch (=5.25mm), the factor 0.5 is because of the staggering, and the thickens of the side-walls (0.6875mm).

Module Length Width Thickness
F   340mm = 64.5*5.25mm + 2*0.6875mm 32mm
S1   340mm 32mm
S2   340mm 32mm
S3   172mm = 32.5*5.25mm + 2*0.6875mm 32mm

OT Module

An OT Module

The straws ...

OT Conditions

Currently the following OT conditions exist:

Condition Remark
Alignment XYZ delta translations and XYZ delta rotations for OT, all stations, all layers and all modules
Readout Status Status of FE box connected to a module and status of all channels in a module
T0 T0 of straw (per module)
TR parameters T(R) coefficients in nanoseconds of a higher order polynomial (per module)
ST parameters Sigma(T) coefficients in nanoseconds of a higher order polynomial (per module)

The Readout, T0, RT and ST conditions are per module in the xml, i.e.

<detelem classID = "8105" name = "Module1">
     <author>Jan Amoraal</author>
     <version>1.0</version>
     <geometryinfo lvname    = "/dd/Geometry/AfterMagnetRegion/T/OT/Modules/lvLModule"
                   condition = "/dd/Conditions/Alignment/OT/&Station;Station&Layer;&Quarter;Module1"
                   support   = "/dd/Structure/LHCb/AfterMagnetRegion/T/OT/&Station;/&Layer;/&Quarter;"
                   npath     = "pv&SideModules;:6" />
     <param name = "moduleID" type = "int">1</param>
     <param name = "nStraws"  type = "int">64</param>
     <conditioninfo name = "Calibration" condition="/dd/Conditions/Calibration/OT/CalibrationModules&Station;&LayerType;Q&QuarterID;/&Station;&LayerType;Q&QuarterID;M1" />
     <conditioninfo name = "Status"      condition="/dd/Conditions/ChannelInfo/OT/ReadoutModules&Station;&LayerType;Q&QuarterID;/&Station;&LayerType;Q&QuarterID;M1" />
   </detelem>

where the tag conditioninfo contains the name of the condition and the path to the condition in the Transient Store (TS). Note that the tag geometryinfo contains the alignment condition.

Now since there are nine modules per quarter, i.e. Tell1, I opted to group the module conditions per quarter. That is there are 48 xml files one per quarter each containing the condition for the modules in that quarter. I used the following naming convention CalibrationModules+*ID* and ReaoutModules+*ID*, where ID = T + stationID + (X1|U|V|X2) + Q + quarterID, for the calibration conditions and readout conditions respectively.

Here are some examples of what the calibration condition xml looks like for module 1 in T1X1Q0

 <condition classID = "5" name = "T1X1Q0M1">
   <paramVector name = "TRParameters" comment = "RT parameters in ns" type = "double" > 0.0  42.0  0.0  0.0  0.0 </paramVector>
   <paramVector name = "STParameters" comment = "SigmaT parameters in ns" type = "double" > 3.43  0.0  0.0  0.0  0.0 </paramVector>
   <paramVector name = "TZero" comment = "T0s of straws in module" type = "double"> 0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0 </paramVector>
 </condition>

and the readout status condition

 <condition classID = "5" name = "T1X1Q0M1">
   <param name = "FEBoxStatus" comment = "Status of FEBox" type = "int"> 0 </param>
   <paramVector name = "ChannelStatus" comment = "Status of straws in module, i.e. ok, dead, noisy, ..." type = "int"> 0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0 </paramVector>
 </condition>

There's a python script available that automatically generates these conditions with initial values set to zero. This script can be easily modified/extended.

Getting the Conditions

There exists a couple of methods in OTDet/DeOTModule to get the conditions. For the calibration these are, only of interest for the tracking experts,

Method Argument Purpose
strawT0 int that is a straw id returns T0 for a given software straw id ( 1 - 128 ) in this module
rtRelation none returns RT relation for this module
calibrationCondition none returns pointer to the calibration condition (Condition*) for this module (for experts only!!!)

Example of usage

#include "OTDet/DeOTDetector.h"
#include "OTDet/DeOTModule.h"
#include "OTDet/RtRelation.h"
...
/// initialize
...
m_detector->getDet<DeOTDetecor>( DeOTDetectorLocation::Default );
...
/// execute
...
LHCb::OTChannelID channel = ...;
const DeOTModule* module = m_detector->module( channel );
const double t0Channel = module->strawT0( channel.straw() );
const OTDet::RtRelation& rt = module->rtRelation();
...

Setting Conditions

Just as it's possible to get conditions it is also possible to set conditions. The methods to set calibration conditions are

Method Argument Purpose
setStrawT0s vector of 128 (straws) doubles Set the straw t0s (per straw) in this module and returns StatusCode
setRtRelation new rt Sets RT relation for this module and returns StatusCode

Example of usage

#include "OTDet/DeOTDetector.h"
#include "OTDet/DeOTModule.h"
#include "OTDet/RtRelation.h"
...
/// initialize
...
m_detector->getDet<DeOTDetecor>( DeOTDetectorLocation::Default );
...
/// execute
...
{
 /// Here we do the calibration
}
/// finalize
...
StatusCode sc = StatusCode::SUCCESS;
std::vector< double > strawT0s = ...; ///< Currently we can only set it per straw, so a vector of 128/64 straws
const DeOTModule* module = ...;
sc = module->setStrawT0s( strawT0s );
/// Do something useful with sc
OTDet::RtRelation rt = ...;
sc = module->setRtRelation( rt )
/// Do something useful with sc
...

Writing the conditions in the TS to Xml

This is a piece of cake. All one needs to do is to add the algorithm OTWriteConditionsToXml in OT/OTCalibration to some sequence in the job. This will write a bunch of xml files per quarter/Tell1 in the finalize step of your job.

Putting the conditions in a sql database

First thing to do is to unpack the default database
SetupProject LHCb
dump_db_to_files.py -c <connection string> -T <tag> -d <destination directory>
where connection string is the sql path to the sql database, tag is the database tag,and destination directory is where you want to unpack it, e.g.
mkdir dbase
dump_db_to_files.py -c sqlite_file:$SQLDDDBROOT/db/LHCBCOND.db/LHCBCOND -T head-20081002 -d $HOME/dbase/
The next step, once you have unpacked the database, is to copy the xml files produced by OTWriteConditionsToXml to their respective locations, e.g. the calibration xml will go to Conditions/OT/Calibration, and pack it.
copy_files_to_db.py -c sqlite_file:$HOME/dbase/LHCBCOND-CosmicsT0s.db/LHCBCOND -s $HOME/dbase

Note One can safely remove the other subdetector condtions. This would significantly reduce the size of the dbase.

Using your new database

This is a piece of cake. In python do
from Configurables import ( CondDBAccessSvc )
tZeros = CondDBAccessSvc( 'ModuleTZeros' )
tZeros.ConnectionString = 'sqlite_file:/afs/cern.ch/user/j/janos/dbase/LHCBCOND-CosmicsT0s.db/LHCBCOND'
CondDB().addLayer( tZeros )

OT debugging tools

Documentation

Note Some of these are obsolete but still contain some useful information

Title Author(s) ID See also
An improved digitization procedure for the Outer Tracker M. Merk et al. LHCb 2001-055
Optimizing the Outer Tracker near the y=0 region M. Merk et al. LHCb 2003-019
Geometry of the LHCb Outer Tracker S. Bachmann and A. Pellegrino LHCb 2003-035 OT Geometry and Naming Conventions
Address Scheme for the Outer Tracker FE Electronics A. Pellegrino et al. LHCb 2003-041 Hardware to Software Mapping
Outer Track Software J. v. Tilburg LHCb 2003-062
A Study of the Material in an Outer Tracker Module J. Nardulli and N. Tuning LHCb 2004-114
Outer Tracker Event Data Model J. Nardulli and J. v. Tilburg LHCb 2005-004
Beam Test of the Final Modules and electronics of the LHCb Outer Tracker in 2005 G. v. Apeldoorn et al. LHCb 2005-076
Outer Tracker Occupancy Studies J. Nardulli LHCb 2005-092
The DC06 Outer Tracker Simulation J. Amoraal and J. Nardulli LHCb 2007-018
Outer Tracker DAQ data format A. Pellegrino et al. LHCb 2007-040

Links

LHCb Computing Twiki

LHCb Conditions HowTo

CMSsandbox.ToDo List

  • Add straws to detector description to
    • Simulate curly tracks
    • Properly simulate clusters
    • Double pulse
  • Revise or improve creation of X-Talk clusters
  • Revise or improve creation of noise clusters
  • Revise or improve rt-relation
    • Includes smearing
    • Currently linear

Scripts

Topic attachments
I Attachment History Action Size Date Who Comment
PNGpng OTModule.png r1 manage 715.2 K 2009-01-15 - 19:57 JanAmoraal OTModule
Texttxt genOTQuarterStruct.py.txt r2 r1 manage 12.1 K 2008-09-25 - 18:35 JanAmoraal python script to generate conditions xml
Edit | Attach | Watch | Print version | History: r18 < r17 < r16 < r15 < r14 | Backlinks | Raw View | WYSIWYG | More topic actions
Topic revision: r18 - 2014-10-15 - FrancescoDettori


 
    • Cern Search Icon Cern Search
    • TWiki Search Icon TWiki Search
    • Google Search Icon Google Search

    LHCb/LHCbOT All webs login

This site is powered by the TWiki collaboration platform Powered by PerlCopyright & 2008-2019 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback