ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/
// 
// Class AliVZEROTriggerSimulator
// ------------------------------
//  Simulate the VZERO Trigger response
// Use FEE parameters stored in Database
// Can work on real data or in simulation
//

#include <TTree.h>
#include <TClonesArray.h>
#include <TParameter.h>

#include "AliLog.h"
#include "AliCDBManager.h"
#include "AliCDBEntry.h"
#include "AliCDBStorage.h"
#include "AliCDBId.h"
#include "AliVZEROTriggerData.h"
#include "AliVZEROLogicalSignal.h"
#include "AliVZEROTriggerSimulator.h"
#include "AliVZEROdigit.h"
#include "AliVZEROCalibData.h"
#include "AliVZEROConst.h"
#include "AliCTPTimeParams.h"

ClassImp(AliVZEROTriggerSimulator)

//_____________________________________________________________________________
AliVZEROTriggerSimulator::AliVZEROTriggerSimulator(TTree * digitsTree, TClonesArray* digits) : 
TObject(),fTriggerData(NULL),fDigitsTree(digitsTree),fDigits(digits),fTriggerWord(0)
{
	// constructor
	fTriggerData = LoadTriggerData();
	LoadClockOffset();
	
	for(int i=0;i<64;i++) {
		fBBFlags[i] = fBGFlags[i] = kFALSE;
		fCharges[i] = 0.;
	}
	GenerateBBWindows();
	GenerateBGWindows();
	for (int i=0; i<AliVZEROTriggerData::kNCIUBoards; i++) {
		fBBLatch[i] = new AliVZEROLogicalSignal(fTriggerData->GetLatchWin1(i),0); 
		fBGLatch[i] = new AliVZEROLogicalSignal(fTriggerData->GetLatchWin2(i),0); 
		fBBReset[i] = new AliVZEROLogicalSignal(fTriggerData->GetResetWin1(i),0);
		fBGReset[i] = new AliVZEROLogicalSignal(fTriggerData->GetResetWin2(i),0);		
	}
}
//_____________________________________________________________________________
AliVZEROTriggerSimulator::AliVZEROTriggerSimulator() : 
TObject(),fTriggerData(NULL),fDigitsTree(NULL),fDigits(NULL),fTriggerWord(0)
{
	// Default constructor
	fTriggerData = LoadTriggerData();
	LoadClockOffset();

	for(int i=0;i<64;i++) {
		fBBFlags[i] = fBGFlags[i] = kFALSE;
		fCharges[i] = 0;
	}
	GenerateBBWindows();
	GenerateBGWindows();
	for (int i=0; i<AliVZEROTriggerData::kNCIUBoards; i++) {
		fBBLatch[i] = new AliVZEROLogicalSignal(fTriggerData->GetLatchWin1(i),0); 
		fBGLatch[i] = new AliVZEROLogicalSignal(fTriggerData->GetLatchWin2(i),0); 
		fBBReset[i] = new AliVZEROLogicalSignal(fTriggerData->GetResetWin1(i),0);
		fBGReset[i] = new AliVZEROLogicalSignal(fTriggerData->GetResetWin2(i),0);		
	}
}

//_____________________________________________________________________________
AliVZEROTriggerSimulator::~AliVZEROTriggerSimulator(){
// Destructor
  for (Int_t i=0; i<AliVZEROTriggerData::kNCIUBoards; i++) {
    delete fBBGate[i];
    delete fBGGate[i];
    delete fBBLatch[i];
    delete fBBReset[i];
    delete fBGLatch[i];
    delete fBGReset[i];
  }
}

//_____________________________________________________________________________
void AliVZEROTriggerSimulator::GenerateBBWindows() 
{
  // Generates the BB observation window
  // In case gates are open the windows are equal to 25ns
  if (AreGatesOpen()) {
	for (int i=0; i<AliVZEROTriggerData::kNCIUBoards; i++) {
	        fBBGate[i] = new AliVZEROLogicalSignal();
		fBBGate[i]->SetStartTime(0.);
		fBBGate[i]->SetStopTime(25.0);
	}    
  }
  else {
	for (int i=0; i<AliVZEROTriggerData::kNCIUBoards; i++) {
		AliVZEROLogicalSignal clk1BB(fTriggerData->GetClk1Win1(i),fTriggerData->GetDelayClk1Win1(i));
		AliVZEROLogicalSignal clk2BB(fTriggerData->GetClk2Win1(i),fTriggerData->GetDelayClk2Win1(i));
		fBBGate[i] = new AliVZEROLogicalSignal(clk1BB & clk2BB);
	}
  }
}
//_____________________________________________________________________________
void AliVZEROTriggerSimulator::GenerateBGWindows() 
{
  // Generates the BG observation window
  // In case gates are open the windows are equal to 25ns
  if (AreGatesOpen()) {
	for (int i=0; i<AliVZEROTriggerData::kNCIUBoards; i++) {
	        fBGGate[i] = new AliVZEROLogicalSignal();
		fBGGate[i]->SetStartTime(0.);
		fBGGate[i]->SetStopTime(25.0);
	}    
  }
  else {
	for (int i=0; i<AliVZEROTriggerData::kNCIUBoards; i++) {
		AliVZEROLogicalSignal clk1BG(fTriggerData->GetClk1Win2(i),fTriggerData->GetDelayClk1Win2(i));
		AliVZEROLogicalSignal clk2BG(fTriggerData->GetClk2Win2(i),fTriggerData->GetDelayClk2Win2(i));
		fBGGate[i] = new AliVZEROLogicalSignal(clk1BG & clk2BG);
		// In VZERO-A we have a shift by -25ns which is controlled by
		// 'Delay Win2' = 7 instead of default 6.
		// The flag is not stored in OCDB so we have manually shift the
		// trigger windows
		if (i < 4) {
		  fBGGate[i]->SetStartTime(fBGGate[i]->GetStartTime()-25.0);
		  fBGGate[i]->SetStopTime(fBGGate[i]->GetStopTime()-25.0);
		}
	}
  }
}

