07 of March 2007: P5 machines

  • cmsrv0: slc4: trackerpro
  • cmsusr0: slc3: trackerpro
  • Tracker machines are:
    • vmepcs2b17-[01-12].cms
    • IPMI are running
ipmitool -I lan -U root -H vmepcs2b17-01.ipmi -a chassis status
  • Command:
/usr/sbin/wassh "vmepcs2b17-[01-12]" FREDSCRIPTS/reload_driver
/usr/sbin/wassh "vmepcs2b17-[01-12]" FREDSCRIPTS/checkfec

07 of March 2007: DAQ for Dummy

To check the vailidity of a run, you should use TBMonitor for offline analysis.

Before any settings, from the RCMS interface make:

  • Initialise
  • Configure
  • Change the parameters to TrackerSupervisor
  • Change the parameters to RootAnalyser: deprecated

In the order:

  • Connection run
  • Timing run
  • Gain scan
  • Timing run
  • Pedestal

Usefull commands:

/exports/xdaq/bin/dumpjc PORTNUMBER

Connection run

  • TrackerSupervisor: fast connection
  • Terminate automatically
  • RootAnalyser:
    • Db Update checked
    • On Disk ?
  • Number of events is: 3 x number of modules

Timing run

  • TrackerSupervisor: timing
  • TrackerSupervisor: [Trigger setting] => Number of events per loop (spill): usually 20
  • TrackerSupervisor: [Trigger setting] => Number of events per analysis point : 19
  • RootAnalyser:
    • Db Update checked
    • On Disk ?
  • terminate automatically
  • Number of events at the end is: 25 x (evt per spill): 1440 events

Gain scan run after the gain scan

  • TrackerSupervisor: gain scan
  • TrackerSupervisor: [Trigger setting] => Number of events per analysis point : 19
  • TrackerSupervisor: [Trigger setting] => Number of events per loop (spill): usually 20
  • RootAnalyser:
    • Db Update checked
    • On Disk ?
  • terminate automatically
  • Number of events at the end is: 4 x 50 x (evt per spill)

Timing run

  • TrackerSupervisor: timing
  • TrackerSupervisor: [Trigger setting] => Number of events per analysis point : 50
  • TrackerSupervisor: [Trigger setting] => Number of events per loop (spill): usually 20
  • RootAnalyser:
    • Db Update checked
    • On Disk ?
  • terminate automatically
  • Number of events at the end is: 25 x (evt per spill): 1440 events

Pedestal run

  • High voltage should be on
  • TrackerSupervisor:
    • [Trigger setting] => Number of events per analysis point : 50
    • [Trigger setting] => Number of events per loop (spill): usually 20
    • [Run Settings and Status] => Pedestal
    • [Run Settings and Status] => Number of events per Run (0 if infinite): 1500
  • RootAnalyser: on disk and db update
  • If the RootAnalyser crash then toggle:
    • TrackerSupervisor: [Run Settings and Status] => Wait RootAnalyzer analysis completion should be cheched

12 December 2006: porting to XDAQ 3.7

HAL

  • unsigned long in all read/write method from HAL is changed to unsigned int
  • FecSoftwareV3_0 has been updated with haltype that defines unsigned int or unsigned long

TriDAS/XDAQ

ApplicationGroup::getApplicationDescriptor(className, classInstance)

Notion of Group/Zone

Old style for getting an application descriptor (used with xdaq 3.6)

xdaq::ApplicationDescriptor * d = getApplicationContext()->getApplicationGroup()->getApplicationDescriptor(className, classInstance);

New style for getting an application descriptor (used with xdaq 3.7.3)

  • Makefile:
    $(XDAQ_ROOT_DIR)/daq/xdaq/include/xdaq
  • Source code:
    • #include "ApplicationRegistry.h"
    • xdaq::ApplicationDescriptor * d = getApplicationContext()->getApplicationRegistry()->getApplication(className, classInstance)->getApplicationDescriptor();
OR (following the XDAQ wiki)
    • xdaq::ApplicationDescriptor* a = getApplicationContext()->getDefaultZone()->getApplicationDescriptor("RU", 0);

ApplicationGroup::getApplicationDescriptions(className)

Notion of Group/Zone

Old style for getting an application descriptor (used with xdaq 3.6)

