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$ */

#include <TTree.h>
#include "AliMUONTrigger.h"

#include "AliLog.h"
#include "AliMUONGlobalTrigger.h"
#include "AliMUONVTriggerStore.h"
#include "AliRun.h"
#include "AliRunLoader.h"
#include "AliLoader.h"
#include "AliTriggerInput.h"


//-----------------------------------------------------------------------------
/// \class AliMUONTrigger
///
/// Implementation of AliTriggerDetector for MUON detector
///
/// So far, the inputs are taken from AliMUONTriggerDecision object
/// April 06, E.L.T.
/// May 06, taken info from Global Trigger branch (Ch.F)
///
/// \author E. Lopez Torres
//-----------------------------------------------------------------------------

//----------------------------------------------------------------------
/// \cond CLASSIMP
ClassImp(AliMUONTrigger)
/// \endcond

//----------------------------------------------------------------------
AliMUONTrigger::AliMUONTrigger()
  : AliTriggerDetector(), fTriggerStore(0x0)
{
/// Default constructor

   SetName("MUON");
   CreateInputs();
}

//----------------------------------------------------------------------
AliMUONTrigger::~AliMUONTrigger()
{
  /// Destructor
  delete fTriggerStore;
}

//----------------------------------------------------------------------
void AliMUONTrigger::CreateInputs()
{
   /// inputs 
   
   // Do not create inputs again!!
   if( fInputs.GetEntriesFast() > 0 ) return;
   
   fInputs.AddLast( new AliTriggerInput( "0MSL", "MUONTRG",  0 ) );
   fInputs.AddLast( new AliTriggerInput( "0MSH", "MUONTRG", 0 ) );

   fInputs.AddLast( new AliTriggerInput( "0MUL", "MUONTRG",  0 ) );
   fInputs.AddLast( new AliTriggerInput( "0MUH", "MUONTRG", 0 ) );

   fInputs.AddLast( new AliTriggerInput( "0MLL", "MUONTRG",  0 ) );
   fInputs.AddLast( new AliTriggerInput( "0MLH", "MUONTRG", 0 ) );
}