//_____________________________________________________________________________
AliVZEROTriggerData * AliVZEROTriggerSimulator::LoadTriggerData() const 
{
	// Gets Trigger object for VZERO set
        AliDebug(1,"Loading Trigger parameters");
	AliCDBManager *man = AliCDBManager::Instance();
	
	
	AliCDBEntry *entry=0;
	
	entry = man->Get("VZERO/Trigger/Data");
	if(!entry){
		AliFatal("Load of trigger calibration data from default storage failed!");
		return NULL;
	}
	
	// Retrieval of data in directory VZERO/Calib/Trigger:
	
	AliVZEROTriggerData *triggerData = NULL;
	
	if (entry) triggerData = (AliVZEROTriggerData*) entry->GetObject();
	if (!triggerData)  AliError("No Trigger data from database !");
	
	return triggerData;
}


//_____________________________________________________________________________
void AliVZEROTriggerSimulator::LoadClockOffset()
{
  // This method is used in order to
  // retrieve the TDC clock offset including
  // roll-over, trig count and CTP L0->L1 delay

  AliCDBEntry *entry0 = AliCDBManager::Instance()->Get("VZERO/Calib/Data");
  if (!entry0) {
    AliFatal("V0 Calib object is not found in OCDB !");
    return;
  }
  AliVZEROCalibData *calibdata = (AliVZEROCalibData*) entry0->GetObject();

  AliCDBEntry *entry = AliCDBManager::Instance()->Get("GRP/CTP/CTPtiming");
  if (!entry) {
    AliFatal("CTP timing parameters are not found in OCDB !");
    return;
  }
  AliCTPTimeParams *ctpParams = (AliCTPTimeParams*)entry->GetObject();
  Float_t l1Delay = (Float_t)ctpParams->GetDelayL1L0()*25.0;

  AliCDBEntry *entry1 = AliCDBManager::Instance()->Get("GRP/CTP/TimeAlign");
  if (!entry1) {
    AliFatal("CTP time-alignment is not found in OCDB !");
    return;
  }
  AliCTPTimeParams *ctpTimeAlign = (AliCTPTimeParams*)entry1->GetObject();
  l1Delay += ((Float_t)ctpTimeAlign->GetDelayL1L0()*25.0);

  for(Int_t board = 0; board < AliVZEROTriggerData::kNCIUBoards; ++board) {
    fClockOffset[board] = (((Float_t)calibdata->GetRollOver(board)-
			    (Float_t)calibdata->GetTriggerCountOffset(board))*25.0-
			   l1Delay+
			   kV0Offset);
    AliDebug(1,Form("Board %d Offset %f",board,fClockOffset[board]));
  }
}

