ROOT logo
#include "AliZDCTriggerProcessor.h"
#include "AliCDBManager.h"
#include "AliCDBEntry.h"
#include "AliCDBMetaData.h"
#include "AliLog.h"
#include "AliZDCTriggerParameters.h"

/////////////////////////////////////////////////////////////////////
//								   //
//        Class implementing ZDC  trigger processor.		   //
//								   //
/////////////////////////////////////////////////////////////////////

ClassImp(AliZDCTriggerProcessor)

//______________________________________________________________________________________________
AliZDCTriggerProcessor::AliZDCTriggerProcessor() :
  fSignal(0x0),
  fTriggerParam(0x0)
{
  // default constructor
}

//______________________________________________________________________________________________
AliZDCTriggerProcessor::AliZDCTriggerProcessor(Float_t* signal) :
  fSignal(signal),
  fTriggerParam(GetTriggerParamFromOCDB())
{
  // standard constructor I 
  // gets the trigger parameters directly from OCDB
}

//______________________________________________________________________________________________
AliZDCTriggerProcessor::AliZDCTriggerProcessor(Float_t* signal, AliZDCTriggerParameters* ocdbParam) :
  fSignal(signal),
  fTriggerParam(ocdbParam)
{
  // standard constructor II
}

//_____________________________________________________________________________
AliZDCTriggerProcessor &AliZDCTriggerProcessor::operator =(const AliZDCTriggerProcessor &trig)
{
 // Equal operator.
 this->~AliZDCTriggerProcessor();
 new(this) AliZDCTriggerProcessor(trig);
 return *this;  

}

//______________________________________________________________________________________________
AliZDCTriggerProcessor::AliZDCTriggerProcessor(const AliZDCTriggerProcessor& trigg) :
  TObject(),
  fSignal(trigg.fSignal),
  fTriggerParam(trigg.fTriggerParam)
{
  // copy constructor
}

//______________________________________________________________________________________________
AliZDCTriggerProcessor::~AliZDCTriggerProcessor()
{
  // destructor
}

//______________________________________________________________________________________________
UInt_t AliZDCTriggerProcessor::ProcessEvent()
{
  // process ZDC signals in order to determine the trigger output
  UInt_t ctpInput = 0;
  //
  Bool_t mbTriggered = MBTrigger();
  if(mbTriggered == kTRUE) ctpInput = 0x1;
  Bool_t cenTriggered = CentralTrigger();
  if(cenTriggered == kTRUE) ctpInput = 0x1 << 1;
  Bool_t semicenTriggered = SemicentralTrigger();
  if(semicenTriggered == kTRUE) ctpInput = 0x1 << 2;
  Bool_t emdTriggered = EMDTrigger();
  if(emdTriggered == kTRUE) ctpInput = 0x1 << 3;
  
  if((mbTriggered == kTRUE) || (cenTriggered == kTRUE) || 
     (semicenTriggered == kTRUE) || (emdTriggered == kTRUE)){
      return ctpInput;
  }
  else{
    return 0;
  }
}

//______________________________________________________________________________________________
Bool_t AliZDCTriggerProcessor::MBTrigger()
{
  // is the processed event a MB A-A event?
  Float_t mbTrheshold = 0.;
  if(fTriggerParam) mbTrheshold = fTriggerParam->GetADCMBThreshold();
  // check whether ZDC signal > mbTrheshold
  if((fSignal[0]+fSignal[1]+fSignal[3]+fSignal[4]) > mbTrheshold)
       return kTRUE;
  else return kFALSE;
  
}

//______________________________________________________________________________________________
Bool_t AliZDCTriggerProcessor::CentralTrigger()
{
  // is the processed event a central A-A event?
  
  Float_t zemThr = 0;
  Float_t centralWin[2] = {0,0};
  if(fTriggerParam){
    zemThr = fTriggerParam->GetADCZDCCentralityThr();
    const Float_t* cWin = fTriggerParam->GetADCCentralWindow();
    centralWin[0] = cWin[0];
    centralWin[1] = cWin[1];
  }
  // 
  if((fSignal[0]+fSignal[1]+fSignal[3]+fSignal[4]) > centralWin[0]
     && 
     (fSignal[0]+fSignal[1]+fSignal[3]+fSignal[4]) < centralWin[1]
     &&
     fSignal[2] > zemThr)
  	return kTRUE;
  else return kFALSE;
}

