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: AliTRDTriggerL0.cxx 31904 2009-04-08 16:42:03Z cblume $ */

///////////////////////////////////////////////////////////////////////////////
//                                                                           //
// TRD trigger L0 (pretrigger) simulation                                    //
// So far no real trigger decision is done.                                  //
//                                                                           //
///////////////////////////////////////////////////////////////////////////////

#include "TObjArray.h"

#include "AliLog.h"
#include "AliTriggerInput.h"
#include "AliRunLoader.h"
#include "AliLoader.h"

#include "AliTRDptrgParam.h"
#include "AliTRDptrgCBB.h"

#include "AliTRDTriggerL0.h"

AliTRDTriggerL0::AliTRDTriggerL0()
{
  // constructor

  SetName("TRD");
}

AliTRDTriggerL0::~AliTRDTriggerL0()
{
  // destructor
}

void AliTRDTriggerL0::CreateInputs()
{
  // create the L0 inputs which are provided by the TRD

  if (fInputs.GetEntriesFast() > 0)
    return;

  fInputs.AddLast(new AliTriggerInput("0HWU", "TRD", 1)); // TRD wake up
  fInputs.AddLast(new AliTriggerInput("0HSG", "TRD", 1)); // single gap
  fInputs.AddLast(new AliTriggerInput("0HDG", "TRD", 1)); // double gap
}

