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.                  *
 **************************************************************************/
/* $Id$ */
// ---------------------
// Class AliVZEROTrigger
// ---------------------
// Top class to simulate the VZERO trigger response
// This class is only used for interface with AliTriggerDetector
// Its create and Set  Inputs of the CTP
// The Calculation of the trigger response is done into AliVZEROTriggerSimulator
//


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

#include "AliRun.h"
#include "AliLoader.h"
#include "AliLog.h"
#include "AliRunLoader.h"
#include "AliTriggerInput.h"

#include "AliVZEROdigit.h"
#include "AliVZEROTriggerSimulator.h"
#include "AliVZEROTrigger.h"

//______________________________________________________________________
ClassImp(AliVZEROTrigger)

//______________________________________________________________________

AliVZEROTrigger::AliVZEROTrigger():AliTriggerDetector()
{
   SetName("VZERO");
   CreateInputs();
}
//______________________________________________________________________
void AliVZEROTrigger::CreateInputs()
{
	// Do not create inputs again!!
	if( fInputs.GetEntriesFast() > 0 ) return;

	fInputs.AddLast( new AliTriggerInput( "VZERO_BBA_AND_BBC", "VZERO", 0 ) );
	fInputs.AddLast( new AliTriggerInput( "VZERO_BBA_OR_BBC","VZERO", 0 ) );
	fInputs.AddLast( new AliTriggerInput( "VZERO_BGA_AND_BBC",  "VZERO", 0 ) );
	fInputs.AddLast( new AliTriggerInput( "0VGA",   "VZERO", 0 ) );
	fInputs.AddLast( new AliTriggerInput( "VZERO_BGC_AND_BBA", "VZERO", 0 ) );
	fInputs.AddLast( new AliTriggerInput( "0VGC",   "VZERO", 0 ) );
	fInputs.AddLast( new AliTriggerInput( "VZERO_CTA1_AND_CTC1",   "VZERO", 0 ) );
	fInputs.AddLast( new AliTriggerInput( "VZERO_CTA1_OR_CTC1",   "VZERO", 0 ) );
	fInputs.AddLast( new AliTriggerInput( "VZERO_CTA2_AND_CTC2",   "VZERO", 0 ) );
	fInputs.AddLast( new AliTriggerInput( "VZERO_CTA2_OR_CTC2",   "VZERO", 0 ) );
	fInputs.AddLast( new AliTriggerInput( "VZERO_MTA_AND_MTC",   "VZERO", 0 ) );
	fInputs.AddLast( new AliTriggerInput( "VZERO_MTA_OR_MTC",   "VZERO", 0 ) );
	fInputs.AddLast( new AliTriggerInput( "0VBA",   "VZERO", 0 ) );
	fInputs.AddLast( new AliTriggerInput( "0VBC",   "VZERO", 0 ) );
	fInputs.AddLast( new AliTriggerInput( "VZERO_BGA_OR_BGC",   "VZERO", 0 ) );
	fInputs.AddLast( new AliTriggerInput( "VZERO_BEAMGAS",   "VZERO", 0 ) );

	// The following are kept for compatibility with the CTP configuration file. Will have to be removed at some point
	fInputs.AddLast( new AliTriggerInput( "VZERO_AND", "VZERO", 0 ) );
	fInputs.AddLast( new AliTriggerInput( "VZERO_OR","VZERO", 0 ) );
}

