ROOT logo
#ifndef AliITSTriggerConditions_H
#define AliITSTriggerConditions_H

////////////////////////////////////////////////////////////////////////////////////
// Author: Henrik Tydesjo                                                         //
//                                                                                //
// Implementation of conditions data from Pixel Trigger (PIT)                     //
//                                                                                //
// The information is propagated from pixel trigger system to DCS file exchange   //
// server (text file format). The ReadFromTextFile method will populate this      //
// object with the values from the text file. Via a Preprocessor, this object     //
// can be stored in OCDB.                                                         //
//                                                                                //
// One can also manually create conditions data that may be interesting for       //
// simulation.                                                                    //
//                                                                                //
////////////////////////////////////////////////////////////////////////////////////

#include <TObject.h>
#include <TObjArray.h>
#include <TString.h>
#include <TBits.h>

class AliITSTriggerConditions : public TObject{
 public:
    AliITSTriggerConditions();
    AliITSTriggerConditions(const AliITSTriggerConditions& cond);
    virtual ~AliITSTriggerConditions();
    AliITSTriggerConditions& operator=(const AliITSTriggerConditions& cond);

    virtual Bool_t        IsEqualTo(AliITSTriggerConditions *cond) const;

    virtual void          DumpAll() const;
    virtual void          PrintAsInPIT() const;
    virtual void          ResetAll();

    virtual void          SetRunNumber(UInt_t num) {fRunNumber=num;}
    virtual UInt_t        GetRunNumber() const {return fRunNumber;}
    virtual void          SetFirmWareVersion(UShort_t num) {fFirmWareVersion=num;}
    virtual UShort_t      GetFirmWareVersion() const {return fFirmWareVersion;}
    virtual void          SetGlobalDescription(const Char_t* descr) {fGlobalDescription=descr;}
    virtual const Char_t* GetGlobalDescription() const {return fGlobalDescription.Data();}
    virtual void          SetVersionRegister(UShort_t num) {fVersionRegister=num;}
    virtual UShort_t      GetVersionRegister() const {return fVersionRegister;}
    virtual void          SetInputConditionsVersion(UShort_t num) {fInputConditionsVersion=num;}
    virtual UShort_t      GetInputConditionsVersion() const {return fInputConditionsVersion;}
    virtual void          SetParametersVersion(UShort_t num) {fParametersVersion=num;}
    virtual UShort_t      GetParametersVersion() const {return fParametersVersion;}

    virtual void          SetInActiveChip(UInt_t eq, UInt_t hs, UInt_t chip) 
      {fInActiveChips.SetBitNumber(GetChipKey(eq,hs,chip));}
    virtual void          ResetInActiveChips() {fInActiveChips.ResetAllBits();}
    virtual void          SetActiveChip(UInt_t eq, UInt_t hs, UInt_t chip) 
      {fInActiveChips.SetBitNumber(GetChipKey(eq,hs,chip),kFALSE);}
    virtual void          DumpInActiveChips() const;

    virtual Bool_t        IsChipActive(UInt_t eq, UInt_t hs, UInt_t chip) const 
      {return !IsChipInActive(eq,hs,chip);}
    virtual Bool_t        IsChipInActive(UInt_t eq, UInt_t hs, UInt_t chip) const 
      {return fInActiveChips.TestBitNumber(GetChipKey(eq,hs,chip));}
    virtual Bool_t        GetNextInActiveChip(Int_t& eq, Int_t& hs, Int_t& chip) const;

    virtual void          ClearAlgorithms();
    virtual void          ClearAlgoParamsI(UShort_t aIndex);
    virtual void          ClearAlgoParamsL(const Char_t* aLabel);

    virtual void          AddAlgo(UShort_t id, const Char_t* aLabel, const Char_t* aDescr);
    virtual void          AddAlgoParam(UShort_t id, const Char_t* pName, Int_t pValue);

    virtual UShort_t      GetNumAlgo() const {return fNumAlgo;}
    virtual Short_t       GetAlgoIndexL(const Char_t* aLabel) const;
    virtual Short_t       GetAlgoIDI(UShort_t aIndex) const;
    virtual const Char_t* GetAlgoLabelI(UShort_t aIndex) const;
    virtual const Char_t* GetAlgoDescriptionI(UShort_t aIndex) const;

    virtual Short_t       GetNumAlgoParamI(UShort_t aIndex) const;
    virtual const Char_t* GetAlgoParamNameII(UShort_t aIndex, UShort_t pIndex) const;
    virtual Int_t         GetAlgoParamValueII(UShort_t aIndex, UShort_t pIndex) const;
    virtual Int_t         GetAlgoParamValueIN(UShort_t aIndex, const Char_t* pName) const;
    virtual Short_t       GetNumAlgoParamL(const Char_t* aLabel) const;
    virtual const Char_t* GetAlgoParamNameLI(const Char_t* aLabel, UShort_t pIndex) const;
    virtual Int_t         GetAlgoParamValueLI(const Char_t* aLabel, UShort_t pIndex) const;
    virtual Int_t         GetAlgoParamValueLN(const Char_t* aLabel, const Char_t* pName) const;

    virtual void          ReadFromTextFile(const Char_t* fileName);