//_____________________________________________________________________________
void AliVZEROTriggerSimulator::Run() {
	//AliInfo("Generating VZERO Triggers");
	
	// Loop over VZERO entries
	Int_t nEntries = (Int_t)fDigitsTree->GetEntries();
	for (Int_t ievt=0; ievt<nEntries; ievt++) {
		fDigitsTree->GetEvent(ievt);
		
		Int_t nDigits = fDigits->GetEntriesFast();
		
		for (Int_t iDigit=0; iDigit<nDigits; iDigit++) {
			AliVZEROdigit* digit = (AliVZEROdigit*)fDigits->At(iDigit);
			
			Int_t integrator = digit->Integrator();
			Int_t pmNumber   = digit->PMNumber();
			Int_t board   = AliVZEROCalibData::GetBoardNumber(pmNumber);
			Int_t channel = AliVZEROCalibData::GetFEEChannelNumber(pmNumber);
			if (board < 0 || channel < 0) continue;
			
			if(fTriggerData->GetEnableCharge(board,channel)) {
				fCharges[pmNumber] = digit->ChargeADC(AliVZEROdigit::kNClocks/2);
				if(fTriggerData->GetPedestalSubtraction(board)) {
					if(fCharges[pmNumber]>=(Float_t) fTriggerData->GetPedestalCut(integrator,board,channel)){ 
						fCharges[pmNumber] -= (Float_t) fTriggerData->GetPedestal(integrator,board,channel);
					} else {
						fCharges[pmNumber] = 0.;
					}
				}
			} else {
				fCharges[pmNumber] = 0.;
			}
			
			Float_t time = digit->Time();
			time -= fClockOffset[board];

			AliDebug(10,Form(" Digit: %f %d %d %d %d %d %d %d %d",digit->Time(),
					 digit->ChargeADC(8),digit->ChargeADC(9),digit->ChargeADC(10),
					 digit->ChargeADC(11),digit->ChargeADC(12),digit->ChargeADC(13),
					 digit->ChargeADC(14),digit->ChargeADC(15)));
			AliDebug(10,Form(" PM nb : %d ; TDC= %f(%f)  Enable Time %d charge %d inCoin %d charge %f",
					 pmNumber,time,digit->Time(),
					 fTriggerData->GetEnableTiming(board,channel),fTriggerData->GetEnableCharge(board,channel),
					 fBBGate[board]->IsInCoincidence(time),fCharges[pmNumber]));
			fBBFlags[pmNumber] = fTriggerData->GetEnableTiming(board,channel) && fBBGate[board]->IsInCoincidence(time);
			fBGFlags[pmNumber] = fTriggerData->GetEnableTiming(board,channel) && fBGGate[board]->IsInCoincidence(time);
			
		} // end of loop over digits
	} // end of loop over events in digits tree
	
	Int_t nBBflagsV0A = 0;
	Int_t nBBflagsV0C = 0;
	Int_t nBGflagsV0A = 0;
	Int_t nBGflagsV0C = 0;
	Float_t chargeV0A   = 0.;
	Float_t chargeV0C   = 0.;
	Int_t aBBflagsV0A = 0;
	Int_t aBBflagsV0C = 0;
	Int_t aBGflagsV0A = 0;
	Int_t aBGflagsV0C = 0;

	for(int i=0;i<64;i++) {
		if(i<32) {
			nBBflagsV0C += fBBFlags[i]; 
			nBGflagsV0C += fBGFlags[i];
			chargeV0C += fCharges[i];
			if (fBBFlags[i]) aBBflagsV0C |= (1 << i);
			if (fBGFlags[i]) aBGflagsV0C |= (1 << i);
		} else {
			nBBflagsV0A += fBBFlags[i]; 
			nBGflagsV0A += fBGFlags[i];
			chargeV0A += fCharges[i];
			if (fBBFlags[i]) aBBflagsV0A |= (1 << (i-32));
			if (fBGFlags[i]) aBGflagsV0A |= (1 << (i-32));
		}
		//AliInfo(Form("Ch %d BB=%d BG=%d",i,fBBFlags[i],fBGFlags[i] )); 
	}

	// Store the BB and BG flags in the digits tree (user info)
	fDigitsTree->GetUserInfo()->Add(new TParameter<int>("BBflagsV0A",aBBflagsV0A));
	fDigitsTree->GetUserInfo()->Add(new TParameter<int>("BBflagsV0C",aBBflagsV0C));
	fDigitsTree->GetUserInfo()->Add(new TParameter<int>("BGflagsV0A",aBGflagsV0A));
	fDigitsTree->GetUserInfo()->Add(new TParameter<int>("BGflagsV0C",aBGflagsV0C));
	
	// BBA
	if(nBBflagsV0A>=fTriggerData->GetBBAThreshold())  SetBBA();
	
	// BBC
	if(nBBflagsV0C>=fTriggerData->GetBBCThreshold())  SetBBC();

	// BBA_AND_BBC
	if(GetBBA() && GetBBC())  SetBBAandBBC();
	
	// BBA_OR_BBC
	if(GetBBA() || GetBBC()) SetBBAorBBC();

	// BGA
	if(nBGflagsV0A>=fTriggerData->GetBGAThreshold()) SetBGA();

	// BGC
	if(nBGflagsV0C>=fTriggerData->GetBGCThreshold()) SetBGC();
	
	// BGA_AND_BBC (Beam Gas from RB24 side)
	if(nBBflagsV0C>=fTriggerData->GetBBCForBGThreshold() && GetBGA()) SetBGAandBBC();
	
	// BGC_AND_BBA (Beam Gas from RB26 side)
	if(nBBflagsV0A>=fTriggerData->GetBBAForBGThreshold() && GetBGC()) SetBGCandBBA();

	// CTA1_AND_CTC1 (Centrality trigger 1)
	if(chargeV0A>=fTriggerData->GetCentralityV0AThrLow() && chargeV0C>=fTriggerData->GetCentralityV0CThrLow()) SetCTA1andCTC1();

	// CTA1_OR_CTC1 (Centrality trigger 1)
	if(chargeV0A>=fTriggerData->GetCentralityV0AThrLow() || chargeV0C>=fTriggerData->GetCentralityV0CThrLow()) SetCTA1orCTC1();
	
	// CTA2_AND_CTC2 (Centrality trigger 2)
	if(chargeV0A>=fTriggerData->GetCentralityV0AThrHigh() && chargeV0C>=fTriggerData->GetCentralityV0CThrHigh()) SetCTA2andCTC2();
	
	// CTA2_OR_CTC2 (Centrality trigger 2)
	if(chargeV0A>=fTriggerData->GetCentralityV0AThrHigh() || chargeV0C>=fTriggerData->GetCentralityV0CThrHigh()) SetCTA2orCTC2();
	
	// MTA_AND_MTC (Multiplicity Trigger)
	if((nBBflagsV0A<=fTriggerData->GetMultV0AThrHigh() && nBBflagsV0A>=fTriggerData->GetMultV0AThrLow())
	   && (nBBflagsV0C<=fTriggerData->GetMultV0CThrHigh() && nBBflagsV0C>=fTriggerData->GetMultV0CThrLow()) ) 
		SetMTAandMTC();
	
	// MTA_OR_MTC (Multiplicity Trigger)
	if((nBBflagsV0A<=fTriggerData->GetMultV0AThrHigh() && nBBflagsV0A>=fTriggerData->GetMultV0AThrLow())
	   || (nBBflagsV0C<=fTriggerData->GetMultV0CThrHigh() && nBBflagsV0C>=fTriggerData->GetMultV0CThrLow()) ) 
		SetMTAorMTC();
	
	// BGA_OR_BGC
	if(GetBGA() || GetBGC()) SetBGAorBGC();
	
	// (BGA and BBC) or (BGC and BBA) (Beam Gas from one of the two sides)
	if(GetBGAandBBC() || GetBGCandBBA()) SetBeamGas();

//	AliInfo(Form("BB Flags : V0A = %d  V0C = %d ",nBBflagsV0A, nBBflagsV0C )); 
//	AliInfo(Form("BG Flags : V0A = %d  V0C = %d ",nBGflagsV0A, nBGflagsV0C )); 
//	AliInfo(Form("Charges  : V0A = %d  V0C = %d ",chargeV0A, chargeV0C )); 
	
}

