X-Git-Url: http://git.uio.no/git/?p=u%2Fmrichter%2FAliRoot.git;a=blobdiff_plain;f=VZERO%2FAliVZEROTrigger.cxx;h=c06b1f8d249b2783a8184dcb54feb4994f0320ab;hp=18bded2d2c0751001d6d68df29975a3bfbcad52c;hb=57c7500a9a41963917316cbedce38f84432207a0;hpb=360938babe0c721536468d6010fc8e6fe87725b6 diff --git a/VZERO/AliVZEROTrigger.cxx b/VZERO/AliVZEROTrigger.cxx index 18bded2d2c0..c06b1f8d249 100644 --- a/VZERO/AliVZEROTrigger.cxx +++ b/VZERO/AliVZEROTrigger.cxx @@ -1,120 +1,126 @@ +/************************************************************************** + * 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 + #include "AliRun.h" #include "AliRunLoader.h" +#include "AliTriggerInput.h" +#include "AliVZEROdigit.h" +#include "AliVZEROTriggerSimulator.h" #include "AliVZEROTrigger.h" //______________________________________________________________________ ClassImp(AliVZEROTrigger) -//////////////////////////////////////////////////////////////////////// -// -// Version 1 -// -// AliVZEROTrigger: -// -//////////////////////////////////////////////////////////////////////// //______________________________________________________________________ -AliVZEROTrigger::AliVZEROTrigger() - : AliTriggerDetector() + +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 ) ); + // 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 = 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)); + AliRunLoader* runLoader = AliRunLoader::Instance(); + + AliLoader* loader = runLoader->GetLoader( "VZEROLoader" ); + + if(!loader) { + AliError("Can not get VZERO loader"); + return; + } + loader->LoadDigits("READ"); + 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(); + + 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; } +