ROOT logo
/**************************************************************************
 * 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$ */
/***************************************************************
 * T0 trigger class for T0 trigger signals:
 *  - T0A
 *  - T0C
 *  - T0vertex
 *  - T0 semi central event for ions
 *  - T0 central            for ions
 ****************************************************************/


#include "AliLog.h"
#include "AliRun.h"
#include "AliLoader.h"
#include "AliRunLoader.h"
#include "AliTriggerInput.h"
#include "AliT0Parameters.h"
#include "AliT0TriggerParameters.h"
#include <AliCDBManager.h>        
#include <AliCDBEntry.h>          
#include <AliCDBStorage.h>  

#include "AliT0.h"
#include "AliT0digit.h"
#include "AliT0Trigger.h"

#include "Riostream.h"

//----------------------------------------------------------------------
ClassImp(AliT0Trigger)

//----------------------------------------------------------------------
AliT0Trigger::AliT0Trigger()
  : AliTriggerDetector(),
    fT0(0x0),
  fDigits(0x0),
  fTrigPar(0x0) 
{
   SetName("T0");
   CreateInputs();
   AliCDBManager *stor =AliCDBManager::Instance();
   //time equalizing
   AliCDBEntry* fCalibentry  = stor->Get("T0/Calib/TriggerParam");
   if (fCalibentry)
     fTrigPar  = (AliT0TriggerParameters*)fCalibentry->GetObject();
   else {
         AliWarning(" No trigger parameters  in CDB , use default"); 
   }

}

//----------------------------------------------------------------------
void AliT0Trigger::CreateInputs()
{
   // inputs 
 
   // Do not create inputs again!!
   if( fInputs.GetEntriesFast() > 0 ) return;
   
   fInputs.AddLast( new AliTriggerInput( "0T0A", "T0",  0 ) );
   fInputs.AddLast( new AliTriggerInput( "0T0C", "T0", 0 ) );
   fInputs.AddLast( new AliTriggerInput( "0TVX", "T0", 0 ) );
   fInputs.AddLast( new AliTriggerInput( "T0_Centr_L0", "T0",  0 ) );
   fInputs.AddLast( new AliTriggerInput( "T0_SemiCentral_L0", "T0",  0 ) );

}