//----------------------------------------------------------------------
void AliMUONTrigger::Trigger()
{
  /// sets the trigger inputs

   AliRunLoader* runLoader = AliRunLoader::Instance();
  
   AliLoader * muonLoader = runLoader->GetDetectorLoader("MUON");
   muonLoader->LoadDigits("READ");

   TTree* treeD = muonLoader->TreeD();
   
   if (!treeD)
   {
     AliError("No TreeD available. Cannot make trigger");
     return;
   }
   
   if (!fTriggerStore) 
   {  
     fTriggerStore = AliMUONVTriggerStore::Create(*treeD);
     if (!fTriggerStore)
     {
       AliError("Could not create triggerStore from treeD");
       return;
     }     
   }

   Bool_t ok = fTriggerStore->Connect(*treeD,kTRUE);

   if (!ok)
   {
     AliError("Could not read trigger from TreeD !");
     return;
   }
   
   treeD->GetEvent(0);
   
   AliMUONGlobalTrigger* globalTrigger = fTriggerStore->Global();
   if (globalTrigger == 0x0) 
   { 
     AliWarning("No Global Trigger available");
   }
   else
   {
     // set CTP
     if (globalTrigger->SingleLpt())      SetInput("0MSL");
     if (globalTrigger->SingleHpt())      SetInput("0MSH");
     
     if (globalTrigger->PairUnlikeLpt())  SetInput("0MUL");
     if (globalTrigger->PairUnlikeHpt())  SetInput("0MUH");
     
     if (globalTrigger->PairLikeLpt())    SetInput("0MLL");
     if (globalTrigger->PairLikeHpt())    SetInput("0MLH");
   }
   muonLoader->UnloadDigits();
   fTriggerStore->Clear();
}
 AliMUONTrigger.cxx:1
 AliMUONTrigger.cxx:2
 AliMUONTrigger.cxx:3
 AliMUONTrigger.cxx:4
 AliMUONTrigger.cxx:5
 AliMUONTrigger.cxx:6
 AliMUONTrigger.cxx:7
 AliMUONTrigger.cxx:8
 AliMUONTrigger.cxx:9
 AliMUONTrigger.cxx:10
 AliMUONTrigger.cxx:11
 AliMUONTrigger.cxx:12
 AliMUONTrigger.cxx:13
 AliMUONTrigger.cxx:14
 AliMUONTrigger.cxx:15
 AliMUONTrigger.cxx:16
 AliMUONTrigger.cxx:17
 AliMUONTrigger.cxx:18
 AliMUONTrigger.cxx:19
 AliMUONTrigger.cxx:20
 AliMUONTrigger.cxx:21
 AliMUONTrigger.cxx:22
 AliMUONTrigger.cxx:23
 AliMUONTrigger.cxx:24
 AliMUONTrigger.cxx:25
 AliMUONTrigger.cxx:26
 AliMUONTrigger.cxx:27
 AliMUONTrigger.cxx:28
 AliMUONTrigger.cxx:29
 AliMUONTrigger.cxx:30
 AliMUONTrigger.cxx:31
 AliMUONTrigger.cxx:32
 AliMUONTrigger.cxx:33
 AliMUONTrigger.cxx:34
 AliMUONTrigger.cxx:35
 AliMUONTrigger.cxx:36
 AliMUONTrigger.cxx:37
 AliMUONTrigger.cxx:38
 AliMUONTrigger.cxx:39
 AliMUONTrigger.cxx:40
 AliMUONTrigger.cxx:41
 AliMUONTrigger.cxx:42
 AliMUONTrigger.cxx:43
 AliMUONTrigger.cxx:44
 AliMUONTrigger.cxx:45
 AliMUONTrigger.cxx:46
 AliMUONTrigger.cxx:47
 AliMUONTrigger.cxx:48
 AliMUONTrigger.cxx:49
 AliMUONTrigger.cxx:50
 AliMUONTrigger.cxx:51
 AliMUONTrigger.cxx:52
 AliMUONTrigger.cxx:53
 AliMUONTrigger.cxx:54
 AliMUONTrigger.cxx:55
 AliMUONTrigger.cxx:56
 AliMUONTrigger.cxx:57
 AliMUONTrigger.cxx:58
 AliMUONTrigger.cxx:59
 AliMUONTrigger.cxx:60
 AliMUONTrigger.cxx:61
 AliMUONTrigger.cxx:62
 AliMUONTrigger.cxx:63
 AliMUONTrigger.cxx:64
 AliMUONTrigger.cxx:65
 AliMUONTrigger.cxx:66
 AliMUONTrigger.cxx:67
 AliMUONTrigger.cxx:68
 AliMUONTrigger.cxx:69
 AliMUONTrigger.cxx:70
 AliMUONTrigger.cxx:71
 AliMUONTrigger.cxx:72
 AliMUONTrigger.cxx:73
 AliMUONTrigger.cxx:74
 AliMUONTrigger.cxx:75
 AliMUONTrigger.cxx:76
 AliMUONTrigger.cxx:77
 AliMUONTrigger.cxx:78
 AliMUONTrigger.cxx:79
 AliMUONTrigger.cxx:80
 AliMUONTrigger.cxx:81
 AliMUONTrigger.cxx:82
 AliMUONTrigger.cxx:83
 AliMUONTrigger.cxx:84
 AliMUONTrigger.cxx:85
 AliMUONTrigger.cxx:86
 AliMUONTrigger.cxx:87
 AliMUONTrigger.cxx:88
 AliMUONTrigger.cxx:89
 AliMUONTrigger.cxx:90
 AliMUONTrigger.cxx:91
 AliMUONTrigger.cxx:92
 AliMUONTrigger.cxx:93
 AliMUONTrigger.cxx:94
 AliMUONTrigger.cxx:95
 AliMUONTrigger.cxx:96
 AliMUONTrigger.cxx:97
 AliMUONTrigger.cxx:98
 AliMUONTrigger.cxx:99
 AliMUONTrigger.cxx:100
 AliMUONTrigger.cxx:101
 AliMUONTrigger.cxx:102
 AliMUONTrigger.cxx:103
 AliMUONTrigger.cxx:104
 AliMUONTrigger.cxx:105
 AliMUONTrigger.cxx:106
 AliMUONTrigger.cxx:107
 AliMUONTrigger.cxx:108
 AliMUONTrigger.cxx:109
 AliMUONTrigger.cxx:110
 AliMUONTrigger.cxx:111
 AliMUONTrigger.cxx:112
 AliMUONTrigger.cxx:113
 AliMUONTrigger.cxx:114
 AliMUONTrigger.cxx:115
 AliMUONTrigger.cxx:116
 AliMUONTrigger.cxx:117
 AliMUONTrigger.cxx:118
 AliMUONTrigger.cxx:119
 AliMUONTrigger.cxx:120
 AliMUONTrigger.cxx:121
 AliMUONTrigger.cxx:122
 AliMUONTrigger.cxx:123
 AliMUONTrigger.cxx:124
 AliMUONTrigger.cxx:125
 AliMUONTrigger.cxx:126
 AliMUONTrigger.cxx:127
 AliMUONTrigger.cxx:128
 AliMUONTrigger.cxx:129
 AliMUONTrigger.cxx:130
 AliMUONTrigger.cxx:131
 AliMUONTrigger.cxx:132
 AliMUONTrigger.cxx:133
 AliMUONTrigger.cxx:134
 AliMUONTrigger.cxx:135
 AliMUONTrigger.cxx:136
 AliMUONTrigger.cxx:137
 AliMUONTrigger.cxx:138
 AliMUONTrigger.cxx:139