#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", 0x04 ) ); fInputs.AddLast( new AliTriggerInput( "VZERO_OR", "At least one hit in the one (left one right) VZERO", 0x08 ) ); fInputs.AddLast( new AliTriggerInput( "VZERO_BEAMGAS", "Beam gas VZERO trigger ", 0x010 ) ); } //______________________________________________________________________ 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(); if (!vzeroDigitsTree) return; 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; }