ROOT logo
#ifndef ALIVZEROTRIGGERDATA_H
#define ALIVZEROTRIGGERDATA_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights
 * reserved. 
 *
 * See cxx source for full Copyright notice                               
 */

// Class AliVZEROTriggerData
// -------------------------
// Retrieves and hold the FEE parameters
// The parameters are recieved from the shuttle 
// AliVZEROTriggerData is then used in the AliVZEROTriggerSimulator
//

#include <TNamed.h>

#include "AliVZERODataFEE.h"


class AliVZEROTriggerData : public TNamed {
public:
	AliVZEROTriggerData();
	AliVZEROTriggerData(Int_t nRun, UInt_t startTime, UInt_t endTime);
	~AliVZEROTriggerData();
	
	void FillData(AliVZERODataFEE * data);

	// ----- Setters -----

	void SetClk1Win1(UShort_t* clks);
	void SetClk1Win1(UShort_t clk, Int_t board);
	void SetClk2Win1(UShort_t* clks);
	void SetClk2Win1(UShort_t clk, Int_t board);
	
	void SetClk1Win2(UShort_t* clks);
	void SetClk1Win2(UShort_t clk, Int_t board);
	void SetClk2Win2(UShort_t* clks);
	void SetClk2Win2(UShort_t clk, Int_t board);
	
	void SetDelayClk1Win1(UShort_t* delays);
	void SetDelayClk1Win1(UShort_t delay, Int_t board);
	void SetDelayClk2Win1(UShort_t* delays);
	void SetDelayClk2Win1(UShort_t delay, Int_t board);
	
	void SetDelayClk1Win2(UShort_t* delays);
	void SetDelayClk1Win2(UShort_t delay, Int_t board);
	void SetDelayClk2Win2(UShort_t* delays);
	void SetDelayClk2Win2(UShort_t delay, Int_t board);
	
	void SetLatchWin1(UShort_t *latchs);
	void SetLatchWin1(UShort_t latch, Int_t board);
	void SetLatchWin2(UShort_t *latchs);
	void SetLatchWin2(UShort_t latch, Int_t board);
	
	void SetResetWin1(UShort_t *resets);
	void SetResetWin1(UShort_t reset, Int_t board);
	void SetResetWin2(UShort_t *resets);
	void SetResetWin2(UShort_t reset, Int_t board);
	
	void SetPedestalSubtraction(Bool_t *peds);
	void SetPedestalSubtraction(Bool_t ped, Int_t board);
	
	void SetBBAThreshold(UShort_t th) {fBBAThreshold = th;};
	void SetBBCThreshold(UShort_t th) {fBBCThreshold = th;};

	void SetBGAThreshold(UShort_t th) {fBGAThreshold = th;};
	void SetBGCThreshold(UShort_t th) {fBGCThreshold = th;};

	void SetBBAForBGThreshold(UShort_t th) {fBBAForBGThreshold = th;};
	void SetBBCForBGThreshold(UShort_t th) {fBBCForBGThreshold = th;};
	
	void SetCentralityV0AThrLow(UShort_t th) {fCentralityVOAThrLow = th;};
	void SetCentralityV0AThrHigh(UShort_t th) {fCentralityVOAThrHigh = th;};
	
	void SetCentralityV0CThrLow(UShort_t th) {fCentralityVOCThrLow = th;};
	void SetCentralityV0CThrHigh(UShort_t th) {fCentralityVOCThrHigh = th;};
	
	void SetMultV0AThrLow(UShort_t th) {fMultV0AThrLow = th;};
	void SetMultV0AThrHigh(UShort_t th) {fMultV0AThrHigh = th;};
	
	void SetMultV0CThrLow(UShort_t th) {fMultV0CThrLow = th;};
	void SetMultV0CThrHigh(UShort_t th) {fMultV0CThrHigh = th;};
	
	void SetTriggerSelected(UShort_t trigger, Int_t output);
	
