From 360938babe0c721536468d6010fc8e6fe87725b6 Mon Sep 17 00:00:00 2001 From: cheynis Date: Mon, 27 Mar 2006 17:57:31 +0000 Subject: [PATCH] Trigger class --- VZERO/AliVZEROTrigger.cxx | 120 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 VZERO/AliVZEROTrigger.cxx diff --git a/VZERO/AliVZEROTrigger.cxx b/VZERO/AliVZEROTrigger.cxx new file mode 100644 index 00000000000..18bded2d2c0 --- /dev/null +++ b/VZERO/AliVZEROTrigger.cxx @@ -0,0 +1,120 @@ +#include "AliRun.h" +#include "AliRunLoader.h" + +#include "AliVZEROTrigger.h" + +//______________________________________________________________________ +ClassImp(AliVZEROTrigger) +//////////////////////////////////////////////////////////////////////// +// +// Version 1 +// +// AliVZEROTrigger: +// +//////////////////////////////////////////////////////////////////////// + +//______________________________________________________________________ +AliVZEROTrigger::AliVZEROTrigger() + : AliTriggerDetector() +{ + SetName("VZERO"); + CreateInputs(); + + SetAdcThreshold(); +} + +//______________________________________________________________________ +void AliVZEROTrigger::CreateInputs() +{ + // inputs + + // Do not create inputs again!! + if( fInputs.GetEntriesFast() > 0 ) return; + + fInputs.AddLast( new AliTriggerInput( "VZERO_LEFT", "At least one hit in the left VZERO", 0x01 ) ); + fInputs.AddLast( new AliTriggerInput( "VZERO_RIGHT","At least one hit in the right VZERO", 0x02 ) ); + fInputs.AddLast( new AliTriggerInput( "VZERO_AND", "At least one hit in the each (left and right) VZERO", 0x02 ) ); + fInputs.AddLast( new AliTriggerInput( "VZERO_OR", "At least one hit in the one (left one right) VZERO", 0x02 ) ); + + fInputs.AddLast( new AliTriggerInput( "VZERO_BEAMGAS", "Beam gas VZERO trigger ", 0x01 ) ); +} + +//______________________________________________________________________ +void AliVZEROTrigger::Trigger() +{ + + // ********** Get run loader for the current event ********** + AliRunLoader* runLoader = gAlice->GetRunLoader(); + + AliVZEROLoader* loader = (AliVZEROLoader* )runLoader->GetLoader( "VZEROLoader" ); + + loader->LoadDigits("READ"); + TTree* vzeroDigitsTree = loader->TreeD(); + + TClonesArray* vzeroDigits = new TClonesArray("AliVZEROdigit",1000); + TBranch* digitBranch = vzeroDigitsTree->GetBranch("VZERODigit"); + digitBranch->SetAddress(&vzeroDigits); + + // number of hits in left/right + Int_t nLeftDig = 0; + Int_t nRightDig = 0; + + // first time + Float_t firstTimeLeft = 9999; + Float_t firstTimeRight = 9999; + + // loop over vzero entries + Int_t nEntries = (Int_t)vzeroDigitsTree->GetEntries(); + for (Int_t e=0; eGetEvent(e); + + Int_t nDigits = vzeroDigits->GetEntriesFast(); + + for (Int_t d=0; dGetEvent(d); + AliVZEROdigit* digit = (AliVZEROdigit*)vzeroDigits->At(d); + + Int_t cellNumber = digit->CellNumber(); + Float_t adc = digit->ADC(); + Float_t tdc = digit->Time(); // in 100 of picoseconds + + if (cellNumber<=47 && adc>fAdcThresHold) { + nLeftDig++; + if (tdc=48 && adc>fAdcThresHold) { + nRightDig++; + if (tdc 0) + SetInput( "VZERO_LEFT" ); + + if (nRightDig > 0) + SetInput( "VZERO_RIGHT" ); + + if (nLeftDig>0 || nRightDig>0) { + SetInput( "VZERO_OR" ); + + if (nLeftDig>0 && nRightDig>0) { + SetInput( "VZERO_AND" ); + } + } + + AliDebug(1,Form("VZERO cells fired: %d (left) %d (right)", nLeftDig, nRightDig)); + + return; +} + + -- 2.43.5