//----------------------------------------------------------------------
void AliT0Trigger::Trigger()
{
  // trigger input

   AliRunLoader* runLoader = AliRunLoader::Instance();
   AliLoader * fT0Loader = runLoader->GetLoader("T0Loader");
   //   AliT0digit *fDigits; 
   fT0Loader->LoadDigits("READ");
   // Creating T0 data container

   TTree* treeD = fT0Loader->TreeD();
  if (!treeD) {
    AliError("no digits tree");
    return;
  }
  fDigits = new AliT0digit();

  TBranch *brDigits = treeD->GetBranch("T0");
  if (brDigits) {
    brDigits->SetAddress(&fDigits);
  }else{
    AliError("Branch T0 DIGIT not found");
    return;
  } 
  brDigits->GetEntry(0);
  Int_t   besttimeA = fDigits->BestTimeA();
  Int_t   besttimeC = fDigits->BestTimeC();
  Int_t   timeDiff = fDigits->TimeDiff();
  Int_t    sumMult=   fDigits->SumMult();

  //trigger parameteres

  Float_t timeWindowLow = fTrigPar->GetTimeWindowLow(); 
  Float_t timeWindowHigh = fTrigPar->GetTimeWindowHigh(); 
  Int_t ampCentr = fTrigPar->GetAmpCentr(); 
  Int_t ampSemiCentr =  fTrigPar->GetAmpSemiCentr();

  if (besttimeA > 0 && besttimeA <99999)  SetInput("0T0A");
  if (besttimeC > 0  && besttimeC<99999)   SetInput("0T0C"); 
  //6093 corrsponds to vertex -20cm, 6202 vertex +20 with delay 150nc eqalized on the TVDC unit 
  if (timeDiff >timeWindowLow && timeDiff < timeWindowHigh) SetInput("0TVX");
  if (sumMult > ampCentr)  SetInput("T0_Centr_L0");
  if (sumMult> ampSemiCentr && sumMult <= ampCentr) SetInput("T0_SemiCentral_L0");;

   
}
 AliT0Trigger.cxx:1
 AliT0Trigger.cxx:2
 AliT0Trigger.cxx:3
 AliT0Trigger.cxx:4
 AliT0Trigger.cxx:5
 AliT0Trigger.cxx:6
 AliT0Trigger.cxx:7
 AliT0Trigger.cxx:8
 AliT0Trigger.cxx:9
 AliT0Trigger.cxx:10
 AliT0Trigger.cxx:11
 AliT0Trigger.cxx:12
 AliT0Trigger.cxx:13
 AliT0Trigger.cxx:14
 AliT0Trigger.cxx:15
 AliT0Trigger.cxx:16
 AliT0Trigger.cxx:17
 AliT0Trigger.cxx:18
 AliT0Trigger.cxx:19
 AliT0Trigger.cxx:20
 AliT0Trigger.cxx:21
 AliT0Trigger.cxx:22
 AliT0Trigger.cxx:23
 AliT0Trigger.cxx:24
 AliT0Trigger.cxx:25
 AliT0Trigger.cxx:26
 AliT0Trigger.cxx:27
 AliT0Trigger.cxx:28
 AliT0Trigger.cxx:29
 AliT0Trigger.cxx:30
 AliT0Trigger.cxx:31
 AliT0Trigger.cxx:32
 AliT0Trigger.cxx:33
 AliT0Trigger.cxx:34
 AliT0Trigger.cxx:35
 AliT0Trigger.cxx:36
 AliT0Trigger.cxx:37
 AliT0Trigger.cxx:38
 AliT0Trigger.cxx:39
 AliT0Trigger.cxx:40
 AliT0Trigger.cxx:41
 AliT0Trigger.cxx:42
 AliT0Trigger.cxx:43
 AliT0Trigger.cxx:44
 AliT0Trigger.cxx:45
 AliT0Trigger.cxx:46
 AliT0Trigger.cxx:47
 AliT0Trigger.cxx:48
 AliT0Trigger.cxx:49
 AliT0Trigger.cxx:50
 AliT0Trigger.cxx:51
 AliT0Trigger.cxx:52
 AliT0Trigger.cxx:53
 AliT0Trigger.cxx:54
 AliT0Trigger.cxx:55
 AliT0Trigger.cxx:56
 AliT0Trigger.cxx:57
 AliT0Trigger.cxx:58
 AliT0Trigger.cxx:59
 AliT0Trigger.cxx:60
 AliT0Trigger.cxx:61
 AliT0Trigger.cxx:62
 AliT0Trigger.cxx:63
 AliT0Trigger.cxx:64
 AliT0Trigger.cxx:65
 AliT0Trigger.cxx:66
 AliT0Trigger.cxx:67
 AliT0Trigger.cxx:68
 AliT0Trigger.cxx:69
 AliT0Trigger.cxx:70
 AliT0Trigger.cxx:71
 AliT0Trigger.cxx:72
 AliT0Trigger.cxx:73
 AliT0Trigger.cxx:74
 AliT0Trigger.cxx:75
 AliT0Trigger.cxx:76
 AliT0Trigger.cxx:77
 AliT0Trigger.cxx:78
 AliT0Trigger.cxx:79
 AliT0Trigger.cxx:80
 AliT0Trigger.cxx:81
 AliT0Trigger.cxx:82
 AliT0Trigger.cxx:83
 AliT0Trigger.cxx:84
 AliT0Trigger.cxx:85
 AliT0Trigger.cxx:86
 AliT0Trigger.cxx:87
 AliT0Trigger.cxx:88
 AliT0Trigger.cxx:89
 AliT0Trigger.cxx:90
 AliT0Trigger.cxx:91
 AliT0Trigger.cxx:92
 AliT0Trigger.cxx:93
 AliT0Trigger.cxx:94
 AliT0Trigger.cxx:95
 AliT0Trigger.cxx:96
 AliT0Trigger.cxx:97
 AliT0Trigger.cxx:98
 AliT0Trigger.cxx:99
 AliT0Trigger.cxx:100
 AliT0Trigger.cxx:101
 AliT0Trigger.cxx:102
 AliT0Trigger.cxx:103
 AliT0Trigger.cxx:104
 AliT0Trigger.cxx:105
 AliT0Trigger.cxx:106
 AliT0Trigger.cxx:107
 AliT0Trigger.cxx:108
 AliT0Trigger.cxx:109
 AliT0Trigger.cxx:110
 AliT0Trigger.cxx:111
 AliT0Trigger.cxx:112
 AliT0Trigger.cxx:113
 AliT0Trigger.cxx:114
 AliT0Trigger.cxx:115
 AliT0Trigger.cxx:116
 AliT0Trigger.cxx:117
 AliT0Trigger.cxx:118
 AliT0Trigger.cxx:119
 AliT0Trigger.cxx:120
 AliT0Trigger.cxx:121
 AliT0Trigger.cxx:122
 AliT0Trigger.cxx:123
 AliT0Trigger.cxx:124
 AliT0Trigger.cxx:125
 AliT0Trigger.cxx:126
 AliT0Trigger.cxx:127
 AliT0Trigger.cxx:128
 AliT0Trigger.cxx:129