	void SetEnableCharge(Bool_t val, Int_t board, Int_t channel);
	void SetEnableTiming(Bool_t val, Int_t board, Int_t channel);
	void SetDiscriThr(UShort_t val, Int_t board, Int_t channel);
	void SetDelayHit(UShort_t val, Int_t board, Int_t channel);
	void SetPedestal(UShort_t val, Int_t integrator, Int_t board, Int_t channel);
	void SetPedestalCut(UShort_t val, Int_t integrator, Int_t board, Int_t channel);

	
	// ----- Getters -----
	
	UShort_t * GetClk1Win1() const {return (UShort_t*)fClk1Win1;};
	UShort_t GetClk1Win1(Int_t board ) const {return ((board>=0 && board<kNCIUBoards)?fClk1Win1[board]:0);};
	UShort_t * GetClk2Win1() const {return (UShort_t*)fClk2Win1;};
	UShort_t GetClk2Win1(Int_t board ) const {return ((board>=0 && board<kNCIUBoards)?fClk2Win1[board]:0);};

	UShort_t * GetClk1Win2() const {return (UShort_t*)fClk1Win2;};
	UShort_t GetClk1Win2(Int_t board ) const {return ((board>=0 && board<kNCIUBoards)?fClk1Win2[board]:0);};
	UShort_t * GetClk2Win2() const {return (UShort_t*)fClk2Win2;};
	UShort_t GetClk2Win2(Int_t board ) const {return ((board>=0 && board<kNCIUBoards)?fClk2Win2[board]:0);};

	UShort_t * GetDelayClk1Win1() const {return (UShort_t*)fDelayClk1Win1;};
	UShort_t GetDelayClk1Win1(Int_t board ) const {return ((board>=0 && board<kNCIUBoards)?fDelayClk1Win1[board]:0);};
	UShort_t * GetDelayClk2Win1() const {return (UShort_t*)fDelayClk2Win1;};
	UShort_t GetDelayClk2Win1(Int_t board ) const {return ((board>=0 && board<kNCIUBoards)?fDelayClk2Win1[board]:0);};
	
	UShort_t * GetDelayClk1Win2() const {return (UShort_t*)fDelayClk1Win2;};
	UShort_t GetDelayClk1Win2(Int_t board ) const {return ((board>=0 && board<kNCIUBoards)?fDelayClk1Win2[board]:0);};
	UShort_t * GetDelayClk2Win2() const {return (UShort_t*)fDelayClk2Win2;};
	UShort_t GetDelayClk2Win2(Int_t board ) const {return ((board>=0 && board<kNCIUBoards)?fDelayClk2Win2[board]:0);};
	
	UShort_t * GetLatchWin1() const {return (UShort_t*)fLatchWin1;};
	UShort_t GetLatchWin1(Int_t board ) const  {return ((board>=0 && board<kNCIUBoards)?fLatchWin1[board]:0);};
	UShort_t * GetLatchWin2() const {return (UShort_t*)fLatchWin2;};
	UShort_t GetLatchWin2(Int_t board ) const  {return ((board>=0 && board<kNCIUBoards)?fLatchWin2[board]:0);};
	
	UShort_t * GetResetWin1() const {return (UShort_t*)fResetWin1;};
	UShort_t GetResetWin1(Int_t board ) const  {return ((board>=0 && board<kNCIUBoards)?fResetWin1[board]:0);};
	UShort_t * GetResetWin2() const {return (UShort_t*)fResetWin2;};
	UShort_t GetResetWin2(Int_t board ) const  {return ((board>=0 && board<kNCIUBoards)?fResetWin2[board]:0);};
	
	Bool_t * GetPedestalSubtraction() const {return (Bool_t*) fPedestalSubtraction;};
	Bool_t GetPedestalSubtraction(Int_t board ) const  {return ((board>=0 && board<kNCIUBoards)?fPedestalSubtraction[board]:0);};

	UShort_t GetBBAThreshold() const {return fBBAThreshold;};
	UShort_t GetBBCThreshold() const {return fBBCThreshold;};

	UShort_t GetBGAThreshold() const {return fBGAThreshold;};
	UShort_t GetBGCThreshold() const {return fBGCThreshold;};