 protected:
    UInt_t    fRunNumber;              // Run number
    UShort_t  fFirmWareVersion;        // PIT Processing firmware version
    TString   fGlobalDescription;      // PIT Global description
    UShort_t  fVersionRegister;        // PIT Version register value
    UShort_t  fInputConditionsVersion; // PIT Input configuration version
    UShort_t  fParametersVersion;      // PIT Parameters version
    TBits     fInActiveChips;          // Map of PIT de-activated chips
    UShort_t  fNumAlgo;                // Number of algorithms used
    TObjArray fAlgoList;               // List of conditions for each algorithm used

    UInt_t  GetChipKey(Int_t eq, Int_t hs, Int_t chip) const;
    void    GetChipFromKey(UInt_t key, Int_t& eq, Int_t& hs, Int_t& chip) const;
    Bool_t  SplitStringIn2(TString orig, TString& word1, TString& word2, Char_t sep);
    TString GetStringBetween(TString orig, Char_t sep1, Char_t sep2);

    ClassDef(AliITSTriggerConditions,1) // Trigger conditions class
};

#endif
 AliITSTriggerConditions.h:1
 AliITSTriggerConditions.h:2
 AliITSTriggerConditions.h:3
 AliITSTriggerConditions.h:4
 AliITSTriggerConditions.h:5
 AliITSTriggerConditions.h:6
 AliITSTriggerConditions.h:7
 AliITSTriggerConditions.h:8
 AliITSTriggerConditions.h:9
 AliITSTriggerConditions.h:10
 AliITSTriggerConditions.h:11
 AliITSTriggerConditions.h:12
 AliITSTriggerConditions.h:13
 AliITSTriggerConditions.h:14
 AliITSTriggerConditions.h:15
 AliITSTriggerConditions.h:16
 AliITSTriggerConditions.h:17
 AliITSTriggerConditions.h:18
 AliITSTriggerConditions.h:19
 AliITSTriggerConditions.h:20
 AliITSTriggerConditions.h:21
 AliITSTriggerConditions.h:22
 AliITSTriggerConditions.h:23
 AliITSTriggerConditions.h:24
 AliITSTriggerConditions.h:25
 AliITSTriggerConditions.h:26
 AliITSTriggerConditions.h:27
 AliITSTriggerConditions.h:28
 AliITSTriggerConditions.h:29
 AliITSTriggerConditions.h:30
 AliITSTriggerConditions.h:31
 AliITSTriggerConditions.h:32
 AliITSTriggerConditions.h:33
 AliITSTriggerConditions.h:34
 AliITSTriggerConditions.h:35
 AliITSTriggerConditions.h:36
 AliITSTriggerConditions.h:37
 AliITSTriggerConditions.h:38
 AliITSTriggerConditions.h:39
 AliITSTriggerConditions.h:40
 AliITSTriggerConditions.h:41
 AliITSTriggerConditions.h:42
 AliITSTriggerConditions.h:43
 AliITSTriggerConditions.h:44
 AliITSTriggerConditions.h:45
 AliITSTriggerConditions.h:46
 AliITSTriggerConditions.h:47
 AliITSTriggerConditions.h:48
 AliITSTriggerConditions.h:49
 AliITSTriggerConditions.h:50
 AliITSTriggerConditions.h:51
 AliITSTriggerConditions.h:52
 AliITSTriggerConditions.h:53
 AliITSTriggerConditions.h:54
 AliITSTriggerConditions.h:55
 AliITSTriggerConditions.h:56
 AliITSTriggerConditions.h:57
 AliITSTriggerConditions.h:58
 AliITSTriggerConditions.h:59
 AliITSTriggerConditions.h:60
 AliITSTriggerConditions.h:61
 AliITSTriggerConditions.h:62
 AliITSTriggerConditions.h:63
 AliITSTriggerConditions.h:64
 AliITSTriggerConditions.h:65
 AliITSTriggerConditions.h:66
 AliITSTriggerConditions.h:67
 AliITSTriggerConditions.h:68
 AliITSTriggerConditions.h:69
 AliITSTriggerConditions.h:70
 AliITSTriggerConditions.h:71
 AliITSTriggerConditions.h:72
 AliITSTriggerConditions.h:73
 AliITSTriggerConditions.h:74
 AliITSTriggerConditions.h:75
 AliITSTriggerConditions.h:76
 AliITSTriggerConditions.h:77
 AliITSTriggerConditions.h:78
 AliITSTriggerConditions.h:79
 AliITSTriggerConditions.h:80
 AliITSTriggerConditions.h:81
 AliITSTriggerConditions.h:82
 AliITSTriggerConditions.h:83
 AliITSTriggerConditions.h:84
 AliITSTriggerConditions.h:85
 AliITSTriggerConditions.h:86
 AliITSTriggerConditions.h:87
 AliITSTriggerConditions.h:88
 AliITSTriggerConditions.h:89
 AliITSTriggerConditions.h:90
 AliITSTriggerConditions.h:91
 AliITSTriggerConditions.h:92
 AliITSTriggerConditions.h:93
 AliITSTriggerConditions.h:94
 AliITSTriggerConditions.h:95
 AliITSTriggerConditions.h:96
 AliITSTriggerConditions.h:97
 AliITSTriggerConditions.h:98
 AliITSTriggerConditions.h:99
 AliITSTriggerConditions.h:100
 AliITSTriggerConditions.h:101
 AliITSTriggerConditions.h:102
 AliITSTriggerConditions.h:103
 AliITSTriggerConditions.h:104
 AliITSTriggerConditions.h:105
 AliITSTriggerConditions.h:106