void AliTRDTriggerL0::Trigger()
{
  // do the actual trigger calculation

  AliRunLoader *runLoader = AliRunLoader::Instance();
  if (!runLoader)
    return;
  AliLoader *trdLoader = runLoader->GetLoader("TRDLoader");
  if (!trdLoader)
    return;

  AliTRDptrgParam* param = AliTRDptrgParam::Instance();

  AliTRDptrgCBB* ptrgCBB = new AliTRDptrgCBB(runLoader, param, AliTRDptrgParam::kDigits);

  Int_t* simulationResult;
  simulationResult = ptrgCBB->Simulate();
  if (!simulationResult) {
    return;
  }
  for (Int_t iResult = 1; iResult <= simulationResult[0]; iResult++) {
    AliDebug(5, Form("Result[%d]=0x%x\n",iResult,simulationResult[iResult]));
  }
  if ((simulationResult[0] > 0) || (simulationResult[1] > 0)) {
    AliInfo("Fired single gap trigger");
    SetInput("0HSG");
  }

  if (simulationResult[2] > 0) {
    AliInfo("Fired  double gap trigger");
    SetInput("0HDG");
  }

  if (simulationResult[3] > 0) {
    AliInfo("Fired TRD wake up call trigger");
    SetInput("0HWU");
  }

  delete ptrgCBB;
  delete[] simulationResult;
  simulationResult = 0x0;

  AliDebug(5, Form("memory state: %d", param->CheckVariables()));
}
 AliTRDTriggerL0.cxx:1
 AliTRDTriggerL0.cxx:2
 AliTRDTriggerL0.cxx:3
 AliTRDTriggerL0.cxx:4
 AliTRDTriggerL0.cxx:5
 AliTRDTriggerL0.cxx:6
 AliTRDTriggerL0.cxx:7
 AliTRDTriggerL0.cxx:8
 AliTRDTriggerL0.cxx:9
 AliTRDTriggerL0.cxx:10
 AliTRDTriggerL0.cxx:11
 AliTRDTriggerL0.cxx:12
 AliTRDTriggerL0.cxx:13
 AliTRDTriggerL0.cxx:14
 AliTRDTriggerL0.cxx:15
 AliTRDTriggerL0.cxx:16
 AliTRDTriggerL0.cxx:17
 AliTRDTriggerL0.cxx:18
 AliTRDTriggerL0.cxx:19
 AliTRDTriggerL0.cxx:20
 AliTRDTriggerL0.cxx:21
 AliTRDTriggerL0.cxx:22
 AliTRDTriggerL0.cxx:23
 AliTRDTriggerL0.cxx:24
 AliTRDTriggerL0.cxx:25
 AliTRDTriggerL0.cxx:26
 AliTRDTriggerL0.cxx:27
 AliTRDTriggerL0.cxx:28
 AliTRDTriggerL0.cxx:29
 AliTRDTriggerL0.cxx:30
 AliTRDTriggerL0.cxx:31
 AliTRDTriggerL0.cxx:32
 AliTRDTriggerL0.cxx:33
 AliTRDTriggerL0.cxx:34
 AliTRDTriggerL0.cxx:35
 AliTRDTriggerL0.cxx:36
 AliTRDTriggerL0.cxx:37
 AliTRDTriggerL0.cxx:38
 AliTRDTriggerL0.cxx:39
 AliTRDTriggerL0.cxx:40
 AliTRDTriggerL0.cxx:41
 AliTRDTriggerL0.cxx:42
 AliTRDTriggerL0.cxx:43
 AliTRDTriggerL0.cxx:44
 AliTRDTriggerL0.cxx:45
 AliTRDTriggerL0.cxx:46
 AliTRDTriggerL0.cxx:47
 AliTRDTriggerL0.cxx:48
 AliTRDTriggerL0.cxx:49
 AliTRDTriggerL0.cxx:50
 AliTRDTriggerL0.cxx:51
 AliTRDTriggerL0.cxx:52
 AliTRDTriggerL0.cxx:53
 AliTRDTriggerL0.cxx:54
 AliTRDTriggerL0.cxx:55
 AliTRDTriggerL0.cxx:56
 AliTRDTriggerL0.cxx:57
 AliTRDTriggerL0.cxx:58
 AliTRDTriggerL0.cxx:59
 AliTRDTriggerL0.cxx:60
 AliTRDTriggerL0.cxx:61
 AliTRDTriggerL0.cxx:62
 AliTRDTriggerL0.cxx:63
 AliTRDTriggerL0.cxx:64
 AliTRDTriggerL0.cxx:65
 AliTRDTriggerL0.cxx:66
 AliTRDTriggerL0.cxx:67
 AliTRDTriggerL0.cxx:68
 AliTRDTriggerL0.cxx:69
 AliTRDTriggerL0.cxx:70
 AliTRDTriggerL0.cxx:71
 AliTRDTriggerL0.cxx:72
 AliTRDTriggerL0.cxx:73
 AliTRDTriggerL0.cxx:74
 AliTRDTriggerL0.cxx:75
 AliTRDTriggerL0.cxx:76
 AliTRDTriggerL0.cxx:77
 AliTRDTriggerL0.cxx:78
 AliTRDTriggerL0.cxx:79
 AliTRDTriggerL0.cxx:80
 AliTRDTriggerL0.cxx:81
 AliTRDTriggerL0.cxx:82
 AliTRDTriggerL0.cxx:83
 AliTRDTriggerL0.cxx:84
 AliTRDTriggerL0.cxx:85
 AliTRDTriggerL0.cxx:86
 AliTRDTriggerL0.cxx:87
 AliTRDTriggerL0.cxx:88
 AliTRDTriggerL0.cxx:89
 AliTRDTriggerL0.cxx:90
 AliTRDTriggerL0.cxx:91
 AliTRDTriggerL0.cxx:92
 AliTRDTriggerL0.cxx:93
 AliTRDTriggerL0.cxx:94
 AliTRDTriggerL0.cxx:95
 AliTRDTriggerL0.cxx:96
 AliTRDTriggerL0.cxx:97
 AliTRDTriggerL0.cxx:98
 AliTRDTriggerL0.cxx:99
 AliTRDTriggerL0.cxx:100
 AliTRDTriggerL0.cxx:101
 AliTRDTriggerL0.cxx:102
 AliTRDTriggerL0.cxx:103
 AliTRDTriggerL0.cxx:104