	UShort_t GetBBAForBGThreshold() const {return fBBAForBGThreshold;};
	UShort_t GetBBCForBGThreshold() const {return fBBCForBGThreshold;};
	
	UShort_t GetCentralityV0AThrLow() const {return fCentralityVOAThrLow;};
	UShort_t GetCentralityV0AThrHigh() const {return fCentralityVOAThrHigh;};
	
	UShort_t GetCentralityV0CThrLow() const {return fCentralityVOCThrLow;};
	UShort_t GetCentralityV0CThrHigh() const {return fCentralityVOCThrHigh;};

	UShort_t GetMultV0AThrLow() const {return fMultV0AThrLow;};
	UShort_t GetMultV0AThrHigh() const {return fMultV0AThrHigh;};

	UShort_t GetMultV0CThrLow() const {return fMultV0CThrLow;};
	UShort_t GetMultV0CThrHigh() const {return fMultV0CThrHigh;};

	UShort_t GetTriggerSelected(Int_t output) const {return ((output>=0 && output<kNTriggerOutputs)?fTriggerSelected[output]:0);};
	
	Bool_t GetEnableCharge(Int_t board, Int_t channel);
	Bool_t GetEnableTiming(Int_t board, Int_t channel);
	UShort_t GetDiscriThr(Int_t board, Int_t channel);
	UShort_t GetDelayHit(Int_t board, Int_t channel);
	UShort_t GetPedestal(Int_t integrator, Int_t board, Int_t channel);
	UShort_t GetPedestalCut(Int_t integrator, Int_t board, Int_t channel);

	enum {
		kNCIUBoards = AliVZERODataFEE::kNCIUBoards,
		kNAliases = AliVZERODataFEE::kNAliases,
		kNTriggerOutputs = 5,
		kNChannels = 8
	};
	
private:
	AliVZEROTriggerData(const AliVZEROTriggerData &/*triggerData*/);
	AliVZEROTriggerData& operator= (const AliVZEROTriggerData &/*triggerData*/);
	
