#include <Riostream.h>
#include <TNamed.h>
#include <TString.h>
#include <TObjArray.h>
#include <TRandom.h>
#include "AliLog.h"
#include "AliRun.h"
#include "AliRunLoader.h"
#include "AliLoader.h"
#include "AliTriggerInput.h"
#include "AliTriggerDetector.h"
using std::endl;
using std::cout;
using std::hex;
using std::dec;
ClassImp( AliTriggerDetector )
AliTriggerDetector::AliTriggerDetector() :
TNamed(),
fMask(0),
fInputs()
{
}
AliTriggerDetector::AliTriggerDetector(const AliTriggerDetector & de ):
TNamed(de),
fMask(de.fMask),
fInputs(de.fInputs)
{
}
AliTriggerDetector::~AliTriggerDetector()
{
Int_t ninputs = fInputs.GetEntriesFast();
for(Int_t i = 0; i < ninputs; i++) {
AliTriggerInput *inp = (AliTriggerInput *)fInputs.At(i);
if (inp->GetSignature() == -1 &&
inp->GetMask() == 0)
delete fInputs.RemoveAt(i);
}
}
void AliTriggerDetector::AssignInputs(const TObjArray &inputs)
{
if( fInputs.GetEntriesFast() == 0 ) {
CreateInputs();
}
TString name = GetName();
TObjArray* availInputs = &fInputs;
Int_t ninputs = inputs.GetEntriesFast();
for( Int_t j=0; j<ninputs; j++ ) {
AliTriggerInput *inp = (AliTriggerInput*)inputs.At(j);
if ( name.CompareTo(inp->GetModule().Data()) ) continue;
TObject *tempObj = availInputs->FindObject(inp->GetInputName().Data());
if ( tempObj ) {
Int_t tempIndex = availInputs->IndexOf(tempObj);
delete availInputs->Remove(tempObj);
fInputs.AddAt( inp, tempIndex );
inp->Enable();
AliDebug(1,Form("Trigger input (%s) is found in the CTP configuration. Therefore it is enabled for trigger detector (%s)",
inp->GetInputName().Data(),name.Data()));
}
else {
AliWarning(Form("Trigger Input (%s) is not implemented for the trigger detector (%s) ! It will be disabled !",
inp->GetInputName().Data(),name.Data()));
}
}
for( Int_t j=0; j<fInputs.GetEntriesFast(); j++ ) {
AliTriggerInput *inp = (AliTriggerInput *)fInputs.At(j);
if (inp->GetSignature() == -1 &&
inp->GetMask() == 0) {
inp->Enable();
AliDebug(1,Form("Trigger input (%s) was not found in the CTP configuration. Therefore it will be run in a stand-alone mode",
inp->GetInputName().Data()));
}
}
fInputs.SetOwner(kFALSE);
}
void AliTriggerDetector::CreateInputs()
{
if( fInputs.GetEntriesFast() > 0 ) return;
fInputs.AddLast( new AliTriggerInput( "TEST1_L0", "TEST", 0 ) );
fInputs.AddLast( new AliTriggerInput( "TEST2_L0", "TEST", 0 ) );
fInputs.AddLast( new AliTriggerInput( "TEST3_L0", "TEST", 0 ) );
}
void AliTriggerDetector::Trigger()
{
AliWarning( Form( "Triggering dummy detector %s", GetName() ) );
AliRunLoader* runLoader = AliRunLoader::Instance();
AliInfo( Form( "Event %d", runLoader->GetEventNumber() ) );
TString loadername = GetName();
loadername.Append( "Loader" );
AliLoader * loader = runLoader->GetLoader( loadername.Data() );
if( loader ) {
loader->LoadDigits( "READ" );
TTree* digits = loader->TreeD();
if( digits ) {
}
loader->UnloadDigits();
}
Int_t nInputs = fInputs.GetEntriesFast();
for( Int_t j=0; j<nInputs; j++ ) {
AliTriggerInput* in = (AliTriggerInput*)fInputs.At( j );
if( gRandom->Rndm() > 0.5 ) {
in->Set();
fMask |= in->GetValue();
}
}
}
void AliTriggerDetector::SetInput( TString& name )
{
SetInput( name.Data() );
}
void AliTriggerDetector::SetInput( const char * name )
{
AliTriggerInput* in = ((AliTriggerInput*)fInputs.FindObject( name ));
if( in ) {
in->Set();
fMask |= in->GetValue();
} else
AliError( Form( "There is not input named %s", name ) );
}
void AliTriggerDetector::Print( const Option_t* opt ) const
{
cout << "Trigger Detector : " << GetName() << endl;
cout << " Trigger Class Mask: 0x" << hex << GetMask() << dec << endl;
Int_t nInputs = fInputs.GetEntriesFast();
for( Int_t j=0; j<nInputs; j++ ) {
AliTriggerInput* in = (AliTriggerInput*)fInputs.At( j );
in->Print( opt );
}
}
AliTriggerDetector.cxx:10 AliTriggerDetector.cxx:11 AliTriggerDetector.cxx:12 AliTriggerDetector.cxx:13 AliTriggerDetector.cxx:14 AliTriggerDetector.cxx:15 AliTriggerDetector.cxx:16 AliTriggerDetector.cxx:17 AliTriggerDetector.cxx:18 AliTriggerDetector.cxx:19 AliTriggerDetector.cxx:20 AliTriggerDetector.cxx:21 AliTriggerDetector.cxx:22 AliTriggerDetector.cxx:23 AliTriggerDetector.cxx:24 AliTriggerDetector.cxx:25 AliTriggerDetector.cxx:26 AliTriggerDetector.cxx:27 AliTriggerDetector.cxx:28 AliTriggerDetector.cxx:29 AliTriggerDetector.cxx:30 AliTriggerDetector.cxx:31 AliTriggerDetector.cxx:32 AliTriggerDetector.cxx:33 AliTriggerDetector.cxx:34 AliTriggerDetector.cxx:35 AliTriggerDetector.cxx:36 AliTriggerDetector.cxx:37 AliTriggerDetector.cxx:38 AliTriggerDetector.cxx:39 AliTriggerDetector.cxx:40 AliTriggerDetector.cxx:41 AliTriggerDetector.cxx:42 AliTriggerDetector.cxx:43 AliTriggerDetector.cxx:44 AliTriggerDetector.cxx:45 AliTriggerDetector.cxx:46 AliTriggerDetector.cxx:47 AliTriggerDetector.cxx:48 AliTriggerDetector.cxx:49 AliTriggerDetector.cxx:50 AliTriggerDetector.cxx:51 AliTriggerDetector.cxx:52 AliTriggerDetector.cxx:53 AliTriggerDetector.cxx:54 AliTriggerDetector.cxx:55 AliTriggerDetector.cxx:56 AliTriggerDetector.cxx:57 AliTriggerDetector.cxx:58 AliTriggerDetector.cxx:59 AliTriggerDetector.cxx:60 AliTriggerDetector.cxx:61 AliTriggerDetector.cxx:62 AliTriggerDetector.cxx:63 AliTriggerDetector.cxx:64 AliTriggerDetector.cxx:65 AliTriggerDetector.cxx:66 AliTriggerDetector.cxx:67 AliTriggerDetector.cxx:68 AliTriggerDetector.cxx:69 AliTriggerDetector.cxx:70 AliTriggerDetector.cxx:71 AliTriggerDetector.cxx:72 AliTriggerDetector.cxx:73 AliTriggerDetector.cxx:74 AliTriggerDetector.cxx:75 AliTriggerDetector.cxx:76 AliTriggerDetector.cxx:77 AliTriggerDetector.cxx:78 AliTriggerDetector.cxx:79 AliTriggerDetector.cxx:80 AliTriggerDetector.cxx:81 AliTriggerDetector.cxx:82 AliTriggerDetector.cxx:83 AliTriggerDetector.cxx:84 AliTriggerDetector.cxx:85 AliTriggerDetector.cxx:86 AliTriggerDetector.cxx:87 AliTriggerDetector.cxx:88 AliTriggerDetector.cxx:89 AliTriggerDetector.cxx:90 AliTriggerDetector.cxx:91 AliTriggerDetector.cxx:92 AliTriggerDetector.cxx:93 AliTriggerDetector.cxx:94 AliTriggerDetector.cxx:95 AliTriggerDetector.cxx:96 AliTriggerDetector.cxx:97 AliTriggerDetector.cxx:98 AliTriggerDetector.cxx:99 AliTriggerDetector.cxx:100 AliTriggerDetector.cxx:101 AliTriggerDetector.cxx:102 AliTriggerDetector.cxx:103 AliTriggerDetector.cxx:104 AliTriggerDetector.cxx:105 AliTriggerDetector.cxx:106 AliTriggerDetector.cxx:107 AliTriggerDetector.cxx:108 AliTriggerDetector.cxx:109 AliTriggerDetector.cxx:110 AliTriggerDetector.cxx:111 AliTriggerDetector.cxx:112 AliTriggerDetector.cxx:113 AliTriggerDetector.cxx:114 AliTriggerDetector.cxx:115 AliTriggerDetector.cxx:116 AliTriggerDetector.cxx:117 AliTriggerDetector.cxx:118 AliTriggerDetector.cxx:119 AliTriggerDetector.cxx:120 AliTriggerDetector.cxx:121 AliTriggerDetector.cxx:122 AliTriggerDetector.cxx:123 AliTriggerDetector.cxx:124 AliTriggerDetector.cxx:125 AliTriggerDetector.cxx:126 AliTriggerDetector.cxx:127 AliTriggerDetector.cxx:128 AliTriggerDetector.cxx:129 AliTriggerDetector.cxx:130 AliTriggerDetector.cxx:131 AliTriggerDetector.cxx:132 AliTriggerDetector.cxx:133 AliTriggerDetector.cxx:134 AliTriggerDetector.cxx:135 AliTriggerDetector.cxx:136 AliTriggerDetector.cxx:137 AliTriggerDetector.cxx:138 AliTriggerDetector.cxx:139 AliTriggerDetector.cxx:140 AliTriggerDetector.cxx:141 AliTriggerDetector.cxx:142 AliTriggerDetector.cxx:143 AliTriggerDetector.cxx:144 AliTriggerDetector.cxx:145 AliTriggerDetector.cxx:146 AliTriggerDetector.cxx:147 AliTriggerDetector.cxx:148 AliTriggerDetector.cxx:149 AliTriggerDetector.cxx:150 AliTriggerDetector.cxx:151 AliTriggerDetector.cxx:152 AliTriggerDetector.cxx:153 AliTriggerDetector.cxx:154 AliTriggerDetector.cxx:155 AliTriggerDetector.cxx:156 AliTriggerDetector.cxx:157 AliTriggerDetector.cxx:158 AliTriggerDetector.cxx:159 AliTriggerDetector.cxx:160 AliTriggerDetector.cxx:161 AliTriggerDetector.cxx:162 AliTriggerDetector.cxx:163 AliTriggerDetector.cxx:164 AliTriggerDetector.cxx:165 AliTriggerDetector.cxx:166 AliTriggerDetector.cxx:167 AliTriggerDetector.cxx:168 AliTriggerDetector.cxx:169 AliTriggerDetector.cxx:170 AliTriggerDetector.cxx:171 AliTriggerDetector.cxx:172 AliTriggerDetector.cxx:173 AliTriggerDetector.cxx:174 AliTriggerDetector.cxx:175 AliTriggerDetector.cxx:176 AliTriggerDetector.cxx:177 AliTriggerDetector.cxx:178 AliTriggerDetector.cxx:179 AliTriggerDetector.cxx:180 AliTriggerDetector.cxx:181 AliTriggerDetector.cxx:182 AliTriggerDetector.cxx:183 AliTriggerDetector.cxx:184 AliTriggerDetector.cxx:185 AliTriggerDetector.cxx:186 AliTriggerDetector.cxx:187 AliTriggerDetector.cxx:188 AliTriggerDetector.cxx:189 AliTriggerDetector.cxx:190 AliTriggerDetector.cxx:191 AliTriggerDetector.cxx:192 AliTriggerDetector.cxx:193 AliTriggerDetector.cxx:194 AliTriggerDetector.cxx:195 AliTriggerDetector.cxx:196 AliTriggerDetector.cxx:197 AliTriggerDetector.cxx:198 AliTriggerDetector.cxx:199 AliTriggerDetector.cxx:200 AliTriggerDetector.cxx:201 AliTriggerDetector.cxx:202 AliTriggerDetector.cxx:203 AliTriggerDetector.cxx:204 AliTriggerDetector.cxx:205 AliTriggerDetector.cxx:206 AliTriggerDetector.cxx:207 AliTriggerDetector.cxx:208 AliTriggerDetector.cxx:209 AliTriggerDetector.cxx:210 AliTriggerDetector.cxx:211 AliTriggerDetector.cxx:212 AliTriggerDetector.cxx:213 AliTriggerDetector.cxx:214 AliTriggerDetector.cxx:215 AliTriggerDetector.cxx:216 AliTriggerDetector.cxx:217 AliTriggerDetector.cxx:218 AliTriggerDetector.cxx:219 AliTriggerDetector.cxx:220