X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=VZERO%2FAliVZEROTrigger.cxx;h=de566fa2b8ea4db354bb8e713c38e44d09feeccd;hb=8f85c649333dad0f53fb9cc3bf2c9a7bd9ff446e;hp=b0df57f040b261b20c891f6423dad2f2dfc66752;hpb=d3b3a3b24cc880365e409a578a50f49d17de9ff4;p=u%2Fmrichter%2FAliRoot.git diff --git a/VZERO/AliVZEROTrigger.cxx b/VZERO/AliVZEROTrigger.cxx index b0df57f040b..de566fa2b8e 100644 --- a/VZERO/AliVZEROTrigger.cxx +++ b/VZERO/AliVZEROTrigger.cxx @@ -12,93 +12,122 @@ * 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 #include "AliRun.h" +#include "AliLoader.h" +#include "AliLog.h" #include "AliRunLoader.h" +#include "AliTriggerInput.h" +#include "AliVZEROdigit.h" +#include "AliVZEROTriggerSimulator.h" #include "AliVZEROTrigger.h" -#include "AliVZEROTriggerMask.h" //______________________________________________________________________ ClassImp(AliVZEROTrigger) -//////////////////////////////////////////////////////////////////////// -// -// Version 1 -// -// AliVZEROTrigger: -// -//////////////////////////////////////////////////////////////////////// //______________________________________________________________________ -AliVZEROTrigger::AliVZEROTrigger() - :AliTriggerDetector(), - fAdcThresHold(0.0), - fTimeWindowWidthBBA(50.0), - fTimeWindowWidthBGA(20.0), - fTimeWindowWidthBBC(50.0), - fTimeWindowWidthBGC(20.0) - +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", "VZERO", 0 ) ); - fInputs.AddLast( new AliTriggerInput( "VZERO_RIGHT","VZERO", 0 ) ); - fInputs.AddLast( new AliTriggerInput( "VZERO_AND", "VZERO", 0 ) ); - fInputs.AddLast( new AliTriggerInput( "VZERO_OR", "VZERO", 0 ) ); - fInputs.AddLast( new AliTriggerInput( "VZERO_BEAMGAS", "VZERO", 0 ) ); + // 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::GetRunLoader(); - - AliVZEROLoader* loader = - (AliVZEROLoader* )runLoader->GetLoader( "VZEROLoader" ); - - loader->LoadDigits("READ"); - TTree* vzeroDigitsTree = loader->TreeD(); - if (!vzeroDigitsTree) return; - - TClonesArray* vzeroDigits = new TClonesArray("AliVZEROdigit",1000); - TBranch* digitBranch = vzeroDigitsTree->GetBranch("VZERODigit"); - digitBranch->SetAddress(&vzeroDigits); - - AliVZEROTriggerMask *TriggerMask = new AliVZEROTriggerMask(); - TriggerMask->SetAdcThreshold(fAdcThresHold); - TriggerMask->SetTimeWindowWidthBBA(fTimeWindowWidthBBA); - TriggerMask->SetTimeWindowWidthBGA(fTimeWindowWidthBGA); - TriggerMask->SetTimeWindowWidthBBC(fTimeWindowWidthBBC); - TriggerMask->SetTimeWindowWidthBGC(fTimeWindowWidthBGC); - TriggerMask->FillMasks(vzeroDigitsTree,vzeroDigits); - - if ( (TriggerMask->GetBGtriggerV0A()>0) || - (TriggerMask->GetBGtriggerV0C()>0)) SetInput( "VZERO_BEAMGAS" ); - if (TriggerMask->GetBBtriggerV0A()>0) SetInput( "VZERO_LEFT" ); - if (TriggerMask->GetBBtriggerV0C()>0) SetInput( "VZERO_RIGHT" ); - if ( (TriggerMask->GetBBtriggerV0A()>0) || - (TriggerMask->GetBBtriggerV0C()>0)) SetInput( "VZERO_OR" ); - if ( (TriggerMask->GetBBtriggerV0A()>0) && - (TriggerMask->GetBBtriggerV0C()>0)) SetInput( "VZERO_AND" ); + 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; } + +