	UShort_t fClk1Win1[kNCIUBoards]; //Profil of the Clock 1  of the Window 1 (BB window)
	UShort_t fClk2Win1[kNCIUBoards]; //Profil of the Clock 2  of the Window 1 (BB window)
	UShort_t fClk1Win2[kNCIUBoards]; //Profil of the Clock 1  of the Window 2 (BG window)
	UShort_t fClk2Win2[kNCIUBoards]; //Profil of the Clock 2  of the Window 2 (BG window)
	UShort_t fDelayClk1Win1[kNCIUBoards]; // Delays of the Clock 1  of the Window 1 (BB window)
	UShort_t fDelayClk2Win1[kNCIUBoards]; // Delays of the Clock 2 of the Window 1 (BB window)
	UShort_t fDelayClk1Win2[kNCIUBoards]; // Delays of the Clock 1  of the Window 2 (BG window)
	UShort_t fDelayClk2Win2[kNCIUBoards]; // Delays of the Clock 2 of the Window 2 (BG window)
	UShort_t fLatchWin1[kNCIUBoards]; //Profil of the Clock of the Latch signal of Window 1 (BB window)
	UShort_t fLatchWin2[kNCIUBoards]; //Profil of the Clock of the Latch signal of Window 2 (BG window)
	UShort_t fResetWin1[kNCIUBoards]; //Profil of the Clock of the Reset signal of Window 1 (BB window)
	UShort_t fResetWin2[kNCIUBoards]; //Profil of the Clock of the Reset signal of Window 2 (BG window)
	Bool_t	 fPedestalSubtraction[kNCIUBoards]; // Flag to en(dis)able pedestal subtraction before centrality trigger calculation
	UShort_t fBBAThreshold;  // Minimum bias Threshold in number of channel hit for V0A
	UShort_t fBBCThreshold;  // Minimum bias Threshold in number of channel hit for V0C
	UShort_t fBGAThreshold;  // Beam Gas Threshold in number of channel hit for V0A
	UShort_t fBGCThreshold;  // Beam Gas Threshold in number of channel hit for V0C
	UShort_t fBBAForBGThreshold;  // BBA threshold for Beam Gas triggers (i.e. BBA and BGC)
	UShort_t fBBCForBGThreshold;  // BBC threshold for Beam Gas triggers (i.e. BBC and BGA)
	UShort_t fCentralityVOAThrLow;  // Threshold used for centrality triggers (i.e. CTA1 and CTC1)
	UShort_t fCentralityVOAThrHigh; // Threshold used for centrality triggers (i.e. CTA2 and CTC2)
	UShort_t fCentralityVOCThrLow;  // Threshold used for centrality triggers (i.e. CTA1 and CTC1)
	UShort_t fCentralityVOCThrHigh; // Threshold used for centrality triggers (i.e. CTA2 and CTC2)
	UShort_t fMultV0AThrLow;  // Threshold used for multiplicity triggers (i.e. MTA and MTC)
	UShort_t fMultV0AThrHigh; // Threshold used for multiplicity triggers (i.e. MTA and MTC)
	UShort_t fMultV0CThrLow;  // Threshold used for multiplicity triggers (i.e. MTA and MTC)
	UShort_t fMultV0CThrHigh; // Threshold used for multiplicity triggers (i.e. MTA and MTC)
	UShort_t fTriggerSelected[kNTriggerOutputs]; // Triggers selected on the 5 outputs to CTP
	Bool_t	 fEnableCharge[kNCIUBoards][kNChannels]; // Flag to know is a channel is participating to the Charge triggers
	Bool_t	 fEnableTiming[kNCIUBoards][kNChannels]; // Flag to know is a channel is participating to the Timing triggers
	UShort_t fDiscriThr[kNCIUBoards][kNChannels]; // Threshold of each discriminator
	UShort_t fDelayHit[kNCIUBoards][kNChannels]; // Individual delays of each channel 
	UShort_t fPedestalOdd[kNCIUBoards][kNChannels]; // Pedestals for the Odd integrators
	UShort_t fPedestalEven[kNCIUBoards][kNChannels]; // Pedestals for the Even integrators
	UShort_t fPedestalCutOdd[kNCIUBoards][kNChannels]; // Pedestals Cut for the Odd integrators
	UShort_t fPedestalCutEven[kNCIUBoards][kNChannels]; // Pedestals Cut for the Even integrators

	Int_t fRun;       // Run number
	Int_t fStartTime; // Start time
	Int_t fEndTime;   // End time
	TString fAliasNames[kNAliases];	// aliases for DCS data
	Bool_t fIsProcessed; // bool to know processing status
	
	Bool_t	IsClkValid(UShort_t clock) const;
	void SetParameter(TString name, Int_t val);
	
	
	ClassDef( AliVZEROTriggerData, 2 )  

};

