ROOT logo
#ifndef ALIVZEROTRIGGERSIMULATOR_H
#define ALIVZEROTRIGGERSIMULATOR_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights
 * reserved. 
 *
 * See cxx source for full Copyright notice                               
 */
// 
// Class AliVZEROTriggerSimulator
// ------------------------------
//  Simulate the VZERO Trigger response
// Use FEE parameters stored in Database
// Can work on real data or in simulation
//

#include <TObject.h>

#include "AliVZEROTriggerData.h"

class AliVZEROLogicalSignal;
class TTree;
class TClonesArray;

class AliVZEROTriggerSimulator : public TObject {
public:
	AliVZEROTriggerSimulator();
	AliVZEROTriggerSimulator(TTree * digitsTree, TClonesArray* digits);
	~AliVZEROTriggerSimulator();
	
	AliVZEROTriggerData * GetTriggerData() const {return fTriggerData;};
	
	Bool_t GetBBAandBBC() const		{return (fTriggerWord & 0x1);};
	Bool_t GetBBAorBBC() const		{return (fTriggerWord>>1 & 0x1);};
	Bool_t GetBGAandBBC() const		{return (fTriggerWord>>2 & 0x1);};
	Bool_t GetBGA() const			{return (fTriggerWord>>3 & 0x1);};
	Bool_t GetBGCandBBA() const		{return (fTriggerWord>>4 & 0x1);};
	Bool_t GetBGC() const			{return (fTriggerWord>>5 & 0x1);};
	Bool_t GetCTA1andCTC1() const	{return (fTriggerWord>>6 & 0x1);};
	Bool_t GetCTA1orCTC1() const	{return (fTriggerWord>>7 & 0x1);};
	Bool_t GetCTA2andCTC2() const	{return (fTriggerWord>>8 & 0x1);};
	Bool_t GetCTA2orCTC2() const	{return (fTriggerWord>>9 & 0x1);};
	Bool_t GetMTAandMTC() const		{return (fTriggerWord>>10 & 0x1);};
	Bool_t GetMTAorMTC() const		{return (fTriggerWord>>11 & 0x1);};
	Bool_t GetBBA() const			{return (fTriggerWord>>12 & 0x1);};
	Bool_t GetBBC() const			{return (fTriggerWord>>13 & 0x1);};
	Bool_t GetBGAorBGC() const		{return (fTriggerWord>>14 & 0x1);};
	Bool_t GetBeamGas() const		{return (fTriggerWord>>15 & 0x1);};
	
	void SetBBAandBBC()		{ (fTriggerWord += 0x1);};
	void SetBBAorBBC()		{ (fTriggerWord += 0x1<<1);};
	void SetBGAandBBC()		{ (fTriggerWord += 0x1<<2);};
	void SetBGA()			{ (fTriggerWord += 0x1<<3);};
	void SetBGCandBBA()		{ (fTriggerWord += 0x1<<4);};
	void SetBGC()			{ (fTriggerWord += 0x1<<5);};
	void SetCTA1andCTC1()	{ (fTriggerWord += 0x1<<6);};
	void SetCTA1orCTC1()	{ (fTriggerWord += 0x1<<7);};
	void SetCTA2andCTC2()	{ (fTriggerWord += 0x1<<8);};
	void SetCTA2orCTC2()	{ (fTriggerWord += 0x1<<9);};
	void SetMTAandMTC()		{ (fTriggerWord += 0x1<<10);};
	void SetMTAorMTC()		{ (fTriggerWord += 0x1<<11);};	
	void SetBBA()			{ (fTriggerWord += 0x1<<12);};
	void SetBBC()			{ (fTriggerWord += 0x1<<13);};
	void SetBGAorBGC()		{ (fTriggerWord += 0x1<<14);};
	void SetBeamGas()		{ (fTriggerWord += 0x1<<15);};
	
	void Run();
	virtual void Print(Option_t* /* opt */) const;
	
private:
	// Private methods
	AliVZEROTriggerSimulator(const AliVZEROTriggerSimulator &/*triggerSim*/);
	AliVZEROTriggerSimulator& operator= (const AliVZEROTriggerSimulator & /*triggerSim*/);
	AliVZEROTriggerData * LoadTriggerData() const ;
	void                  LoadClockOffset();
	void GenerateBBWindows();
	void GenerateBGWindows();
	Bool_t AreGatesOpen() const;
	
	// Members
	AliVZEROLogicalSignal * fBBGate[AliVZEROTriggerData::kNCIUBoards];  // BB Observation window
	AliVZEROLogicalSignal * fBBLatch[AliVZEROTriggerData::kNCIUBoards]; // BB Latch window
	AliVZEROLogicalSignal * fBBReset[AliVZEROTriggerData::kNCIUBoards]; // BB Reset Window
	
	AliVZEROLogicalSignal * fBGGate[AliVZEROTriggerData::kNCIUBoards];  // BG Observation window
	AliVZEROLogicalSignal * fBGLatch[AliVZEROTriggerData::kNCIUBoards]; // BG Latch Window
	AliVZEROLogicalSignal * fBGReset[AliVZEROTriggerData::kNCIUBoards]; // BG Reset Window

	AliVZEROTriggerData *fTriggerData; // Object holding the trigger configuration parameters
	Float_t fClockOffset[AliVZEROTriggerData::kNCIUBoards]; // TDC clock offset including roll-over, trig count and L0->L1 delay
	
	TTree* fDigitsTree; //Pointer to VZERO digit tree
	TClonesArray* fDigits; //Pointer to VZERO digit array
	
	Bool_t fBBFlags[64]; // Individual BB Flags
	Bool_t fBGFlags[64]; // Individual BG Flags
	Float_t  fCharges[64]; // Individual Charge
	
	UShort_t fTriggerWord; // Word holding the 16 triggers return by the FEE
		
	ClassDef( AliVZEROTriggerSimulator, 3 )  

};


#endif // ALIVZEROTRIGGERSIMULATOR_H


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