LCOV - code coverage report
Current view: top level - HLT/MUON - AliHLTMUONTriggerRecord.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 1 21 4.8 %
Date: 2016-06-14 17:26:59 Functions: 1 29 3.4 %

          Line data    Source code
       1             : #ifndef ALIHLTMUONTRIGGERRECORD_H
       2             : #define ALIHLTMUONTRIGGERRECORD_H
       3             : /* This file is property of and copyright by the ALICE HLT Project        *
       4             :  * ALICE Experiment at CERN, All rights reserved.                         *
       5             :  * See cxx source for full Copyright notice                               */
       6             : 
       7             : // $Id$
       8             : 
       9             : ///
      10             : /// @file   AliHLTMUONTriggerRecord.h
      11             : /// @author Artur Szostak <artursz@iafrica.com>
      12             : /// @date   29 Sep 2007
      13             : /// @brief  Declaration of the trigger record structure in ROOT object format for dHLT.
      14             : ///
      15             : 
      16             : #include "TObject.h"
      17             : #include "TVector3.h"
      18             : #include <ostream>
      19             : 
      20             : /**
      21             :  * Trigger record class containing information about a dimuon L0 trigger
      22             :  * local board decision in a ROOT object.
      23             :  * This class is mainly for testing or as a helper object for dHLT specific analysis,
      24             :  * since it is sometimes easier to store and handle ROOT objects.
      25             :  */
      26           0 : class AliHLTMUONTriggerRecord : public TObject
      27             : {
      28             :         /**
      29             :          * Stream operator for usage with std::ostream classes.
      30             :          * Allows usage such as:
      31             :          *   AliHLTMUONTriggerRecord tr; std::cout << tr;
      32             :          */
      33             :         friend std::ostream& operator << (
      34             :                         std::ostream& stream,
      35             :                         const AliHLTMUONTriggerRecord& trigrec
      36             :                 );
      37             : 
      38             : public:
      39             : 
      40             :         /**
      41             :          * Constructor for creating a new trigger record.
      42             :          * @param id    The trigger record ID number unique for an event.
      43             :          * @param sign  The particle's sign. Must be -1, 1 or 0 if the sign is unknown.
      44             :          * @param px    X component of the particle's momentum.
      45             :          * @param py    Y component of the particle's momentum.
      46             :          * @param pz    Z component of the particle's momentum.
      47             :          * @param sourceDDL  The DDL from which this trigger record originates.
      48             :          * @param zf    The Z coordinate of the middle of the magnetic field assumed
      49             :          *              during momentum calculation.
      50             :          * @param qbl   The integrated magnetic field strength assumed during momentum
      51             :          *              calculation.
      52             :          */
      53             :         AliHLTMUONTriggerRecord(
      54             :                         Int_t id = -1,
      55             :                         Int_t sign = 0,
      56             :                         Float_t px = 0,
      57             :                         Float_t py = 0,
      58             :                         Float_t pz = 0,
      59             :                         Int_t sourceDDL = -1,
      60             :                         Float_t zf = 0,
      61             :                         Float_t qbl = 0
      62             :                 );
      63             :         
      64             :         /**
      65             :          * Default destructor.
      66             :          */
      67           0 :         virtual ~AliHLTMUONTriggerRecord() {}
      68             : 
      69             :         /**
      70             :          * Returns the trigger record ID number, which is unique for an event.
      71             :          */
      72           0 :         Int_t Id() const { return fId; }
      73             : 
      74             :         /**
      75             :          * Returns the sign of the particle: -1, 1 or 0 if the sign is unknown.
      76             :          */
      77           0 :         Int_t Sign() const { return fSign; }
      78             : 
      79             :         /**
      80             :          * Returns the momentum vector with components in GeV/c.
      81             :          */
      82           0 :         const TVector3& Momentum() const { return fMomentum; }
      83             : 
      84             :         /**
      85             :          * Returns the X component of the particle's momentum in GeV/c.
      86             :          */
      87           0 :         Double_t Px() const { return fMomentum.Px(); }
      88             : 
      89             :         /**
      90             :          * Returns the Y component of the particle's momentum in GeV/c.
      91             :          */
      92           0 :         Double_t Py() const { return fMomentum.Py(); }
      93             : 
      94             :         /**
      95             :          * Returns the Z component of the particle's momentum in GeV/c.
      96             :          */
      97           0 :         Double_t Pz() const { return fMomentum.Pz(); }
      98             : 
      99             :         /**
     100             :          * Returns the momentum magnitude of the particle in GeV/c.
     101             :          */
     102           0 :         Double_t P() const { return fMomentum.Mag(); }
     103             : 
     104             :         /**
     105             :          * Returns the transverse momentum of the particle in GeV/c.
     106             :          */
     107           0 :         Double_t Pt() const { return fMomentum.Pt(); }
     108             : 
     109             :         /**
     110             :          * Returns the polar angle of the momentum vector in radians.
     111             :          */
     112           0 :         Double_t Polar() const { return fMomentum.Theta(); }
     113             : 
     114             :         /**
     115             :          * Returns the azimuthal angle of the transverse momentum in radians.
     116             :          */
     117           0 :         Double_t Phi() const { return fMomentum.Phi(); }
     118             : 
     119             :         /**
     120             :          * Returns the hit coordinate on the specified chamber in the AliRoot
     121             :          * coordinate system.
     122             :          * @param chamber  The chamber for which to fetch the hit. Valid values
     123             :          *                 are in the range [11..14].
     124             :          */
     125             :         const TVector3& Hit(Int_t chamber) const;
     126             : 
     127             :         /**
     128             :          * Returns the X coordinate of the reconstructed hit in centimetres.
     129             :          * @param chamber  The chamber for which to fetch the X coordinate.
     130             :          *                 Valid values are in the range [11..14].
     131             :          */
     132           0 :         Double_t X(Int_t chamber) const { return Hit(chamber).X(); }
     133             : 
     134             :         /**
     135             :          * Returns the Y coordinate of the reconstructed hit in centimetres.
     136             :          * @param chamber  The chamber for which to fetch the Y coordinate.
     137             :          *                 Valid values are in the range [11..14].
     138             :          */
     139           0 :         Double_t Y(Int_t chamber) const { return Hit(chamber).Y(); }
     140             : 
     141             :         /**
     142             :          * Returns the Z coordinate of the reconstructed hit in centimetres.
     143             :          * @param chamber  The chamber for which to fetch the Z coordinate.
     144             :          *                 Valid values are in the range [11..14].
     145             :          */
     146           0 :         Double_t Z(Int_t chamber) const { return Hit(chamber).Z(); }
     147             :         
     148             :         /**
     149             :          * Returns the source DDL from which this trigger record originates.
     150             :          * -1 is returned if this was not set.
     151             :          */
     152           0 :         Int_t SourceDDL() const { return fSourceDDL; }
     153             :         
     154             :         /**
     155             :          * Returns the detector element ID number for the hit on the specified
     156             :          * chamber. -1 is returned if this information was not set.
     157             :          * @param chamber  The chamber for which to fetch the detector element ID.
     158             :          *                 Valid values are in the range [11..14].
     159             :          */
     160             :         Int_t DetElemId(Int_t chamber) const;
     161             :         
     162             :         /**
     163             :          * Returns the 16 bit X pattern from the local board.
     164             :          * -1 is returned if this information was not set.
     165             :          * @param chamber  The chamber for which to fetch the bit pattern.
     166             :          *                 Valid values are in the range [11..14].
     167             :          * \param board  The board for which to fetch the bit pattern in the range [0..2].
     168             :          *             0 indicates the previous board, 1 the central and 2 the next board.
     169             :          */
     170             :         Int_t PatternX(Int_t chamber, Int_t board) const;
     171             :         
     172             :         /**
     173             :          * Returns the 16 bit Y pattern from the local board.
     174             :          * -1 is returned if this information was not set.
     175             :          * @param chamber  The chamber for which to fetch the bit pattern.
     176             :          *                Valid values are in the range [11..14].
     177             :          * \param board  The board for which to fetch the bit pattern in the range [0..2].
     178             :          *             0 indicates the previous board, 1 the central and 2 the next board.
     179             :          */
     180             :         Int_t PatternY(Int_t chamber, Int_t board) const;
     181             :         
     182             :         /**
     183             :          * Returns the Z coordinate in the middle of the magnetic field used to
     184             :          * calculate the momentum.
     185             :          */
     186           0 :         Float_t Zmiddle() const { return fZmiddle; }
     187             :         
     188             :         /**
     189             :          * Returns the integrated magnetic field strength times polarity used in
     190             :          * the calculation of the momentum. Value returned in (T.m) tesla metres.
     191             :          */
     192           0 :         Float_t QBL() const { return fQBL; }
     193             :         
     194             :         /**
     195             :          * Sets the hit coordinate (in AliRoot global coordinates) on the
     196             :          * given chamber.
     197             :          * @param chamber  The chamber for which to set the hit. Valid values
     198             :          *                 are in the range [11..14].
     199             :          * @param x  The X coordinate of the hit in centimetres.
     200             :          * @param y  The Y coordinate of the hit in centimetres.
     201             :          * @param z  The Z coordinate of the hit in centimetres.
     202             :          */
     203             :         void SetHit(Int_t chamber, Float_t x, Float_t y, Float_t z);
     204             :         
     205             :         /**
     206             :          * Sets the hit coordinate on a given chamber with the detection element ID.
     207             :          * @param chamber  The chamber for which to set the hit. Valid values
     208             :          *                 are in the range [11..14].
     209             :          * @param x  The X coordinate of the hit in centimetres.
     210             :          * @param y  The Y coordinate of the hit in centimetres.
     211             :          * @param z  The Z coordinate of the hit in centimetres.
     212             :          * @param detElemId The detection element ID where the hit was found.
     213             :          */
     214             :         void SetHit(Int_t chamber, Float_t x, Float_t y, Float_t z, Int_t detElemId);
     215             :         
     216             :         /**
     217             :          * Sets the debugging information for the hit on the specified chamber.
     218             :          * @param chamber  The chamber for which to set the debugging information.
     219             :          *                Valid values are in the range [11..14].
     220             :          * @param patternX  Array of X bit pattern from the local boards.
     221             :          * @param patternY  Array of Y bit pattern from the local boards.
     222             :          * \note The bit patterns in the array are in the order: [previous, central, next].
     223             :          */
     224             :         void SetHitDebugInfo(Int_t chamber, UShort_t patternX[3], UShort_t patternY[3]);
     225             :         
     226             :         /**
     227             :          * Sets the debugging information for the hit on the specified chamber.
     228             :          * @param zmiddle  The z coordinate of the middle of the magnetic field.
     229             :          * @param bfieldintegral  The magnetic field integral times field polarity.
     230             :          */
     231             :         void SetDebugInfo(Float_t zmiddle, Float_t bfieldintegral);
     232             :         
     233             :         /**
     234             :          * Prints the details of the trigger record.
     235             :          * @param option  A case sensitive string that can contain one of the
     236             :          *     following strings:
     237             :          *       "compact" - Prints just the momentum, sign and ID of the trigger
     238             :          *                   record in a terse format.
     239             :          *       "detail" - Prints also the hit information.
     240             :          *       "all" - Prints all known information about this trigger record.
     241             :          *     If the string contains an empty option or NULL then the default is
     242             :          *     to print compactly.
     243             :          */
     244             :         virtual void Print(Option_t* option = NULL) const;
     245             :         
     246             :         // Methods inherited from TObject
     247           0 :         virtual Bool_t IsSortable() const { return kTRUE; }
     248             :         Int_t Compare(const TObject* obj) const;
     249             : 
     250             :         // Implement comparison operators.
     251             :         bool operator == (const AliHLTMUONTriggerRecord& trigrec) const;
     252             : 
     253             :         bool operator != (const AliHLTMUONTriggerRecord& trigrec) const
     254             :         {
     255           0 :                 return not this->operator == (trigrec);
     256             :         }
     257             : 
     258             : private:
     259             : 
     260             :         Int_t fId; ///< Each trigger record should have an ID number unique for a given event.
     261             :         Int_t fSign;  ///< The sign of the particle: -1 or 1. 0 indicates unknown value.
     262             :         TVector3 fMomentum; ///< Momentum vector of the particle in GeV/c.
     263             :         TVector3 fHit[4];   ///< hit coordinates on trigger chambers 11 to 14.
     264             :         
     265             :         // The following is debugging information and may not be filled if the
     266             :         // dHLT components were not set to produce this information.
     267             :         Int_t fSourceDDL;  ///< The DDL from which this trigger record originates.
     268             :         Int_t fDetElemId[4]; ///< The detector element ID for the hit on each chamber 11 to 14.
     269             :         Int_t fPatternX[4][3]; ///< The X strip pattern for chambers 11 to 14 and previous, central and next local boards. -1 if invalid.
     270             :         Int_t fPatternY[4][3]; ///< The Y strip pattern for chambers 11 to 14 and previous, central and next local boards. -1 if invalid.
     271             :         
     272             :         // Parameters used in momentum estimation:
     273             :         Float_t fZmiddle; ///< Particle momentum X component in GeV/c.
     274             :         Float_t fQBL;     ///< The integrated magnetic field times field polarity in (T.m) tesla metres.
     275             :                 
     276           6 :         ClassDef(AliHLTMUONTriggerRecord, 4);  // Trigger record object translated from dHLT internal raw data.
     277             : };
     278             : 
     279             : #endif // ALIHLTMUONTRIGGERRECORD_H

Generated by: LCOV version 1.11