//______________________________________________________________________________________________
Bool_t AliZDCTriggerProcessor::SemicentralTrigger()
{
  // is the processed event a semicentral A-A event?
  
  Float_t zemThr = 0;  
  Float_t semicentralWin[2] = {0,0};
  if(fTriggerParam){
    zemThr  =  fTriggerParam->GetADCZDCCentralityThr();
    const Float_t* cWin =   fTriggerParam->GetADCSemicentralWindow();
    semicentralWin[0] = cWin[0];
    semicentralWin[1] = cWin[1];
  }
  //
  if((fSignal[0]+fSignal[1]+fSignal[3]+fSignal[4]) > semicentralWin[0]
     && 
     (fSignal[0]+fSignal[1]+fSignal[3]+fSignal[4]) < semicentralWin[1]
     &&
     fSignal[2] > zemThr)
  	return kTRUE;
  else return kFALSE;
}

//______________________________________________________________________________________________
Bool_t AliZDCTriggerProcessor::EMDTrigger()
{
  // is the processed an EMD event?
  
  Float_t emdWin[4] = {0,0,0,0};
  if(fTriggerParam){
    const Float_t* eWin =   fTriggerParam->GetADCEMDWindow();
    emdWin[0] = eWin[0];
    emdWin[1] = eWin[1];
    emdWin[2] = eWin[2];
    emdWin[3] = eWin[3];
  }
  // check whether ZNA AND ZNC signals fall into the 
  // 2 distinct windows defined for EMD trigger
  if(fSignal[0] > emdWin[0] && fSignal[0] < emdWin[1]
     &&
     fSignal[3] > emdWin[2] && fSignal[3] < emdWin[3])
  	return kTRUE;
  else return kFALSE;
}

