Bringing CMakeLists under svn maintenance
[u/mrichter/AliRoot.git] / OADB / AliOADBPhysicsSelection.h
CommitLineData
eeb4307b 1#ifndef AliOADBPhysicsSelection_H
2#define AliOADBPhysicsSelection_H
3/* Copyright(c) 1998-2007, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
5
6/* $Id$ */
7
8//-------------------------------------------------------------------------
9// OADB interface for the physics selection
10// Author: Michele Floris, CERN
11//
12// This class contains the parameters needed to configure the physics
13// selection. The online trigger class must be associated to an
14// offline trigger mask, as defined in
15// AliVEvent::EOfflineTriggerTypes. The offline condition, even for
16// the same trigger mask, can be different for every different online
17// trigger, so it must be given as a parameter in the Add...Class
18// methods. It's up to the user to set the appropriate offline
19// conditions when filling the class.
20// -------------------------------------------------------------------------
21
22#include <TNamed.h>
23#include "AliVEvent.h"
24#include "TList.h"
25#include "TMap.h"
26
27class TObjArray;
28class TArrayI;
29
30
31#define NTRIGGERBITS 32
32#define NTRIGGERLOGICS 64
33
34class AliOADBPhysicsSelection : public TNamed {
35
36 public :
37 AliOADBPhysicsSelection();
28cbc692 38 AliOADBPhysicsSelection(const char* name);
eeb4307b 39 virtual ~AliOADBPhysicsSelection();
40 AliOADBPhysicsSelection(const AliOADBPhysicsSelection& cont);
41 AliOADBPhysicsSelection& operator=(const AliOADBPhysicsSelection& cont);
42 void Init();
43 // Getters
44 // These take a mask of trigger bits, because you can activate several triggers at once
45 // TList * GetCollTrigClass(AliVEvent::EOfflineTriggerTypes trig) const;
46 // TList * GetBGTrigClass(AliVEvent::EOfflineTriggerTypes trig) const;
47 // TList * GetTrigClass(AliVEvent::EOfflineTriggerTypes trig, TList ** listClasses) const ;
48
49 TList * GetCollTrigClass(UInt_t triggerBit) { return fCollTrigClasses[triggerBit];}
50 TList * GetBGTrigClass(UInt_t triggerBit) { return fBGTrigClasses[triggerBit]; }
51 const TString GetBeamSide (const char * trigger) ;
52 TMap * Debug() { return fBeamSide; }
53 // Thess take a single trigger bit, as the HW/offline conditions are mapped 1 <-> 1 to a single EOfflineTriggerTypes bit
54 const TString GetHardwareTrigger(UInt_t triggerLogic) const { return triggerLogic >= NTRIGGERLOGICS ? "" : fHardwareTrigger[triggerLogic].String(); }
55 const TString GetOfflineTrigger (UInt_t triggerLogic) const { return triggerLogic >= NTRIGGERLOGICS ? "" : fOfflineTrigger [triggerLogic].String(); }
d60ec0a6 56 UInt_t GetNTriggerBits() const { return fNtriggerBits; }
eeb4307b 57 // Setters
58 void AddCollisionTriggerClass(AliVEvent::EOfflineTriggerTypes triggerMask, const char* className,const char * beamSide, UInt_t triggerLogic);
59 void AddBGTriggerClass (AliVEvent::EOfflineTriggerTypes triggerMask, const char* className,const char * beamSide, UInt_t triggerLogic);
60
61
62 void SetHardwareTrigger (UInt_t triggerLogic, const char * trigger) { fHardwareTrigger [triggerLogic].SetString(trigger); }
63 void SetOfflineTrigger (UInt_t triggerLogic, const char * trigger) { fOfflineTrigger [triggerLogic].SetString(trigger); }
64 void SetBeamSide (const char * className, const char * side);
65 // MISC
66 virtual Bool_t IsFolder() const { return kTRUE; }
67 void Browse(TBrowser *b);
68 virtual void Print(Option_t* option = "") const;
69
d60ec0a6 70 static UInt_t GetActiveBit(UInt_t mask) ;
51a3f1b2 71
eeb4307b 72protected:
73 void CleanKey(TString & str) ;
7a4eb25e 74 const char* ExpandTriggerString(const char* className);
75
eeb4307b 76 private :
77
78 UInt_t fNtriggerBits; // Size of the arrays below. Initialized using NTRIGGERBITS
79 UInt_t fNtriggerLogics; // number of possible trigger logics, initialized using NTRIGGERLOGICS. To be increased if needed.
80
81 TList ** fCollTrigClasses ; //[fNtriggerBits] Array of collision trigger classes, corresponding to the different trigger bits defined in AliVEvent
82 TList ** fBGTrigClasses ; //[fNtriggerBits] Array of background trigger classes, corresponding to the different trigger bits defined in AliVEvent
83 TObjString * fHardwareTrigger ; //[fNtriggerLogics] Array of online trigger condition, corresponding to the different trigger logics set in Add...TriggerClass
84 TObjString * fOfflineTrigger ; //[fNtriggerLogics] Array of offline trigger condition, corresponding to the different trigger logics set in Add...TriggerClass
85 TMap * fBeamSide; // Map from the trigger classname to the beam side ("B", "A", "C", "E", "AC")
86 ClassDef(AliOADBPhysicsSelection, 1);
87};
88
89#endif