//_____________________________________________________________________________
Bool_t AliVZEROTriggerSimulator::AreGatesOpen() const {
  // The method check if the gates are suppossed to be open
  // (corresponding to 'Test Window' flag in DCS).
  // Since the flag is not stored in OCDB, we just check if
  // all the clock delays are 0 or not.
  // This rules should be followed when setting up the detector
  // at the level of DCS

  for (int i=0; i<AliVZEROTriggerData::kNCIUBoards; i++) {
    if (fTriggerData->GetDelayClk1Win1(i)!=0 ||
	fTriggerData->GetDelayClk2Win1(i)!=0 ||
	fTriggerData->GetDelayClk1Win2(i)!=0 ||
	fTriggerData->GetDelayClk2Win2(i)!=0)
      return kFALSE;
  }
  return kTRUE;
}

//_____________________________________________________________________________
void AliVZEROTriggerSimulator::Print(Option_t* /* opt */) const
{
  // Prints the trigger windows as
  // initialized from the OCDB
  for (int i=0; i<AliVZEROTriggerData::kNCIUBoards; i++) {
    std::cout << "Board=" << i << "   BB (" << fBBGate[i]->GetStartTime() << " -> " << fBBGate[i]->GetStopTime() << ")   BG (" << fBGGate[i]->GetStartTime() << " -> " << fBGGate[i]->GetStopTime() << ")" << std::endl;
  }
  std::cout << std::endl;
}


 AliVZEROTriggerSimulator.cxx:1
 AliVZEROTriggerSimulator.cxx:2
 AliVZEROTriggerSimulator.cxx:3
 AliVZEROTriggerSimulator.cxx:4
 AliVZEROTriggerSimulator.cxx:5
 AliVZEROTriggerSimulator.cxx:6
 AliVZEROTriggerSimulator.cxx:7
 AliVZEROTriggerSimulator.cxx:8
 AliVZEROTriggerSimulator.cxx:9
 AliVZEROTriggerSimulator.cxx:10
 AliVZEROTriggerSimulator.cxx:11
 AliVZEROTriggerSimulator.cxx:12
 AliVZEROTriggerSimulator.cxx:13
 AliVZEROTriggerSimulator.cxx:14
 AliVZEROTriggerSimulator.cxx:15
 AliVZEROTriggerSimulator.cxx:16
 AliVZEROTriggerSimulator.cxx:17
 AliVZEROTriggerSimulator.cxx:18
 AliVZEROTriggerSimulator.cxx:19
 AliVZEROTriggerSimulator.cxx:20
 AliVZEROTriggerSimulator.cxx:21
 AliVZEROTriggerSimulator.cxx:22
 AliVZEROTriggerSimulator.cxx:23
 AliVZEROTriggerSimulator.cxx:24
 AliVZEROTriggerSimulator.cxx:25
 AliVZEROTriggerSimulator.cxx:26
 AliVZEROTriggerSimulator.cxx:27
 AliVZEROTriggerSimulator.cxx:28
 AliVZEROTriggerSimulator.cxx:29
 AliVZEROTriggerSimulator.cxx:30
 AliVZEROTriggerSimulator.cxx:31
 AliVZEROTriggerSimulator.cxx:32
 AliVZEROTriggerSimulator.cxx:33
 AliVZEROTriggerSimulator.cxx:34
 AliVZEROTriggerSimulator.cxx:35
 AliVZEROTriggerSimulator.cxx:36
 AliVZEROTriggerSimulator.cxx:37
 AliVZEROTriggerSimulator.cxx:38
 AliVZEROTriggerSimulator.cxx:39
 AliVZEROTriggerSimulator.cxx:40
 AliVZEROTriggerSimulator.cxx:41
 AliVZEROTriggerSimulator.cxx:42
 AliVZEROTriggerSimulator.cxx:43
 AliVZEROTriggerSimulator.cxx:44
 AliVZEROTriggerSimulator.cxx:45
 AliVZEROTriggerSimulator.cxx:46
 AliVZEROTriggerSimulator.cxx:47
 AliVZEROTriggerSimulator.cxx:48
 AliVZEROTriggerSimulator.cxx:49
 AliVZEROTriggerSimulator.cxx:50
 AliVZEROTriggerSimulator.cxx:51
 AliVZEROTriggerSimulator.cxx:52
 AliVZEROTriggerSimulator.cxx:53
 AliVZEROTriggerSimulator.cxx:54
 AliVZEROTriggerSimulator.cxx:55
 AliVZEROTriggerSimulator.cxx:56
 AliVZEROTriggerSimulator.cxx:57
 AliVZEROTriggerSimulator.cxx:58
 AliVZEROTriggerSimulator.cxx:59
 AliVZEROTriggerSimulator.cxx:60
 AliVZEROTriggerSimulator.cxx:61
 AliVZEROTriggerSimulator.cxx:62
 AliVZEROTriggerSimulator.cxx:63
 AliVZEROTriggerSimulator.cxx:64
 AliVZEROTriggerSimulator.cxx:65
 AliVZEROTriggerSimulator.cxx:66
 AliVZEROTriggerSimulator.cxx:67
 AliVZEROTriggerSimulator.cxx:68
 AliVZEROTriggerSimulator.cxx:69
 AliVZEROTriggerSimulator.cxx:70
 AliVZEROTriggerSimulator.cxx:71
 AliVZEROTriggerSimulator.cxx:72
 AliVZEROTriggerSimulator.cxx:73
 AliVZEROTriggerSimulator.cxx:74
 AliVZEROTriggerSimulator.cxx:75
 AliVZEROTriggerSimulator.cxx:76
 AliVZEROTriggerSimulator.cxx:77
 AliVZEROTriggerSimulator.cxx:78
 AliVZEROTriggerSimulator.cxx:79
 AliVZEROTriggerSimulator.cxx:80
 AliVZEROTriggerSimulator.cxx:81
 AliVZEROTriggerSimulator.cxx:82
 AliVZEROTriggerSimulator.cxx:83
 AliVZEROTriggerSimulator.cxx:84
 AliVZEROTriggerSimulator.cxx:85
 AliVZEROTriggerSimulator.cxx:86
 AliVZEROTriggerSimulator.cxx:87
 AliVZEROTriggerSimulator.cxx:88
 AliVZEROTriggerSimulator.cxx:89
 AliVZEROTriggerSimulator.cxx:90
 AliVZEROTriggerSimulator.cxx:91
 AliVZEROTriggerSimulator.cxx:92
 AliVZEROTriggerSimulator.cxx:93
 AliVZEROTriggerSimulator.cxx:94
 AliVZEROTriggerSimulator.cxx:95
 AliVZEROTriggerSimulator.cxx:96
 AliVZEROTriggerSimulator.cxx:97
 AliVZEROTriggerSimulator.cxx:98
 AliVZEROTriggerSimulator.cxx:99
 AliVZEROTriggerSimulator.cxx:100
 AliVZEROTriggerSimulator.cxx:101
 AliVZEROTriggerSimulator.cxx:102
 AliVZEROTriggerSimulator.cxx:103
 AliVZEROTriggerSimulator.cxx:104
 AliVZEROTriggerSimulator.cxx:105
 AliVZEROTriggerSimulator.cxx:106
 AliVZEROTriggerSimulator.cxx:107
 AliVZEROTriggerSimulator.cxx:108
 AliVZEROTriggerSimulator.cxx:109
 AliVZEROTriggerSimulator.cxx:110
 AliVZEROTriggerSimulator.cxx:111
 AliVZEROTriggerSimulator.cxx:112
 AliVZEROTriggerSimulator.cxx:113
 AliVZEROTriggerSimulator.cxx:114
 AliVZEROTriggerSimulator.cxx:115
 AliVZEROTriggerSimulator.cxx:116
 AliVZEROTriggerSimulator.cxx:117
 AliVZEROTriggerSimulator.cxx:118
 AliVZEROTriggerSimulator.cxx:119
 AliVZEROTriggerSimulator.cxx:120
 AliVZEROTriggerSimulator.cxx:121
 AliVZEROTriggerSimulator.cxx:122
 AliVZEROTriggerSimulator.cxx:123
 AliVZEROTriggerSimulator.cxx:124
 AliVZEROTriggerSimulator.cxx:125
 AliVZEROTriggerSimulator.cxx:126
 AliVZEROTriggerSimulator.cxx:127
 AliVZEROTriggerSimulator.cxx:128
 AliVZEROTriggerSimulator.cxx:129
 AliVZEROTriggerSimulator.cxx:130
 AliVZEROTriggerSimulator.cxx:131
 AliVZEROTriggerSimulator.cxx:132
 AliVZEROTriggerSimulator.cxx:133
 AliVZEROTriggerSimulator.cxx:134
 AliVZEROTriggerSimulator.cxx:135
 AliVZEROTriggerSimulator.cxx:136
 AliVZEROTriggerSimulator.cxx:137
 AliVZEROTriggerSimulator.cxx:138
 AliVZEROTriggerSimulator.cxx:139
 AliVZEROTriggerSimulator.cxx:140
 AliVZEROTriggerSimulator.cxx:141
 AliVZEROTriggerSimulator.cxx:142
 AliVZEROTriggerSimulator.cxx:143
 AliVZEROTriggerSimulator.cxx:144
 AliVZEROTriggerSimulator.cxx:145
 AliVZEROTriggerSimulator.cxx:146
 AliVZEROTriggerSimulator.cxx:147
 AliVZEROTriggerSimulator.cxx:148
 AliVZEROTriggerSimulator.cxx:149
 AliVZEROTriggerSimulator.cxx:150
 AliVZEROTriggerSimulator.cxx:151
 AliVZEROTriggerSimulator.cxx:152
 AliVZEROTriggerSimulator.cxx:153
 AliVZEROTriggerSimulator.cxx:154
 AliVZEROTriggerSimulator.cxx:155
 AliVZEROTriggerSimulator.cxx:156
 AliVZEROTriggerSimulator.cxx:157
 AliVZEROTriggerSimulator.cxx:158
 AliVZEROTriggerSimulator.cxx:159
 AliVZEROTriggerSimulator.cxx:160
 AliVZEROTriggerSimulator.cxx:161
 AliVZEROTriggerSimulator.cxx:162
 AliVZEROTriggerSimulator.cxx:163
 AliVZEROTriggerSimulator.cxx:164
 AliVZEROTriggerSimulator.cxx:165
 AliVZEROTriggerSimulator.cxx:166
 AliVZEROTriggerSimulator.cxx:167
 AliVZEROTriggerSimulator.cxx:168
 AliVZEROTriggerSimulator.cxx:169
 AliVZEROTriggerSimulator.cxx:170
 AliVZEROTriggerSimulator.cxx:171
 AliVZEROTriggerSimulator.cxx:172
 AliVZEROTriggerSimulator.cxx:173
 AliVZEROTriggerSimulator.cxx:174
 AliVZEROTriggerSimulator.cxx:175
 AliVZEROTriggerSimulator.cxx:176
 AliVZEROTriggerSimulator.cxx:177
 AliVZEROTriggerSimulator.cxx:178
 AliVZEROTriggerSimulator.cxx:179
 AliVZEROTriggerSimulator.cxx:180
 AliVZEROTriggerSimulator.cxx:181
 AliVZEROTriggerSimulator.cxx:182
 AliVZEROTriggerSimulator.cxx:183
 AliVZEROTriggerSimulator.cxx:184
 AliVZEROTriggerSimulator.cxx:185
 AliVZEROTriggerSimulator.cxx:186
 AliVZEROTriggerSimulator.cxx:187
 AliVZEROTriggerSimulator.cxx:188
 AliVZEROTriggerSimulator.cxx:189
 AliVZEROTriggerSimulator.cxx:190
 AliVZEROTriggerSimulator.cxx:191
 AliVZEROTriggerSimulator.cxx:192
 AliVZEROTriggerSimulator.cxx:193
 AliVZEROTriggerSimulator.cxx:194
 AliVZEROTriggerSimulator.cxx:195
 AliVZEROTriggerSimulator.cxx:196
 AliVZEROTriggerSimulator.cxx:197
 AliVZEROTriggerSimulator.cxx:198
 AliVZEROTriggerSimulator.cxx:199
 AliVZEROTriggerSimulator.cxx:200
 AliVZEROTriggerSimulator.cxx:201
 AliVZEROTriggerSimulator.cxx:202
 AliVZEROTriggerSimulator.cxx:203
 AliVZEROTriggerSimulator.cxx:204
 AliVZEROTriggerSimulator.cxx:205
 AliVZEROTriggerSimulator.cxx:206
 AliVZEROTriggerSimulator.cxx:207
 AliVZEROTriggerSimulator.cxx:208
 AliVZEROTriggerSimulator.cxx:209
 AliVZEROTriggerSimulator.cxx:210
 AliVZEROTriggerSimulator.cxx:211
 AliVZEROTriggerSimulator.cxx:212
 AliVZEROTriggerSimulator.cxx:213
 AliVZEROTriggerSimulator.cxx:214
 AliVZEROTriggerSimulator.cxx:215
 AliVZEROTriggerSimulator.cxx:216
 AliVZEROTriggerSimulator.cxx:217
 AliVZEROTriggerSimulator.cxx:218
 AliVZEROTriggerSimulator.cxx:219
 AliVZEROTriggerSimulator.cxx:220
 AliVZEROTriggerSimulator.cxx:221
 AliVZEROTriggerSimulator.cxx:222
 AliVZEROTriggerSimulator.cxx:223
 AliVZEROTriggerSimulator.cxx:224
 AliVZEROTriggerSimulator.cxx:225
 AliVZEROTriggerSimulator.cxx:226
 AliVZEROTriggerSimulator.cxx:227
 AliVZEROTriggerSimulator.cxx:228
 AliVZEROTriggerSimulator.cxx:229
 AliVZEROTriggerSimulator.cxx:230
 AliVZEROTriggerSimulator.cxx:231
 AliVZEROTriggerSimulator.cxx:232
 AliVZEROTriggerSimulator.cxx:233
 AliVZEROTriggerSimulator.cxx:234
 AliVZEROTriggerSimulator.cxx:235
 AliVZEROTriggerSimulator.cxx:236
 AliVZEROTriggerSimulator.cxx:237
 AliVZEROTriggerSimulator.cxx:238
 AliVZEROTriggerSimulator.cxx:239
 AliVZEROTriggerSimulator.cxx:240
 AliVZEROTriggerSimulator.cxx:241
 AliVZEROTriggerSimulator.cxx:242
 AliVZEROTriggerSimulator.cxx:243
 AliVZEROTriggerSimulator.cxx:244
 AliVZEROTriggerSimulator.cxx:245
 AliVZEROTriggerSimulator.cxx:246
 AliVZEROTriggerSimulator.cxx:247
 AliVZEROTriggerSimulator.cxx:248
 AliVZEROTriggerSimulator.cxx:249
 AliVZEROTriggerSimulator.cxx:250
 AliVZEROTriggerSimulator.cxx:251
 AliVZEROTriggerSimulator.cxx:252
 AliVZEROTriggerSimulator.cxx:253
 AliVZEROTriggerSimulator.cxx:254
 AliVZEROTriggerSimulator.cxx:255
 AliVZEROTriggerSimulator.cxx:256
 AliVZEROTriggerSimulator.cxx:257
 AliVZEROTriggerSimulator.cxx:258
 AliVZEROTriggerSimulator.cxx:259
 AliVZEROTriggerSimulator.cxx:260
 AliVZEROTriggerSimulator.cxx:261
 AliVZEROTriggerSimulator.cxx:262
 AliVZEROTriggerSimulator.cxx:263
 AliVZEROTriggerSimulator.cxx:264
 AliVZEROTriggerSimulator.cxx:265
 AliVZEROTriggerSimulator.cxx:266
 AliVZEROTriggerSimulator.cxx:267
 AliVZEROTriggerSimulator.cxx:268
 AliVZEROTriggerSimulator.cxx:269
 AliVZEROTriggerSimulator.cxx:270
 AliVZEROTriggerSimulator.cxx:271
 AliVZEROTriggerSimulator.cxx:272
 AliVZEROTriggerSimulator.cxx:273
 AliVZEROTriggerSimulator.cxx:274
 AliVZEROTriggerSimulator.cxx:275
 AliVZEROTriggerSimulator.cxx:276
 AliVZEROTriggerSimulator.cxx:277
 AliVZEROTriggerSimulator.cxx:278
 AliVZEROTriggerSimulator.cxx:279
 AliVZEROTriggerSimulator.cxx:280
 AliVZEROTriggerSimulator.cxx:281
 AliVZEROTriggerSimulator.cxx:282
 AliVZEROTriggerSimulator.cxx:283
 AliVZEROTriggerSimulator.cxx:284
 AliVZEROTriggerSimulator.cxx:285
 AliVZEROTriggerSimulator.cxx:286
 AliVZEROTriggerSimulator.cxx:287
 AliVZEROTriggerSimulator.cxx:288
 AliVZEROTriggerSimulator.cxx:289
 AliVZEROTriggerSimulator.cxx:290
 AliVZEROTriggerSimulator.cxx:291
 AliVZEROTriggerSimulator.cxx:292
 AliVZEROTriggerSimulator.cxx:293
 AliVZEROTriggerSimulator.cxx:294
 AliVZEROTriggerSimulator.cxx:295
 AliVZEROTriggerSimulator.cxx:296
 AliVZEROTriggerSimulator.cxx:297
 AliVZEROTriggerSimulator.cxx:298
 AliVZEROTriggerSimulator.cxx:299
 AliVZEROTriggerSimulator.cxx:300
 AliVZEROTriggerSimulator.cxx:301
 AliVZEROTriggerSimulator.cxx:302
 AliVZEROTriggerSimulator.cxx:303
 AliVZEROTriggerSimulator.cxx:304
 AliVZEROTriggerSimulator.cxx:305
 AliVZEROTriggerSimulator.cxx:306
 AliVZEROTriggerSimulator.cxx:307
 AliVZEROTriggerSimulator.cxx:308
 AliVZEROTriggerSimulator.cxx:309
 AliVZEROTriggerSimulator.cxx:310
 AliVZEROTriggerSimulator.cxx:311
 AliVZEROTriggerSimulator.cxx:312
 AliVZEROTriggerSimulator.cxx:313
 AliVZEROTriggerSimulator.cxx:314
 AliVZEROTriggerSimulator.cxx:315
 AliVZEROTriggerSimulator.cxx:316
 AliVZEROTriggerSimulator.cxx:317
 AliVZEROTriggerSimulator.cxx:318
 AliVZEROTriggerSimulator.cxx:319
 AliVZEROTriggerSimulator.cxx:320
 AliVZEROTriggerSimulator.cxx:321
 AliVZEROTriggerSimulator.cxx:322
 AliVZEROTriggerSimulator.cxx:323
 AliVZEROTriggerSimulator.cxx:324
 AliVZEROTriggerSimulator.cxx:325
 AliVZEROTriggerSimulator.cxx:326
 AliVZEROTriggerSimulator.cxx:327
 AliVZEROTriggerSimulator.cxx:328
 AliVZEROTriggerSimulator.cxx:329
 AliVZEROTriggerSimulator.cxx:330
 AliVZEROTriggerSimulator.cxx:331
 AliVZEROTriggerSimulator.cxx:332
 AliVZEROTriggerSimulator.cxx:333
 AliVZEROTriggerSimulator.cxx:334
 AliVZEROTriggerSimulator.cxx:335
 AliVZEROTriggerSimulator.cxx:336
 AliVZEROTriggerSimulator.cxx:337
 AliVZEROTriggerSimulator.cxx:338
 AliVZEROTriggerSimulator.cxx:339
 AliVZEROTriggerSimulator.cxx:340
 AliVZEROTriggerSimulator.cxx:341
 AliVZEROTriggerSimulator.cxx:342
 AliVZEROTriggerSimulator.cxx:343
 AliVZEROTriggerSimulator.cxx:344
 AliVZEROTriggerSimulator.cxx:345
 AliVZEROTriggerSimulator.cxx:346
 AliVZEROTriggerSimulator.cxx:347
 AliVZEROTriggerSimulator.cxx:348
 AliVZEROTriggerSimulator.cxx:349
 AliVZEROTriggerSimulator.cxx:350
 AliVZEROTriggerSimulator.cxx:351
 AliVZEROTriggerSimulator.cxx:352
 AliVZEROTriggerSimulator.cxx:353
 AliVZEROTriggerSimulator.cxx:354
 AliVZEROTriggerSimulator.cxx:355
 AliVZEROTriggerSimulator.cxx:356
 AliVZEROTriggerSimulator.cxx:357
 AliVZEROTriggerSimulator.cxx:358
 AliVZEROTriggerSimulator.cxx:359
 AliVZEROTriggerSimulator.cxx:360
 AliVZEROTriggerSimulator.cxx:361
 AliVZEROTriggerSimulator.cxx:362
 AliVZEROTriggerSimulator.cxx:363
 AliVZEROTriggerSimulator.cxx:364
 AliVZEROTriggerSimulator.cxx:365
 AliVZEROTriggerSimulator.cxx:366
 AliVZEROTriggerSimulator.cxx:367
 AliVZEROTriggerSimulator.cxx:368
 AliVZEROTriggerSimulator.cxx:369
 AliVZEROTriggerSimulator.cxx:370
 AliVZEROTriggerSimulator.cxx:371
 AliVZEROTriggerSimulator.cxx:372
 AliVZEROTriggerSimulator.cxx:373
 AliVZEROTriggerSimulator.cxx:374
 AliVZEROTriggerSimulator.cxx:375
 AliVZEROTriggerSimulator.cxx:376
 AliVZEROTriggerSimulator.cxx:377
 AliVZEROTriggerSimulator.cxx:378
 AliVZEROTriggerSimulator.cxx:379
 AliVZEROTriggerSimulator.cxx:380
 AliVZEROTriggerSimulator.cxx:381
 AliVZEROTriggerSimulator.cxx:382
 AliVZEROTriggerSimulator.cxx:383
 AliVZEROTriggerSimulator.cxx:384
 AliVZEROTriggerSimulator.cxx:385