Ignore:
Timestamp:
06/27/05 10:45:56 (19 years ago)
Author:
tbretz
Message:
*** empty log message ***
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Mars/mtrigger/MTriggerPattern.cc

    r5869 r7170  
    4040// For files before file version 5 the trigger pattern is set to 00000000.
    4141//
     42// --------------------------------------------------------------------------
     43//
     44// Here an explanation about the meaning of the Trigger Pattern.
     45// The trigger pattern is a 16-BIT number where are stored informations
     46// about which thriggers have been shot on each event. Every bit
     47// correspond to a prticular kind of trigger (Pedestal, Calibration,
     48// LT1, LT2, PIN Diode...) but the whole trigger pattern number
     49// is divided into two parts (from left to right):
     50//
     51// 1) The first concerns unprescaled triggers.
     52// 2) The second concerns prescaled triggers.
     53//
     54// The prescaler is a devise installed AFTER the LT2. It collects
     55// all kind of triggers and can prescale each trigger by a different
     56// prescaling factor. This means that we can set the prescaler to
     57// accept every LT2 trigger but only 1% of calibration triggers.
     58// Therefore LT2 prescaling factor will be set to 1, while CAL prescaling
     59// factor will be set to 100. If after the prescaler at least one trigger
     60// survives, then the event is considered "TRIGGERED" and aquired by the DAQ.
     61//
     62// The current BIT meaning is:
     63//
     64// BIT(0):  prescaled LT1
     65// BIT(1):  prescaled Calibration Trigger
     66// BIT(2):  prescaled LT2
     67// BIT(3):  prescaled Pedestal Trigger
     68// BIT(4):  prescaled Pin Diode
     69// BIT(5):  unused
     70// BIT(6):  unused
     71// BIT(7):  unused
     72// BIT(8):  unprescaled LT1
     73// BIT(9):  unprescaled Calibration Trigger
     74// BIT(10): unprescaled LT2
     75// BIT(11): unprescaled Pedestal Trigger
     76// BIT(12): unprescaled Pin Diode
     77// BIT(13): unused
     78// BIT(14): unused
     79// BIT(15): unused
     80//
     81// Why are we saving both prescaled and unprescaled triggers?
     82// Which should I look at? Let's give an example:
     83//
     84//    BIT #      15-14-13-12-11-10- 9- 8- 7- 6- 5- 4- 3- 2- 1- 0
     85//
     86//    event #1:   0  0  0  0  0  0  1  1  0  0  0  0  0  0  0  1
     87//    event #2:   0  0  0  0  0  0  1  1  0  0  0  0  0  0  1  1
     88//
     89// In both cases you have both CAL and LT1 trigger, but in first
     90// event calibration trigger is prescaled and in second event no
     91// trigger is prescaled. Imagine you are looking for calibration events.
     92// If you look at the prescale bits you are sure that events with CAL
     93// flag are calibration events (event #2) but you can miss other
     94// real calibration events (event #1). If you are lucky that
     95// the related prescaling factor is 1 you won't have this problem,
     96// otherway you will have it.
     97//
     98// To select events by the trigger pattern you should use MFTriggerPattern filter.
     99// This filter uses Require- and Deny- methods to select your trigger pattern.
     100// Require- methods requires that your trigger bit is ON, otherway the event
     101// is kicked out. Deny- methods requires that your trigger bit is OFF, otherway
     102// your event is kicked out. Other bits not selected by your Require- or Deny- call
     103// are ignored. Let's give an example. You want to select all events that have
     104// both LT1 and LT2 trigger but which are not calibration neither Pin Diode events.
     105// You should look at unprescaled bits to be sure
     106// about which were the initial triggers. Then you can implement in your macro
     107// something like:
     108//
     109//      MFTriggerPattern ftrigpatt;
     110//      ftrigpatt.RequireTriggerLvl1(MFTriggerPattern::kUnPrescaled);
     111//      ftrigpatt.RequireTriggerLvl2(MFTriggerPattern::kUnPrescaled);
     112//      ftrigpatt.DenyCalibration(MFTriggerPattern::kUnPrescaled);
     113//      ftrigpatt.DenyPinDiode(MFTriggerPattern::kUnPrescaled);
     114//
     115// Then you use in your tasklist as a usual MF filter. In this
     116// example Pedestal trigger flag is ignored. Consider that by default
     117// MFTriggerPattern::kUnPrescaled is set for Require- and Deny- methods.
     118//
     119// WARNING: please use MTriggerPatternDecode task to read the trigger pattern
     120// of the event and to fill MTriggerPattern container. If you use your
     121// private stuff to read MRawEvtHeader.fTriggerPattern[0] (data member
     122// where the trigger pattern is stored) you must invert all the bits of
     123// your number. Current hardware, infact, writes the trigger pattern bit-inverted.
     124//
     125//
     126// For further informations contact:
     127//
     128// Nicola Galante        nicola.galante@pi.infn.it
     129// Riccardo Paoletti     riccardo.paoletti@pi.infn.it
     130// Antonio Stamerra      antonio.stamerra@pi.infn.it
     131//
    42132/////////////////////////////////////////////////////////////////////////////
    43133#include "MTriggerPattern.h"
Note: See TracChangeset for help on using the changeset viewer.