LCOV - code coverage report
Current view: top level - ZDC/ZDCsim - AliZDCTriggerProcessor.cxx (source / functions) Hit Total Coverage
Test: coverage.info Lines: 1 92 1.1 %
Date: 2016-06-14 17:26:59 Functions: 1 19 5.3 %

          Line data    Source code
       1             : #include "AliZDCTriggerProcessor.h"
       2             : #include "AliCDBManager.h"
       3             : #include "AliCDBEntry.h"
       4             : #include "AliCDBMetaData.h"
       5             : #include "AliLog.h"
       6             : #include "AliZDCTriggerParameters.h"
       7             : 
       8             : /////////////////////////////////////////////////////////////////////
       9             : //                                                                 //
      10             : //        Class implementing ZDC  trigger processor.               //
      11             : //                                                                 //
      12             : /////////////////////////////////////////////////////////////////////
      13             : 
      14          12 : ClassImp(AliZDCTriggerProcessor)
      15             : 
      16             : //______________________________________________________________________________________________
      17           0 : AliZDCTriggerProcessor::AliZDCTriggerProcessor() :
      18           0 :   fSignal(0x0),
      19           0 :   fTriggerParam(0x0)
      20           0 : {
      21             :   // default constructor
      22           0 : }
      23             : 
      24             : //______________________________________________________________________________________________
      25           0 : AliZDCTriggerProcessor::AliZDCTriggerProcessor(Float_t* signal) :
      26           0 :   fSignal(signal),
      27           0 :   fTriggerParam(GetTriggerParamFromOCDB())
      28           0 : {
      29             :   // standard constructor I 
      30             :   // gets the trigger parameters directly from OCDB
      31           0 : }
      32             : 
      33             : //______________________________________________________________________________________________
      34           0 : AliZDCTriggerProcessor::AliZDCTriggerProcessor(Float_t* signal, AliZDCTriggerParameters* ocdbParam) :
      35           0 :   fSignal(signal),
      36           0 :   fTriggerParam(ocdbParam)
      37           0 : {
      38             :   // standard constructor II
      39           0 : }
      40             : 
      41             : //_____________________________________________________________________________
      42             : AliZDCTriggerProcessor &AliZDCTriggerProcessor::operator =(const AliZDCTriggerProcessor &trig)
      43             : {
      44             :  // Equal operator.
      45           0 :  this->~AliZDCTriggerProcessor();
      46           0 :  new(this) AliZDCTriggerProcessor(trig);
      47           0 :  return *this;  
      48             : 
      49           0 : }
      50             : 
      51             : //______________________________________________________________________________________________
      52             : AliZDCTriggerProcessor::AliZDCTriggerProcessor(const AliZDCTriggerProcessor& trigg) :
      53           0 :   TObject(),
      54           0 :   fSignal(trigg.fSignal),
      55           0 :   fTriggerParam(trigg.fTriggerParam)
      56           0 : {
      57             :   // copy constructor
      58           0 : }
      59             : 
      60             : //______________________________________________________________________________________________
      61             : AliZDCTriggerProcessor::~AliZDCTriggerProcessor()
      62           0 : {
      63             :   // destructor
      64           0 : }
      65             : 
      66             : //______________________________________________________________________________________________
      67             : UInt_t AliZDCTriggerProcessor::ProcessEvent()
      68             : {
      69             :   // process ZDC signals in order to determine the trigger output
      70             :   UInt_t ctpInput = 0;
      71             :   //
      72           0 :   Bool_t mbTriggered = MBTrigger();
      73           0 :   if(mbTriggered == kTRUE) ctpInput = 0x1;
      74           0 :   Bool_t cenTriggered = CentralTrigger();
      75           0 :   if(cenTriggered == kTRUE) ctpInput = 0x1 << 1;
      76           0 :   Bool_t semicenTriggered = SemicentralTrigger();
      77           0 :   if(semicenTriggered == kTRUE) ctpInput = 0x1 << 2;
      78           0 :   Bool_t emdTriggered = EMDTrigger();
      79           0 :   if(emdTriggered == kTRUE) ctpInput = 0x1 << 3;
      80             :   
      81           0 :   if((mbTriggered == kTRUE) || (cenTriggered == kTRUE) || 
      82           0 :      (semicenTriggered == kTRUE) || (emdTriggered == kTRUE)){
      83           0 :       return ctpInput;
      84             :   }
      85             :   else{
      86           0 :     return 0;
      87             :   }
      88           0 : }
      89             : 
      90             : //______________________________________________________________________________________________
      91             : Bool_t AliZDCTriggerProcessor::MBTrigger()
      92             : {
      93             :   // is the processed event a MB A-A event?
      94             :   Float_t mbTrheshold = 0.;
      95           0 :   if(fTriggerParam) mbTrheshold = fTriggerParam->GetADCMBThreshold();
      96             :   // check whether ZDC signal > mbTrheshold
      97           0 :   if((fSignal[0]+fSignal[1]+fSignal[3]+fSignal[4]) > mbTrheshold)
      98           0 :        return kTRUE;
      99           0 :   else return kFALSE;
     100             :   
     101           0 : }
     102             : 
     103             : //______________________________________________________________________________________________
     104             : Bool_t AliZDCTriggerProcessor::CentralTrigger()
     105             : {
     106             :   // is the processed event a central A-A event?
     107             :   
     108             :   Float_t zemThr = 0;
     109             :   Float_t centralWin[2] = {0,0};
     110           0 :   if(fTriggerParam){
     111           0 :     zemThr = fTriggerParam->GetADCZDCCentralityThr();
     112           0 :     const Float_t* cWin = fTriggerParam->GetADCCentralWindow();
     113           0 :     centralWin[0] = cWin[0];
     114           0 :     centralWin[1] = cWin[1];
     115           0 :   }
     116             :   // 
     117           0 :   if((fSignal[0]+fSignal[1]+fSignal[3]+fSignal[4]) > centralWin[0]
     118           0 :      && 
     119           0 :      (fSignal[0]+fSignal[1]+fSignal[3]+fSignal[4]) < centralWin[1]
     120           0 :      &&
     121           0 :      fSignal[2] > zemThr)
     122           0 :         return kTRUE;
     123           0 :   else return kFALSE;
     124           0 : }
     125             : 
     126             : //______________________________________________________________________________________________
     127             : Bool_t AliZDCTriggerProcessor::SemicentralTrigger()
     128             : {
     129             :   // is the processed event a semicentral A-A event?
     130             :   
     131             :   Float_t zemThr = 0;  
     132             :   Float_t semicentralWin[2] = {0,0};
     133           0 :   if(fTriggerParam){
     134           0 :     zemThr  =  fTriggerParam->GetADCZDCCentralityThr();
     135           0 :     const Float_t* cWin =   fTriggerParam->GetADCSemicentralWindow();
     136           0 :     semicentralWin[0] = cWin[0];
     137           0 :     semicentralWin[1] = cWin[1];
     138           0 :   }
     139             :   //
     140           0 :   if((fSignal[0]+fSignal[1]+fSignal[3]+fSignal[4]) > semicentralWin[0]
     141           0 :      && 
     142           0 :      (fSignal[0]+fSignal[1]+fSignal[3]+fSignal[4]) < semicentralWin[1]
     143           0 :      &&
     144           0 :      fSignal[2] > zemThr)
     145           0 :         return kTRUE;
     146           0 :   else return kFALSE;
     147           0 : }
     148             : 
     149             : //______________________________________________________________________________________________
     150             : Bool_t AliZDCTriggerProcessor::EMDTrigger()
     151             : {
     152             :   // is the processed an EMD event?
     153             :   
     154             :   Float_t emdWin[4] = {0,0,0,0};
     155           0 :   if(fTriggerParam){
     156           0 :     const Float_t* eWin =   fTriggerParam->GetADCEMDWindow();
     157           0 :     emdWin[0] = eWin[0];
     158           0 :     emdWin[1] = eWin[1];
     159           0 :     emdWin[2] = eWin[2];
     160           0 :     emdWin[3] = eWin[3];
     161           0 :   }
     162             :   // check whether ZNA AND ZNC signals fall into the 
     163             :   // 2 distinct windows defined for EMD trigger
     164           0 :   if(fSignal[0] > emdWin[0] && fSignal[0] < emdWin[1]
     165           0 :      &&
     166           0 :      fSignal[3] > emdWin[2] && fSignal[3] < emdWin[3])
     167           0 :         return kTRUE;
     168           0 :   else return kFALSE;
     169           0 : }
     170             : 
     171             : //______________________________________________________________________________________________
     172             : AliZDCTriggerParameters* AliZDCTriggerProcessor::GetTriggerParamFromOCDB() const
     173             : {
     174             :   // retrieving trigger parameter configuration form OCDB
     175             :   AliZDCTriggerParameters *trigParam = 0x0;
     176           0 :   AliCDBEntry  *entry = AliCDBManager::Instance()->Get("ZDC/Trigger/");
     177           0 :   if(!entry) AliFatal("No calibration data loaded!");  
     178             :   else{
     179           0 :     trigParam = dynamic_cast<AliZDCTriggerParameters*>  (entry->GetObject());
     180           0 :     if(!trigParam)  AliFatal("Wrong calibration object in calibration  file!");
     181             :   }
     182             : 
     183           0 :   return trigParam;
     184           0 : }

Generated by: LCOV version 1.11