//______________________________________________________________________
void AliVZEROTrigger::Trigger()
{
  //  ********** Get run loader for the current event **********
	AliRunLoader* runLoader = AliRunLoader::Instance();

	AliLoader* loader = runLoader->GetLoader( "VZEROLoader" );

	if(!loader) {
		AliError("Can not get VZERO loader");
		return;
	}
	loader->LoadDigits("update");
	TTree* vzeroDigitsTree = loader->TreeD();

	if (!vzeroDigitsTree) {
		AliError("Can not get the VZERO digit tree");
		return;
	}
	TClonesArray* vzeroDigits = NULL;
	TBranch* digitBranch = vzeroDigitsTree->GetBranch("VZERODigit");
	digitBranch->SetAddress(&vzeroDigits);

	AliVZEROTriggerSimulator * triggerSimulator = new AliVZEROTriggerSimulator(vzeroDigitsTree,vzeroDigits);
	

	triggerSimulator->Run();
	
	loader->WriteDigits("OVERWRITE");  
	loader->UnloadDigits();     

	if(triggerSimulator->GetBBAandBBC())	SetInput( "VZERO_BBA_AND_BBC" );
	if(triggerSimulator->GetBBAorBBC())		SetInput( "VZERO_BBA_OR_BBC" );
	if(triggerSimulator->GetBGAandBBC())	SetInput( "VZERO_BGA_AND_BBC" );
	if(triggerSimulator->GetBGA())			SetInput( "0VGA" );
	if(triggerSimulator->GetBGCandBBA())	SetInput( "VZERO_BGC_AND_BBA" );
	if(triggerSimulator->GetBGC())			SetInput( "0VGC" );
	if(triggerSimulator->GetCTA1andCTC1())	SetInput( "VZERO_CTA1_AND_CTC1" );
	if(triggerSimulator->GetCTA1orCTC1())	SetInput( "VZERO_CTA1_OR_CTC1" );
	if(triggerSimulator->GetCTA2andCTC2())	SetInput( "VZERO_CTA2_AND_CTC2" );
	if(triggerSimulator->GetCTA1orCTC1())	SetInput( "VZERO_CTA1_OR_CTC1" );
 	if(triggerSimulator->GetMTAandMTC())	SetInput( "VZERO_MTA_AND_MTC" );
 	if(triggerSimulator->GetMTAorMTC())		SetInput( "VZERO_MTA_OR_MTC" );
 	if(triggerSimulator->GetBBA())			SetInput( "0VBA" );
 	if(triggerSimulator->GetBBC())			SetInput( "0VBC" );
 	if(triggerSimulator->GetBGAorBGC())		SetInput( "VZERO_BGA_OR_BGC" );
 	if(triggerSimulator->GetBeamGas())		SetInput( "VZERO_BEAMGAS" );

	// The following are kept for compatibility with the CTP configuration file. Will have to be removed at some point
	if(triggerSimulator->GetBBAandBBC())    SetInput( "VZERO_AND" );
	if(triggerSimulator->GetBBAorBBC())             SetInput( "VZERO_OR" );

  return;
}



 AliVZEROTrigger.cxx:1
 AliVZEROTrigger.cxx:2
 AliVZEROTrigger.cxx:3
 AliVZEROTrigger.cxx:4
 AliVZEROTrigger.cxx:5
 AliVZEROTrigger.cxx:6
 AliVZEROTrigger.cxx:7
 AliVZEROTrigger.cxx:8
 AliVZEROTrigger.cxx:9
 AliVZEROTrigger.cxx:10
 AliVZEROTrigger.cxx:11
 AliVZEROTrigger.cxx:12
 AliVZEROTrigger.cxx:13
 AliVZEROTrigger.cxx:14
 AliVZEROTrigger.cxx:15
 AliVZEROTrigger.cxx:16
 AliVZEROTrigger.cxx:17
 AliVZEROTrigger.cxx:18
 AliVZEROTrigger.cxx:19
 AliVZEROTrigger.cxx:20
 AliVZEROTrigger.cxx:21
 AliVZEROTrigger.cxx:22
 AliVZEROTrigger.cxx:23
 AliVZEROTrigger.cxx:24
 AliVZEROTrigger.cxx:25
 AliVZEROTrigger.cxx:26
 AliVZEROTrigger.cxx:27
 AliVZEROTrigger.cxx:28
 AliVZEROTrigger.cxx:29
 AliVZEROTrigger.cxx:30
 AliVZEROTrigger.cxx:31
 AliVZEROTrigger.cxx:32
 AliVZEROTrigger.cxx:33
 AliVZEROTrigger.cxx:34
 AliVZEROTrigger.cxx:35
 AliVZEROTrigger.cxx:36
 AliVZEROTrigger.cxx:37
 AliVZEROTrigger.cxx:38
 AliVZEROTrigger.cxx:39
 AliVZEROTrigger.cxx:40
 AliVZEROTrigger.cxx:41
 AliVZEROTrigger.cxx:42
 AliVZEROTrigger.cxx:43
 AliVZEROTrigger.cxx:44
 AliVZEROTrigger.cxx:45
 AliVZEROTrigger.cxx:46
 AliVZEROTrigger.cxx:47
 AliVZEROTrigger.cxx:48
 AliVZEROTrigger.cxx:49
 AliVZEROTrigger.cxx:50
 AliVZEROTrigger.cxx:51
 AliVZEROTrigger.cxx:52
 AliVZEROTrigger.cxx:53
 AliVZEROTrigger.cxx:54
 AliVZEROTrigger.cxx:55
 AliVZEROTrigger.cxx:56
 AliVZEROTrigger.cxx:57
 AliVZEROTrigger.cxx:58
 AliVZEROTrigger.cxx:59
 AliVZEROTrigger.cxx:60
 AliVZEROTrigger.cxx:61
 AliVZEROTrigger.cxx:62
 AliVZEROTrigger.cxx:63
 AliVZEROTrigger.cxx:64
 AliVZEROTrigger.cxx:65
 AliVZEROTrigger.cxx:66
 AliVZEROTrigger.cxx:67
 AliVZEROTrigger.cxx:68
 AliVZEROTrigger.cxx:69
 AliVZEROTrigger.cxx:70
 AliVZEROTrigger.cxx:71
 AliVZEROTrigger.cxx:72
 AliVZEROTrigger.cxx:73
 AliVZEROTrigger.cxx:74
 AliVZEROTrigger.cxx:75
 AliVZEROTrigger.cxx:76
 AliVZEROTrigger.cxx:77
 AliVZEROTrigger.cxx:78
 AliVZEROTrigger.cxx:79
 AliVZEROTrigger.cxx:80
 AliVZEROTrigger.cxx:81
 AliVZEROTrigger.cxx:82
 AliVZEROTrigger.cxx:83
 AliVZEROTrigger.cxx:84
 AliVZEROTrigger.cxx:85
 AliVZEROTrigger.cxx:86
 AliVZEROTrigger.cxx:87
 AliVZEROTrigger.cxx:88
 AliVZEROTrigger.cxx:89
 AliVZEROTrigger.cxx:90
 AliVZEROTrigger.cxx:91
 AliVZEROTrigger.cxx:92
 AliVZEROTrigger.cxx:93
 AliVZEROTrigger.cxx:94
 AliVZEROTrigger.cxx:95
 AliVZEROTrigger.cxx:96
 AliVZEROTrigger.cxx:97
 AliVZEROTrigger.cxx:98
 AliVZEROTrigger.cxx:99
 AliVZEROTrigger.cxx:100
 AliVZEROTrigger.cxx:101
 AliVZEROTrigger.cxx:102
 AliVZEROTrigger.cxx:103
 AliVZEROTrigger.cxx:104
 AliVZEROTrigger.cxx:105
 AliVZEROTrigger.cxx:106
 AliVZEROTrigger.cxx:107
 AliVZEROTrigger.cxx:108
 AliVZEROTrigger.cxx:109
 AliVZEROTrigger.cxx:110
 AliVZEROTrigger.cxx:111
 AliVZEROTrigger.cxx:112
 AliVZEROTrigger.cxx:113
 AliVZEROTrigger.cxx:114
 AliVZEROTrigger.cxx:115
 AliVZEROTrigger.cxx:116
 AliVZEROTrigger.cxx:117
 AliVZEROTrigger.cxx:118
 AliVZEROTrigger.cxx:119
 AliVZEROTrigger.cxx:120
 AliVZEROTrigger.cxx:121
 AliVZEROTrigger.cxx:122
 AliVZEROTrigger.cxx:123
 AliVZEROTrigger.cxx:124
 AliVZEROTrigger.cxx:125
 AliVZEROTrigger.cxx:126
 AliVZEROTrigger.cxx:127
 AliVZEROTrigger.cxx:128
 AliVZEROTrigger.cxx:129
 AliVZEROTrigger.cxx:130
 AliVZEROTrigger.cxx:131
 AliVZEROTrigger.cxx:132
 AliVZEROTrigger.cxx:133