#endif // ALIVZEROTRIGGERDATA_H


 AliVZEROTriggerData.h:1
 AliVZEROTriggerData.h:2
 AliVZEROTriggerData.h:3
 AliVZEROTriggerData.h:4
 AliVZEROTriggerData.h:5
 AliVZEROTriggerData.h:6
 AliVZEROTriggerData.h:7
 AliVZEROTriggerData.h:8
 AliVZEROTriggerData.h:9
 AliVZEROTriggerData.h:10
 AliVZEROTriggerData.h:11
 AliVZEROTriggerData.h:12
 AliVZEROTriggerData.h:13
 AliVZEROTriggerData.h:14
 AliVZEROTriggerData.h:15
 AliVZEROTriggerData.h:16
 AliVZEROTriggerData.h:17
 AliVZEROTriggerData.h:18
 AliVZEROTriggerData.h:19
 AliVZEROTriggerData.h:20
 AliVZEROTriggerData.h:21
 AliVZEROTriggerData.h:22
 AliVZEROTriggerData.h:23
 AliVZEROTriggerData.h:24
 AliVZEROTriggerData.h:25
 AliVZEROTriggerData.h:26
 AliVZEROTriggerData.h:27
 AliVZEROTriggerData.h:28
 AliVZEROTriggerData.h:29
 AliVZEROTriggerData.h:30
 AliVZEROTriggerData.h:31
 AliVZEROTriggerData.h:32
 AliVZEROTriggerData.h:33
 AliVZEROTriggerData.h:34
 AliVZEROTriggerData.h:35
 AliVZEROTriggerData.h:36
 AliVZEROTriggerData.h:37
 AliVZEROTriggerData.h:38
 AliVZEROTriggerData.h:39
 AliVZEROTriggerData.h:40
 AliVZEROTriggerData.h:41
 AliVZEROTriggerData.h:42
 AliVZEROTriggerData.h:43
 AliVZEROTriggerData.h:44
 AliVZEROTriggerData.h:45
 AliVZEROTriggerData.h:46
 AliVZEROTriggerData.h:47
 AliVZEROTriggerData.h:48
 AliVZEROTriggerData.h:49
 AliVZEROTriggerData.h:50
 AliVZEROTriggerData.h:51
 AliVZEROTriggerData.h:52
 AliVZEROTriggerData.h:53
 AliVZEROTriggerData.h:54
 AliVZEROTriggerData.h:55
 AliVZEROTriggerData.h:56
 AliVZEROTriggerData.h:57
 AliVZEROTriggerData.h:58
 AliVZEROTriggerData.h:59
 AliVZEROTriggerData.h:60
 AliVZEROTriggerData.h:61
 AliVZEROTriggerData.h:62
 AliVZEROTriggerData.h:63
 AliVZEROTriggerData.h:64
 AliVZEROTriggerData.h:65
 AliVZEROTriggerData.h:66
 AliVZEROTriggerData.h:67
 AliVZEROTriggerData.h:68
 AliVZEROTriggerData.h:69
 AliVZEROTriggerData.h:70
 AliVZEROTriggerData.h:71
 AliVZEROTriggerData.h:72
 AliVZEROTriggerData.h:73
 AliVZEROTriggerData.h:74
 AliVZEROTriggerData.h:75
 AliVZEROTriggerData.h:76
 AliVZEROTriggerData.h:77
 AliVZEROTriggerData.h:78
 AliVZEROTriggerData.h:79
 AliVZEROTriggerData.h:80
 AliVZEROTriggerData.h:81
 AliVZEROTriggerData.h:82
 AliVZEROTriggerData.h:83
 AliVZEROTriggerData.h:84
 AliVZEROTriggerData.h:85
 AliVZEROTriggerData.h:86
 AliVZEROTriggerData.h:87
 AliVZEROTriggerData.h:88
 AliVZEROTriggerData.h:89
 AliVZEROTriggerData.h:90
 AliVZEROTriggerData.h:91
 AliVZEROTriggerData.h:92
 AliVZEROTriggerData.h:93
 AliVZEROTriggerData.h:94
 AliVZEROTriggerData.h:95
 AliVZEROTriggerData.h:96
 AliVZEROTriggerData.h:97
 AliVZEROTriggerData.h:98
 AliVZEROTriggerData.h:99
 AliVZEROTriggerData.h:100
 AliVZEROTriggerData.h:101
 AliVZEROTriggerData.h:102
 AliVZEROTriggerData.h:103
 AliVZEROTriggerData.h:104
 AliVZEROTriggerData.h:105
 AliVZEROTriggerData.h:106
 AliVZEROTriggerData.h:107
 AliVZEROTriggerData.h:108
 AliVZEROTriggerData.h:109
 AliVZEROTriggerData.h:110
 AliVZEROTriggerData.h:111
 AliVZEROTriggerData.h:112
 AliVZEROTriggerData.h:113
 AliVZEROTriggerData.h:114
 AliVZEROTriggerData.h:115
 AliVZEROTriggerData.h:116
 AliVZEROTriggerData.h:117
 AliVZEROTriggerData.h:118
 AliVZEROTriggerData.h:119
 AliVZEROTriggerData.h:120
 AliVZEROTriggerData.h:121
 AliVZEROTriggerData.h:122
 AliVZEROTriggerData.h:123
 AliVZEROTriggerData.h:124
 AliVZEROTriggerData.h:125
 AliVZEROTriggerData.h:126
 AliVZEROTriggerData.h:127
 AliVZEROTriggerData.h:128
 AliVZEROTriggerData.h:129
 AliVZEROTriggerData.h:130
 AliVZEROTriggerData.h:131
 AliVZEROTriggerData.h:132
 AliVZEROTriggerData.h:133
 AliVZEROTriggerData.h:134
 AliVZEROTriggerData.h:135
 AliVZEROTriggerData.h:136
 AliVZEROTriggerData.h:137
 AliVZEROTriggerData.h:138
 AliVZEROTriggerData.h:139
 AliVZEROTriggerData.h:140
 AliVZEROTriggerData.h:141
 AliVZEROTriggerData.h:142
 AliVZEROTriggerData.h:143
 AliVZEROTriggerData.h:144
 AliVZEROTriggerData.h:145
 AliVZEROTriggerData.h:146
 AliVZEROTriggerData.h:147
 AliVZEROTriggerData.h:148
 AliVZEROTriggerData.h:149
 AliVZEROTriggerData.h:150
 AliVZEROTriggerData.h:151
 AliVZEROTriggerData.h:152
 AliVZEROTriggerData.h:153
 AliVZEROTriggerData.h:154
 AliVZEROTriggerData.h:155
 AliVZEROTriggerData.h:156
 AliVZEROTriggerData.h:157
 AliVZEROTriggerData.h:158
 AliVZEROTriggerData.h:159
 AliVZEROTriggerData.h:160
 AliVZEROTriggerData.h:161
 AliVZEROTriggerData.h:162
 AliVZEROTriggerData.h:163
 AliVZEROTriggerData.h:164
 AliVZEROTriggerData.h:165
 AliVZEROTriggerData.h:166
 AliVZEROTriggerData.h:167
 AliVZEROTriggerData.h:168
 AliVZEROTriggerData.h:169
 AliVZEROTriggerData.h:170
 AliVZEROTriggerData.h:171
 AliVZEROTriggerData.h:172
 AliVZEROTriggerData.h:173
 AliVZEROTriggerData.h:174
 AliVZEROTriggerData.h:175
 AliVZEROTriggerData.h:176
 AliVZEROTriggerData.h:177
 AliVZEROTriggerData.h:178
 AliVZEROTriggerData.h:179
 AliVZEROTriggerData.h:180
 AliVZEROTriggerData.h:181
 AliVZEROTriggerData.h:182
 AliVZEROTriggerData.h:183
 AliVZEROTriggerData.h:184
 AliVZEROTriggerData.h:185
 AliVZEROTriggerData.h:186
 AliVZEROTriggerData.h:187
 AliVZEROTriggerData.h:188
 AliVZEROTriggerData.h:189
 AliVZEROTriggerData.h:190
 AliVZEROTriggerData.h:191
 AliVZEROTriggerData.h:192
 AliVZEROTriggerData.h:193
 AliVZEROTriggerData.h:194
 AliVZEROTriggerData.h:195
 AliVZEROTriggerData.h:196
 AliVZEROTriggerData.h:197
 AliVZEROTriggerData.h:198
 AliVZEROTriggerData.h:199
 AliVZEROTriggerData.h:200
 AliVZEROTriggerData.h:201
 AliVZEROTriggerData.h:202
 AliVZEROTriggerData.h:203
 AliVZEROTriggerData.h:204
 AliVZEROTriggerData.h:205
 AliVZEROTriggerData.h:206
 AliVZEROTriggerData.h:207
 AliVZEROTriggerData.h:208
 AliVZEROTriggerData.h:209
 AliVZEROTriggerData.h:210
 AliVZEROTriggerData.h:211
 AliVZEROTriggerData.h:212
 AliVZEROTriggerData.h:213
 AliVZEROTriggerData.h:214
 AliVZEROTriggerData.h:215
 AliVZEROTriggerData.h:216
 AliVZEROTriggerData.h:217
 AliVZEROTriggerData.h:218
 AliVZEROTriggerData.h:219
 AliVZEROTriggerData.h:220
 AliVZEROTriggerData.h:221
 AliVZEROTriggerData.h:222
 AliVZEROTriggerData.h:223
 AliVZEROTriggerData.h:224