getApplicationContext()->getApplicationGroup()->getApplicationDescriptors(className) ;

New style for getting an application descriptor (used with xdaq 3.7.3): NOT YET FOUND

cxxcoretools.version

  • Error is:
    /exports/xdaq/dev37/TriDAS/daq/toolbox/include/toolboxV.h:30:40: cxxcoretools.version: No such file or directory
  • The file is locaged in TriDAS/config, if I add it in the Makefile as an include directory (-I$(XDAQ_ROOT)/config), the error disapears, is it the correct way to handle it ?

Starting the DAQ on the Telescope in 904

Machines

  • cmstracker001
  • cmstracker003
  • cmstracker005

File configuration

  • on cmstracker001
  • /home/xdaqtk/hyperdaq/tel_2fed_ttc_FRED.xml

Starting the application

  • FEC
[cmstracker005] /home/xdaqtk > /exports/xdaq/bin/launch_xdaq  -v tifdev -D cms_testBeam/May2004@cmsr
  • FED
[cmstracker003] /exports/xdaq/bin/launch_xdaq  -v tifdev -D cms_testBeam/May2004@cmsr
  • TrackerSupervisor
[cmstracker001] /home/xdaqtk/hyperdaq >  /exports/xdaq/bin/launch_xdaq -v tifdev

Web configuration

  • Open the TrackerSupervisor application
  • Then go to the URL: [Run Settings and Status] and change the run type:
    • Run Type: GainScan for example
    • In normal mode, please select Internal Pulser in Physics run (Laser)
    • Update TrackerSupervisor values * Then go to the URL: [Trigger setting] and change the
    • Number of events per loop (spill) to 20 (lot of messages)
    • Click Update Trigger Values * Then go to the URL: [State machine]
    • Initialise, Configure, Enable, Halt

AIMS + IPMI

AIMS

cd /afs/cern.ch/project/linux/redhat/kickstart/src/cms
eval './landb -sh'
then change the template file, two templates are available:
  • tracker_slc3.tmpl: with the minimum packages
  • tracker_slc3_All.tmpl: with all packages

Add the new machine in tracker.cf like:

  • [machine name] [template file]
/afs/cern.ch/project/linux/redhat/kickstart/src/cms > more tracker.cf
cmstracker001 tracker_slc3.tmpl
cmstracker002 tracker_slc3.tmpl
cmstracker003 tracker_slc3.tmpl
cmstracker004 tracker_slc3.tmpl
cmstracker005 tracker_slc3.tmpl
cmstracker006 tracker_slc3.tmpl
cmstracker007 tracker_slc3.tmpl
cmstracker008 tracker_slc3.tmpl
cmstracker009 tracker_slc3.tmpl
cmstracker010 tracker_slc3.tmpl
cmstracker011 tracker_slc3.tmpl
cmstracker012 tracker_slc3.tmpl
cmstracker013 tracker_slc3.tmpl
cmstracker014 tracker_slc3.tmpl
cmstracker015 tracker_slc3.tmpl
cmstracker016 tracker_slc3.tmpl
cmstracker026 tracker_slc3_All.tmpl

Then start the next commands:

./update-kickstart tracker.cf
./aims add -ks cfg/cms/machinename machinename
./aims pxeon machinename SLC306-i386

Then the machine should boot on the PXE and on the network card (BIOS setup). Once the machine is started and the installation complete, you should start the application:

aims pxeoff machinename

The root user of the machine has a password set in the template file.

IPMI

