CMS 3D CMS Logo

L1TriggerScalers.cc

Go to the documentation of this file.
00001 
00002 /*
00003  *   File: DataFormats/Scalers/src/L1TriggerScalers.cc   (W.Badgett)
00004  */
00005 
00006 #include "DataFormats/Scalers/interface/L1TriggerScalers.h"
00007 #include "DataFormats/Scalers/interface/ScalersRaw.h"
00008 
00009 #include <iostream>
00010 #include <time.h>
00011 
00012 L1TriggerScalers::L1TriggerScalers():
00013   version_(0),
00014   orbitNumber_(0),
00015   luminositySection_(0),
00016   bunchCrossingErrors_(0),
00017   triggerNumber_(0),
00018   eventNumber_(0),
00019   finalTriggersDistributed_(0),
00020   calibrationTriggers_(0),
00021   randomTriggers_(0),
00022   totalTestTriggers_(0),
00023   finalTriggersGenerated_(0),
00024   finalTriggersInvalidBC_(0),
00025   deadTime_(0),
00026   lostFinalTriggers_(0),
00027   deadTimeActive_(0),
00028   lostFinalTriggersActive_(0),
00029   deadTimeActivePrivate_(0),
00030   deadTimeActivePartition_(0),
00031   deadTimeActiveThrottle_(0),
00032   deadTimeActiveCalibration_(0),
00033   deadTimeActiveTimeSlot_(0),
00034   numberResets_(0),
00035   triggers_(nL1Triggers),
00036   testTriggers_(nL1TestTriggers)
00037 { 
00038   collectionTimeSpecial_.tv_sec  = 0;
00039   collectionTimeSpecial_.tv_nsec = 0;
00040   collectionTimeSummary_.tv_sec  = 0;
00041   collectionTimeSummary_.tv_nsec = 0;
00042   collectionTimeDetails_.tv_sec  = 0;
00043   collectionTimeDetails_.tv_nsec = 0;
00044 }
00045 
00046 L1TriggerScalers::L1TriggerScalers(const unsigned char * rawData)
00047 { 
00048   L1TriggerScalers();
00049 
00050   ScalersEventRecordRaw_v1 * raw 
00051     = (struct ScalersEventRecordRaw_v1 *)rawData;
00052 
00053   trigType_     = ( raw->header >> 56 ) &        0xFULL;
00054   eventID_      = ( raw->header >> 32 ) & 0x00FFFFFFULL;
00055   sourceID_     = ( raw->header >>  8 ) & 0x00000FFFULL;
00056   bunchNumber_  = ( raw->header >> 20 ) &      0xFFFULL;
00057 
00058   version_ = raw->version;
00059   if ( version_ >= 1 )
00060   {
00061     collectionTimeSpecial_.tv_sec 
00062       = raw->trig.collectionTimeSpecial.tv_sec;
00063     collectionTimeSpecial_.tv_nsec 
00064       = raw->trig.collectionTimeSpecial.tv_nsec;
00065     orbitNumber_               = raw->trig.ORBIT_NUMBER;
00066     luminositySection_         = raw->trig.LUMINOSITY_SEGMENT;
00067     bunchCrossingErrors_       = raw->trig.BC_ERRORS;
00068 
00069     collectionTimeSummary_.tv_sec 
00070       = raw->trig.collectionTimeSummary.tv_sec;
00071     collectionTimeSummary_.tv_nsec 
00072       = raw->trig.collectionTimeSummary.tv_nsec;
00073 
00074     triggerNumber_             = raw->trig.TRIGGER_NR;
00075     eventNumber_               = raw->trig.EVENT_NR;
00076     finalTriggersDistributed_  = raw->trig.FINOR_DISTRIBUTED;
00077     calibrationTriggers_       = raw->trig.CAL_TRIGGER;
00078     randomTriggers_            = raw->trig.RANDOM_TRIGGER;
00079     totalTestTriggers_         = raw->trig.TEST_TRIGGER;
00080 
00081     finalTriggersGenerated_    = raw->trig.FINOR_GENERATED;
00082     finalTriggersInvalidBC_    = raw->trig.FINOR_IN_INVALID_BC;
00083 
00084     deadTime_                  = raw->trig.DEADTIME;
00085     lostFinalTriggers_         = raw->trig.LOST_FINOR;
00086     deadTimeActive_            = raw->trig.DEADTIMEA;
00087     lostFinalTriggersActive_   = raw->trig.LOST_FINORA;
00088     deadTimeActivePrivate_     = raw->trig.PRIV_DEADTIMEA;
00089     deadTimeActivePartition_   = raw->trig.PTCSTATUS_DEADTIMEA;
00090     deadTimeActiveThrottle_    = raw->trig.THROTTLE_DEADTIMEA;
00091     deadTimeActiveCalibration_ = raw->trig.CALIBRATION_DEADTIMEA;
00092     deadTimeActiveTimeSlot_    = raw->trig.TIMESLOT_DEADTIMEA;
00093     numberResets_              = raw->trig.NR_OF_RESETS;
00094 
00095     collectionTimeDetails_.tv_sec 
00096       = raw->trig.collectionTimeDetails.tv_sec;
00097     collectionTimeDetails_.tv_nsec 
00098       = raw->trig.collectionTimeDetails.tv_nsec;
00099 
00100     for ( int i=0; i<ScalersRaw::N_L1_TRIGGERS_v1; i++)
00101     { triggers_.push_back( raw->trig.ALGO_RATE[i]);}
00102 
00103     for ( int i=0; i<ScalersRaw::N_L1_TEST_TRIGGERS_v1; i++)
00104     { testTriggers_.push_back( raw->trig.TEST_RATE[i]);}
00105   }
00106 }
00107 
00108 L1TriggerScalers::~L1TriggerScalers() { } 
00109 
00110 
00112 std::ostream& operator<<(std::ostream& s,L1TriggerScalers const &c) 
00113 {
00114   s << "L1TriggerScalers    Version:" << c.version() <<
00115     "   SourceID: " << c.sourceID() << std::endl;
00116   char line[128];
00117   char zeitHeaven[128];
00118   char zeitHell[128];
00119   char zeitLimbo[128];
00120   struct tm * horaHeaven;
00121   struct tm * horaHell;
00122   struct tm * horaLimbo;
00123 
00124   sprintf(line, " TrigType: %d   EventID: %d    BunchNumber: %d", 
00125           c.trigType(), c.eventID(), c.bunchNumber());
00126   s << line << std::endl;
00127 
00128   struct timespec secondsToHeaven = c.collectionTimeSummary();
00129   horaHeaven = gmtime(&secondsToHeaven.tv_sec);
00130   strftime(zeitHeaven, sizeof(zeitHeaven), "%Y.%m.%d %H:%M:%S", horaHeaven);
00131   sprintf(line, " CollectionTimeSummary: %s.%9.9d" , 
00132           zeitHeaven, (int)secondsToHeaven.tv_nsec);
00133   s << line << std::endl;
00134 
00135   struct timespec secondsToHell= c.collectionTimeDetails();
00136   horaHell = gmtime(&secondsToHell.tv_sec);
00137   strftime(zeitHell, sizeof(zeitHell), "%Y.%m.%d %H:%M:%S", horaHell);
00138   sprintf(line, " CollectionTimeDetails: %s.%9.9d" , 
00139           zeitHell, (int)secondsToHell.tv_nsec);
00140   s << line << std::endl;
00141 
00142   struct timespec secondsToLimbo= c.collectionTimeDetails();
00143   horaLimbo = gmtime(&secondsToLimbo.tv_sec);
00144   strftime(zeitLimbo, sizeof(zeitLimbo), "%Y.%m.%d %H:%M:%S", horaLimbo);
00145   sprintf(line, " CollectionTimeDetails: %s.%9.9d" , 
00146           zeitLimbo, (int)secondsToLimbo.tv_nsec);
00147   s << line << std::endl;
00148 
00149   sprintf(line,
00150           " LuminositySection: %15d  BunchCrossingErrors:      %15d",
00151           c.luminositySection(), c.bunchCrossingErrors());
00152   s << line << std::endl;
00153 
00154   sprintf(line,
00155           " TriggerNumber:     %15d  EventNumber:              %15d",
00156           c.triggerNumber(), c.eventNumber());
00157   s << line << std::endl;
00158 
00159   sprintf(line,
00160           " TriggersDistributed:    %10d  TriggersGenerated:        %15d",
00161           c.finalTriggersDistributed(), 
00162           c.finalTriggersGenerated());
00163   s << line << std::endl;
00164 
00165   sprintf(line,
00166           " TriggersInvalidBC: %15d  CalibrationTriggers:      %15d",
00167           c.finalTriggersInvalidBC(), c.calibrationTriggers());
00168   s << line << std::endl;
00169 
00170   sprintf(line,
00171           " TestTriggers:      %15d  RandomTriggers:           %15d",
00172           c.totalTestTriggers(), c.randomTriggers());
00173   s << line << std::endl;
00174 
00175   sprintf(line,
00176           " DeadTime:          %15d  DeadTimeActiveTimeSlot:   %15ld",
00177           c.numberResets(), (long int)c.deadTime());
00178   s << line << std::endl;
00179 
00180   sprintf(line,
00181           " DeadTimeActive:    %15ld  DeadTimeActiveCalibration:%15ld",
00182           (long int)c.deadTimeActive(), 
00183           (long int)c.deadTimeActiveCalibration());
00184   s << line << std::endl;
00185 
00186   sprintf(line,
00187           " LostTriggers:      %15ld  DeadTimeActivePartition:  %15ld",
00188           (long int)c.lostFinalTriggers(), 
00189           (long int)c.deadTimeActivePartition());
00190   s << line << std::endl;
00191 
00192   sprintf(line,
00193           " LostTriggersActive:%15ld  DeadTimeActiveThrottle:   %15ld",
00194           (long int)c.lostFinalTriggersActive(),
00195           (long int)c.deadTimeActiveThrottle());
00196   s << line << std::endl;
00197 
00198   sprintf(line,
00199           " NumberResets:      %15d  DeadTimeActivePrivate:    %15ld",
00200           c.numberResets(),
00201           (long int)c.deadTimeActivePrivate());
00202   s << line << std::endl;
00203 
00204   s << "Physics Triggers" << std::endl;
00205   std::vector<unsigned int> triggers = c.triggers();
00206   int length = triggers.size() / 4;
00207   for ( int i=0; i<length; i++)
00208   {
00209     sprintf(line," %3.3d: %10d    %3.3d: %10d    %3.3d: %10d    %3.3d: %10d",
00210             i,              triggers[i], 
00211             (i+length),     triggers[i+length], 
00212             (i+(length*2)), triggers[i+(length*2)], 
00213             (i+(length*3)), triggers[i+(length*3)]);
00214     s << line << std::endl;
00215   }
00216 
00217   s << "Test Triggers" << std::endl;
00218   std::vector<unsigned int> testTriggers = c.testTriggers();
00219   length = testTriggers.size() / 4;
00220   for ( int i=0; i<length; i++)
00221   {
00222     sprintf(line," %3.3d: %10d    %3.3d: %10d    %3.3d: %10d    %3.3d: %10d",
00223             i,              testTriggers[i], 
00224             (i+length),     testTriggers[i+length], 
00225             (i+(length*2)), testTriggers[i+(length*2)], 
00226             (i+(length*3)), testTriggers[i+(length*3)]);
00227     s << line << std::endl;
00228   }
00229   return s;
00230 }

Generated on Tue Jun 9 17:31:41 2009 for CMSSW by  doxygen 1.5.4