//______________________________________________________________________________________________
AliZDCTriggerParameters* AliZDCTriggerProcessor::GetTriggerParamFromOCDB() const
{
  // retrieving trigger parameter configuration form OCDB
  AliZDCTriggerParameters *trigParam = 0x0;
  AliCDBEntry  *entry = AliCDBManager::Instance()->Get("ZDC/Trigger/");
  if(!entry) AliFatal("No calibration data loaded!");  
  else{
    trigParam = dynamic_cast<AliZDCTriggerParameters*>  (entry->GetObject());
    if(!trigParam)  AliFatal("Wrong calibration object in calibration  file!");
  }

  return trigParam;
}
 AliZDCTriggerProcessor.cxx:1
 AliZDCTriggerProcessor.cxx:2
 AliZDCTriggerProcessor.cxx:3
 AliZDCTriggerProcessor.cxx:4
 AliZDCTriggerProcessor.cxx:5
 AliZDCTriggerProcessor.cxx:6
 AliZDCTriggerProcessor.cxx:7
 AliZDCTriggerProcessor.cxx:8
 AliZDCTriggerProcessor.cxx:9
 AliZDCTriggerProcessor.cxx:10
 AliZDCTriggerProcessor.cxx:11
 AliZDCTriggerProcessor.cxx:12
 AliZDCTriggerProcessor.cxx:13
 AliZDCTriggerProcessor.cxx:14
 AliZDCTriggerProcessor.cxx:15
 AliZDCTriggerProcessor.cxx:16
 AliZDCTriggerProcessor.cxx:17
 AliZDCTriggerProcessor.cxx:18
 AliZDCTriggerProcessor.cxx:19
 AliZDCTriggerProcessor.cxx:20
 AliZDCTriggerProcessor.cxx:21
 AliZDCTriggerProcessor.cxx:22
 AliZDCTriggerProcessor.cxx:23
 AliZDCTriggerProcessor.cxx:24
 AliZDCTriggerProcessor.cxx:25
 AliZDCTriggerProcessor.cxx:26
 AliZDCTriggerProcessor.cxx:27
 AliZDCTriggerProcessor.cxx:28
 AliZDCTriggerProcessor.cxx:29
 AliZDCTriggerProcessor.cxx:30
 AliZDCTriggerProcessor.cxx:31
 AliZDCTriggerProcessor.cxx:32
 AliZDCTriggerProcessor.cxx:33
 AliZDCTriggerProcessor.cxx:34
 AliZDCTriggerProcessor.cxx:35
 AliZDCTriggerProcessor.cxx:36
 AliZDCTriggerProcessor.cxx:37
 AliZDCTriggerProcessor.cxx:38
 AliZDCTriggerProcessor.cxx:39
 AliZDCTriggerProcessor.cxx:40
 AliZDCTriggerProcessor.cxx:41
 AliZDCTriggerProcessor.cxx:42
 AliZDCTriggerProcessor.cxx:43
 AliZDCTriggerProcessor.cxx:44
 AliZDCTriggerProcessor.cxx:45
 AliZDCTriggerProcessor.cxx:46
 AliZDCTriggerProcessor.cxx:47
 AliZDCTriggerProcessor.cxx:48
 AliZDCTriggerProcessor.cxx:49
 AliZDCTriggerProcessor.cxx:50
 AliZDCTriggerProcessor.cxx:51
 AliZDCTriggerProcessor.cxx:52
 AliZDCTriggerProcessor.cxx:53
 AliZDCTriggerProcessor.cxx:54
 AliZDCTriggerProcessor.cxx:55
 AliZDCTriggerProcessor.cxx:56
 AliZDCTriggerProcessor.cxx:57
 AliZDCTriggerProcessor.cxx:58
 AliZDCTriggerProcessor.cxx:59
 AliZDCTriggerProcessor.cxx:60
 AliZDCTriggerProcessor.cxx:61
 AliZDCTriggerProcessor.cxx:62
 AliZDCTriggerProcessor.cxx:63
 AliZDCTriggerProcessor.cxx:64
 AliZDCTriggerProcessor.cxx:65
 AliZDCTriggerProcessor.cxx:66
 AliZDCTriggerProcessor.cxx:67
 AliZDCTriggerProcessor.cxx:68
 AliZDCTriggerProcessor.cxx:69
 AliZDCTriggerProcessor.cxx:70
 AliZDCTriggerProcessor.cxx:71
 AliZDCTriggerProcessor.cxx:72
 AliZDCTriggerProcessor.cxx:73
 AliZDCTriggerProcessor.cxx:74
 AliZDCTriggerProcessor.cxx:75
 AliZDCTriggerProcessor.cxx:76
 AliZDCTriggerProcessor.cxx:77
 AliZDCTriggerProcessor.cxx:78
 AliZDCTriggerProcessor.cxx:79
 AliZDCTriggerProcessor.cxx:80
 AliZDCTriggerProcessor.cxx:81
 AliZDCTriggerProcessor.cxx:82
 AliZDCTriggerProcessor.cxx:83
 AliZDCTriggerProcessor.cxx:84
 AliZDCTriggerProcessor.cxx:85
 AliZDCTriggerProcessor.cxx:86
 AliZDCTriggerProcessor.cxx:87
 AliZDCTriggerProcessor.cxx:88
 AliZDCTriggerProcessor.cxx:89
 AliZDCTriggerProcessor.cxx:90
 AliZDCTriggerProcessor.cxx:91
 AliZDCTriggerProcessor.cxx:92
 AliZDCTriggerProcessor.cxx:93
 AliZDCTriggerProcessor.cxx:94
 AliZDCTriggerProcessor.cxx:95
 AliZDCTriggerProcessor.cxx:96
 AliZDCTriggerProcessor.cxx:97
 AliZDCTriggerProcessor.cxx:98
 AliZDCTriggerProcessor.cxx:99
 AliZDCTriggerProcessor.cxx:100
 AliZDCTriggerProcessor.cxx:101
 AliZDCTriggerProcessor.cxx:102
 AliZDCTriggerProcessor.cxx:103
 AliZDCTriggerProcessor.cxx:104
 AliZDCTriggerProcessor.cxx:105
 AliZDCTriggerProcessor.cxx:106
 AliZDCTriggerProcessor.cxx:107
 AliZDCTriggerProcessor.cxx:108
 AliZDCTriggerProcessor.cxx:109
 AliZDCTriggerProcessor.cxx:110
 AliZDCTriggerProcessor.cxx:111
 AliZDCTriggerProcessor.cxx:112
 AliZDCTriggerProcessor.cxx:113
 AliZDCTriggerProcessor.cxx:114
 AliZDCTriggerProcessor.cxx:115
 AliZDCTriggerProcessor.cxx:116
 AliZDCTriggerProcessor.cxx:117
 AliZDCTriggerProcessor.cxx:118
 AliZDCTriggerProcessor.cxx:119
 AliZDCTriggerProcessor.cxx:120
 AliZDCTriggerProcessor.cxx:121
 AliZDCTriggerProcessor.cxx:122
 AliZDCTriggerProcessor.cxx:123
 AliZDCTriggerProcessor.cxx:124
 AliZDCTriggerProcessor.cxx:125
 AliZDCTriggerProcessor.cxx:126
 AliZDCTriggerProcessor.cxx:127
 AliZDCTriggerProcessor.cxx:128
 AliZDCTriggerProcessor.cxx:129
 AliZDCTriggerProcessor.cxx:130
 AliZDCTriggerProcessor.cxx:131
 AliZDCTriggerProcessor.cxx:132
 AliZDCTriggerProcessor.cxx:133
 AliZDCTriggerProcessor.cxx:134
 AliZDCTriggerProcessor.cxx:135
 AliZDCTriggerProcessor.cxx:136
 AliZDCTriggerProcessor.cxx:137
 AliZDCTriggerProcessor.cxx:138
 AliZDCTriggerProcessor.cxx:139
 AliZDCTriggerProcessor.cxx:140
 AliZDCTriggerProcessor.cxx:141
 AliZDCTriggerProcessor.cxx:142
 AliZDCTriggerProcessor.cxx:143
 AliZDCTriggerProcessor.cxx:144
 AliZDCTriggerProcessor.cxx:145
 AliZDCTriggerProcessor.cxx:146
 AliZDCTriggerProcessor.cxx:147
 AliZDCTriggerProcessor.cxx:148
 AliZDCTriggerProcessor.cxx:149
 AliZDCTriggerProcessor.cxx:150
 AliZDCTriggerProcessor.cxx:151
 AliZDCTriggerProcessor.cxx:152
 AliZDCTriggerProcessor.cxx:153
 AliZDCTriggerProcessor.cxx:154
 AliZDCTriggerProcessor.cxx:155
 AliZDCTriggerProcessor.cxx:156
 AliZDCTriggerProcessor.cxx:157
 AliZDCTriggerProcessor.cxx:158
 AliZDCTriggerProcessor.cxx:159
 AliZDCTriggerProcessor.cxx:160
 AliZDCTriggerProcessor.cxx:161
 AliZDCTriggerProcessor.cxx:162
 AliZDCTriggerProcessor.cxx:163
 AliZDCTriggerProcessor.cxx:164
 AliZDCTriggerProcessor.cxx:165
 AliZDCTriggerProcessor.cxx:166
 AliZDCTriggerProcessor.cxx:167
 AliZDCTriggerProcessor.cxx:168
 AliZDCTriggerProcessor.cxx:169
 AliZDCTriggerProcessor.cxx:170
 AliZDCTriggerProcessor.cxx:171
 AliZDCTriggerProcessor.cxx:172
 AliZDCTriggerProcessor.cxx:173
 AliZDCTriggerProcessor.cxx:174
 AliZDCTriggerProcessor.cxx:175
 AliZDCTriggerProcessor.cxx:176
 AliZDCTriggerProcessor.cxx:177
 AliZDCTriggerProcessor.cxx:178
 AliZDCTriggerProcessor.cxx:179
 AliZDCTriggerProcessor.cxx:180
 AliZDCTriggerProcessor.cxx:181
 AliZDCTriggerProcessor.cxx:182
 AliZDCTriggerProcessor.cxx:183
 AliZDCTriggerProcessor.cxx:184