You should ask an IP address on network with the base MAC address + 2 and a given name (machine-ipmi for example). Once you receive the IP address, you should enable the IPMI mode in corresponding setup (IPMI setup) and add a password (ask Frederic Drouhin or Laurent Gross for the usual password.

Then, to execute command you should install the tools ipmitool through yum or apt-get. The following commands are possible:

ipmitool -I lan -U root -H $1-ipmi -a
ipmitool -I lan -U root -H $1-ipmi -a chassis
ipmitool -I lan -U root -H $1-ipmi -a sensor

CVS on IT repostories

Introduction

export CVSROOT=:kserver:isscvs.cern.ch:/local/reps/Tracker_Ctrl

https://twiki.cern.ch/twiki/bin/view/Sandbox/CMSCVSMigrationIssues et le compte librarian : cvstrack , passwd hM6PSQvb

commitavail

  • Plusieurs occurrences de ces droits sont presents dans le fichier commitavail
 avail|fdrouhin|CVSROOT/modules
 avail|fdrouhin|CVSROOT/module_contacts
  • Corriger
    • J'ai enleve pgv et pgras des droits CVS dans commitavail
    • si qq'un a l'acces depuis un module ou un repetoire, il a acces a tous les repertoires
   avail|fdrouhin|Tracker_Control/FecSoftware
   avail|lgross|Tracker_Control/FecSoftware/DeviceDriver
      • sauf si on veut un acces different pour chacun des sous-repertoires
      • fdrouhin, comme les admin n'ont pas besoin d'etre specifie dans les sous-repertoires

Modules

* Update des modules dans le fichier modules * co module * add, commit, update

rtag

Si les droits sont bien mis dans le tagavail

Acces Developer

  • Modifier le commitavail
avail|vintache|Tracker_Control/Database

Access anonymous dans CERN

export CVSROOT=:pserver:anonymous@isscvs.cern.ch:/local/reps/Tracker_Ctrl
cvs login
98passwd
cvs co FecSoftware

Access anonymous outside CERN

http://isscvs.cern.ch/cgi-bin/viewcvs-all.cgi/?cvsroot=Tracker_Ctrl#dirlist

L'acces anonymous marche aussi

Recuperation d'un tag specifique

fdrouhin
dev
anonymous CERN
anonymous Outside CERN

check-commit-avail

    check-tag-available
    cvs co CVSROOT
    export CVSROOT=$PWD
    cd CVSROOT
    ./check-commit-avail Tracker_Control graymond
    ./check-tag-avail Tracker_Control fdrouhin

Database measurement

13/10/2006 - Measurements done on OMDS, Minor Version 8.43.
Request Ex. Time Fetch. time
select PkgFecXML.getAllFecFromPartition('MTCC_DEMO') from dual;
16.38 0.56
select PkgFecXML.getAllFecFromPartition(60007) from dual;
15.71 0.51
SELECT    DISTINCT
   Partition.partitionId, Partition.partitionName,
   Fec.fecId, Fec.fecSlot, Fec.fecHardId, 
   Ring.ringId, Ring.ringSlot,
   Ccu.ccuId, Ccu.ccuAddress,
   Hybrid.hybridId, Hybrid.i2cChannel, 
   Device.deviceId, Device.i2cAddress, 
   monApvFec1.valueType, 
   monApvFec1.versionMajorId, monApvFec1.versionMinorId, 
   monApvFec1.apvError, monApvFec1.apvMode, monApvFec1.cdrv, 
   monApvFec1.csel, monApvFec1.ical, monApvFec1.imuxin, 
   monApvFec1.ipcasc, monApvFec1.ipre, monApvFec1.ipsf, 
   monApvFec1.ipsp, monApvFec1.isha, monApvFec1.ispare, 
   monApvFec1.issf, monApvFec1.latency, monApvFec1.muxgain, 
   monApvFec1.vfp, monApvFec1.vfs, monApvFec1.vpsp, 
   State.stateId, State.registered
FROM   Partition,
   Fec,
   Ring,
   Ccu,
   Hybrid,
   Device,
   ApvFec monApvFec1,
   State,
   CurrentState
WHERE   Partition.partitionId = Fec.partitionId
AND   Fec.fecId = Ring.fecId          
AND   Ring.ringId = Ccu.ringId 
AND   Ccu.ccuId = Hybrid.ccuId 
AND   Hybrid.hybridId   = Device.hybridId 
AND   Device.deviceId   = monApvFec1.deviceId 
AND   monApvFec1.valueType = 'Set'
AND   monApvFec1.versionMajorId = State.fecVersionMajorId
AND   monApvFec1.versionMajorId > 0
AND   monApvFec1.versionMinorId = pkgapvfec.getCurrentMinorVersion(Device.deviceId)
AND   Partition.partitionId = State.partitionId
AND   State.stateId = CurrentState.stateId
AND     PARTITIONNAME='MTCC_DEMO';
10.05 1.23
SELECT    DISTINCT
   Partition.partitionId, Partition.partitionName,
   Fec.fecId, Fec.fecSlot, Fec.fecHardId, 
   Ring.ringId, Ring.ringSlot,
   Ccu.ccuId, Ccu.ccuAddress,
   Hybrid.hybridId, Hybrid.i2cChannel, 
   Device.deviceId, Device.i2cAddress, 
   monApvFec1.valueType, 
   monApvFec1.versionMajorId, monApvFec1.versionMinorId, 
   monApvFec1.apvError, monApvFec1.apvMode, monApvFec1.cdrv, 
   monApvFec1.csel, monApvFec1.ical, monApvFec1.imuxin, 
   monApvFec1.ipcasc, monApvFec1.ipre, monApvFec1.ipsf, 
   monApvFec1.ipsp, monApvFec1.isha, monApvFec1.ispare, 
   monApvFec1.issf, monApvFec1.latency, monApvFec1.muxgain, 
   monApvFec1.vfp, monApvFec1.vfs, monApvFec1.vpsp, 
   State.stateId, State.registered
FROM   Partition,
   Fec,
   Ring,
   Ccu,
   Hybrid,
   Device,
   ApvFec monApvFec1,
   State,
   CurrentState
WHERE   Partition.partitionId = Fec.partitionId
AND   Fec.fecId = Ring.fecId          
AND   Ring.ringId = Ccu.ringId 
AND   Ccu.ccuId = Hybrid.ccuId 
AND   Hybrid.hybridId   = Device.hybridId 
AND   Device.deviceId   = monApvFec1.deviceId 
AND   monApvFec1.valueType = 'Set'
AND   monApvFec1.versionMajorId = State.fecVersionMajorId
AND   monApvFec1.versionMajorId > 0
AND   monApvFec1.versionMinorId = 43
AND   Partition.partitionId = State.partitionId
AND   State.stateId = CurrentState.stateId
AND     PARTITIONNAME='MTCC_DEMO';
0.09 1.26

I2O message

So we have interface to i2o messages called:
  • TrackerCommandListener: receive i2o messages
  • TrackerCommandSender: transmit and receive i2o messages

To receive (only) i2o messages, your xdaq application should inherit from TrackerCommandListener. To emit an i2o message, your xdaq application should inherit from TrackerCommandSender (which inherits itself from TrackerCommandListener for the acknowledge).

Extraction for the FecSupervisor XDAQ application:

#include "TrackerCommandSender.h"
class FecSupervisor: public TrackerCommandSender, public toolbox::task::TimerListener {

  /** \brief receive all i2o messages and dispatch it
   */
  toolbox::mem::Reference* senderTrackerCommandHandler(PI2O_TRACKER_COMMAND_MESSAGE_FRAME com) ;
}

This method only answer to one bind and all the messages are send over this i2o message. Then you need to used the following message to receive your message (PI2O_TRACKER_COMMAND_MESSAGE_FRAME):

  • U32 System; => TRACKER (defines are available)
  • U32 SubSystem;=> FEC (defined are availabe)
  • U32 Version; => not used
  • U32 Command; => command to be used
  • U32 Type; => not used
  • S32 Error; => in the reply
  • S32 data[1]; => pointer to the data

Example of receive:

toolbox::mem::Reference* FecSupervisor::senderTrackerCommandHandler(PI2O_TRACKER_COMMAND_MESSAGE_FRAME com) {
  // Answer
  toolbox::mem::Reference* ackRef ;
  PI2O_TRACKER_COMMAND_MESSAGE_FRAME reply ;
  bool errorMsg = true ;
  if ( (com->System == SYST_TRACKER) || (com->SubSystem == SUB_SYST_FEC ) ) {
    if (com->msg == PIA_RESET) {
      // retreive the data
      int *buffer = (int *)com->data ; // allocated by the emiter of the message
      // Please note that this com->data is managed in the memory of the i2o message 
      // and will be free afterwards
      // If you are sending C++ object, you need to clone it due to the fact that you are not
      // transfering a real object so the methods involved in the object are not transmitted
      //    object *B = new object ((object *)com->data)) ;
      
      // prepare the answer
      // Here I allocated a buffer of 10 integer (the size of the buffer is expressed as integer)
      // Return a buffer is not mandatory in that case you do not need to allocated a reply->data
      int myBuffer[10] = {0};
      ackRef = allocateTrackerCommand((int)(10*sizeof(int)/sizeof(int)) + 1) ;
      reply = (PI2O_TRACKER_COMMAND_MESSAGE_FRAME)ackRef->getDataLocation();
      memcpy (reply->data, myBuffer, 10*sizeof(buffer)) ;
      reply->error = 0 ;

      errorMsg = false ;
     }
   }

   if (errorMsg) { // in case of no reply has been allocated, return an error
      // Error in the reply
      ackRef = allocateTrackerCommand(1) ;
      reply = (PI2O_TRACKER_COMMAND_MESSAGE_FRAME)ackRef->getDataLocation();
      reply->Error = -1 ;
   }

   return ackRef;
}

Example of sending i2o message to a XDAQ application where you know the ApplicationDescriptor that you can obtain through the method:

getApplicationContext()->getDefaultZone()->getApplicationDescriptor(CLASSNAME,INSTANCE) ;
void sendI2O ( xdaq::ApplicationDescriptor *xdaqApplication ) {  // the class is a TrackerCommandSender and the buffer 
  int ptri[100] = {0} ; // sending 100 int
  this->sendTrackerCommand(xdaqApplication, SYST_TRACKER, SUB_SYST_FEC, VERS_FEC, FEC_TEMP_SEND, (S32 *)ptri, 100) ;
                                            ^ System (int)
                                                          ^ Subsystem (int)
                                                                        ^ FEC version (int)
                                                                                  ^ command (int)
                                                                                                  ^ Pointer to the data
                                                                                                              ^ Size in int

   // Reply 
   PI2O_TRACKER_COMMAND_MESSAGE_FRAME reply = this->getReply() ;
   // reply->data, reply->error, reply->cmd, etc.
}
If you want to allocated a buffer to transfer an object, you should used:
ackRef = allocateTrackerCommand((int)(sizeof(object)/sizeof(int)) + 1) ;
or
this->sendTrackerCommand(xdaqApplication, SYST_TRACKER, SUB_SYST_FEC, VERS_FEC, FEC_TEMP_SEND, (S32 *)object, sizeof(object)/sizeof(int) +1) ;

File needed:

Link

Morrowind

  • Les esclaves, grotte pres de Sydya hin
  • Trebonuis a la guilde de Vivec, probleme des nains
    • Trouve a tel vyr dans le pestifaruim, un nain qui en parle (theorie)
  • Auberge du passage, un fantome hante une chambre et revient
  • Rendre visite a Emusette Bracques (note de Noelos) => Tel Aruhn
  • Dormeur: Dagoth Ur, Sixieme maison, reves troublants
  • 2 ordonateurs et 5 etrangers ont ete egorges a Vivec, Bureau de la Garde au Palais de Justice chercherait de l'aide
  • Etrange piece de theatre a Vivec
  • Hisin Verme-Ilion paralyse ou maladie (sur la route de la caverne de Koral depuis Maar Gan)
  • Drulene Falen, tuer des crabes des vases, sud-ouest en direction de la cote (Maar Gan)
  • Alusaron, a Vivec, quartier etranger, voler les contrats a Tilvur (au meme endroit)
  • Ienas Sarandas
    • Ienas Sarandas a Aldrun a achete a Bivale Teneran un pantalon pour 360 PO mais pas paye
    • Ienas Sarandas a Aldrun a achete a Bevene Releth une amulette pour 50 PO mais pas paye
  • Mehra Milo La marche en avant de la verite dans la bibliotheque secrete du palais de la sagesse
  • Haj-Ei est un esclave en fuite pour Cache ses yeux mais j'ai refuse (a voir, Suran)
  • Tiram Gadar a donne une lettre de recommandation a Trebonus qui est fausse, Ranis Athrys s'en occupera elle-meme
  • Sorcier, retourner voir Ajira a la guilde des mages de Balmora
  • QQes liens

-- Main.FredericDrouhin - 07 Mar 2007

Edit | Attach | Watch | Print version | History: r14 < r13 < r12 < r11 < r10 | Backlinks | Raw View | WYSIWYG | More topic actions
Topic revision: r14 - 2007-06-13 - FredericDrouhin
 
    • Cern Search Icon Cern Search
    • TWiki Search Icon TWiki Search
    • Google Search Icon Google Search

    Sandbox 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