Silicon Strip Tracker HV Status Online to Offline Transfer


In CMS, online data is stored in subdetector-specific schemas on the online database called OMDS (Online Master Data Storage). Offline calibration and alignment data are stored in databases using POOL-ORA, an object-relational mapping engine that persistently stores C++ objects in a relational database such as Oracle. Because the format of the online and offline data is different it neccessitates the O2O transform process for this kind of data.

We're developing a CMSSW tool CalibTracker/SiStripDCS to realize this O2O process for Silicon Strip Tracker (SST) HV status transfer. The overall idea is to collect SST HV information from online DB OMDS, and store the HV status as a vector containing DetIds whose HVs are OFF. This info will be used in the offline tracking recsonstruction to excludes those OFF HV hits.

HV information (part of Detector Control System) is stored online in OMDS database (already being used in MTCC). For SST, HV is supplied by CAEN HV supply modules. Each module has 4 HV channels, which are powering up different SST silicon modules (identified as DetId in CMSSW). HV channels are controlled by PVSS online system and each channel has an unique DPID. Its hardware status, voltage, current informations are archived by PVSS to the online OMDS datase on changes with a deadband limit.

O2O Data Flow

On OMDS DB, the HV info is in a table called FWCAENCHANNEL, the HV status is in a varaible called ACTUAL_STATUS. Everytime when the status for a channel is changed, a timestamp and this channel's DPID will be archived with the changed ACTUAL_STATUS. The OMDS information can be accessed by Persistency or WBM, explained in next section.

The database ORCOFF is for offline reconstruction. It produces an object SiStripModuleHV, which has a vector data member DetIds. The code in CalibTracker/SiStripDCS is to get the ACTUALL_STATUS for HVs, find out the OFF DetIds based on DCS Status infos, then construct the DetIds vector(including only OFF DetIds), and fill this vector to SiStripModuleHV object with put method.

SiStripModuleHV object then uses PoolDBServices to write the whole object to the offline DB, with the AppendSince timestamp, meaning the object is valid from timestamp (technically, IOV stating time)

For offline reconstruction, one can read SiStripModuleHV object out of Offline DB, and determine whether the HV is off for a event using its isHVOff() method.

Access OMDS info

Two solutions are under investigation.

* CORAL, usage is given in the thread in hn-cms-database. CMSSW example, CondCore/PopCon/test

* a root file downloaded from Web-based Monitoring (WBM) site.

The root file is a plain root file with timestamp, Actual_status, and DPID in it. This is a working method, which uses a system("wget") in CMSSW. The problem is people don't like this this uncontrolled networking activity by wget. ------So Dicarded

How fast the O2O process is needed?

-At the beginning of a run we have to provide the current states of the HV for the reco code running in the HLT of the run itself. We have no way to change these states until the end of the run (not permitted to change conditions during a run).

- once the run ends, we have to analyze all transitions occurred during the run and build new sets of states to be stored on the offline DB with proper IOVs. This is necessary to allow offline analysis of the data to be performed with the best knoledge of the state of the detector. Given that we will have the initial states on the offline DB (those that were transferred at the beginning of the run), we can build the starting state out of it.

It should be quick enough for the Offline/HLT reconstruction. Possible solutions:

* Update the OfflineDB once every run, at begining of the run, build a new state for HLT, at the end, build detailed state for Offline recon.

Coding Strategy

Coral service to connect to omds, get the proper information, orded by time, the code implementation is in in CalibTracker/SiStripDCS/ CVS head.

At the beginning of a run, provide the current states of the HV for the reco code running in the HLT of the run itself, using DCSLastValue table info, put it into offline DB.

At the end of the run, get status info for the run from CORAL. For every entry, if status is off, map DPID to DetId, get a vector out of Offline DB for this timestamp, and check if it's in the OFF DetIds vector, If not, add it into the vector, update the offline DB with new vector and appendSincetime TIMESTAMP.


initial Popcon+Coral based version is at CVS head of CalibTracker/SiStripDCS/ -04 Apr 2008

related talks

-- JieChen - 14 Sep 2007

Edit | Attach | Watch | Print version | History: r6 < r5 < r4 < r3 < r2 | Backlinks | Raw View | WYSIWYG | More topic actions
Topic revision: r6 - 2010-06-11 - PeterJones
    • Cern Search Icon Cern Search
    • TWiki Search Icon TWiki Search
    • Google Search Icon Google Search

    Main All webs login

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