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$ */
// Author: Andrei Gheata, 05/01/2010

#include "AliTrigScheduler.h"

#include <TMath.h>
#include <TList.h>
#include <TObjArray.h>
#include "AliTrigScheduledEntry.h"

ClassImp(AliTrigScheduledGroup)

//==============================================================================
//
//   AliTrigScheduledGroup - A group of scheduled entries that will simply be
//                           fired-up sequentially. The group delay in global time
//                           units is the latest start time of the contained
//                           entries. A group has a priority assigned by the
//                           owner scheduler object. Groups are fired-up according
//                           a programable sequence.
//
//==============================================================================

//______________________________________________________________________________
AliTrigScheduledGroup::AliTrigScheduledGroup()
                      :TNamed(),
                       fPriority(0),
                       fDelay(0),
                       fEntries(NULL)
{
// I/O constructor. 
}

//______________________________________________________________________________
AliTrigScheduledGroup::AliTrigScheduledGroup(const char *name, Int_t priority)
                      :TNamed(name,""),
                       fPriority(priority),
                       fDelay(0),
                       fEntries(new TObjArray())
{
// Constructor.
}

//______________________________________________________________________________
AliTrigScheduledGroup::~AliTrigScheduledGroup()
{
// Destructor.
  if (fEntries) delete fEntries;
}  

//______________________________________________________________________________
void AliTrigScheduledGroup::AddEntry(AliTrigScheduledEntry *entry)
{
// Add a scheduled entry to the group. There is no check if an entry was added twice !
  if (!fEntries) fEntries = new TObjArray();
  fEntries->Add(entry);
}

//______________________________________________________________________________
void AliTrigScheduledGroup::FireUp(Int_t time)
{
// Fire-up all entries in the group.
  Int_t nentries = GetNentries();
  AliTrigScheduledEntry *entry;
  for (Int_t i=0; i<nentries; i++) {
    entry = (AliTrigScheduledEntry*)fEntries->At(i);
    entry->FireUp(time);
  }
}    

//______________________________________________________________________________
Int_t AliTrigScheduledGroup::GetNentries() const
{
// Get number of scheduled entries in the group.
  return (fEntries)?fEntries->GetEntriesFast():0;
}

//______________________________________________________________________________
void AliTrigScheduledGroup::Print(Option_t *option) const
{
// Print the group content.
  Int_t nentries = GetNentries();
  printf("Group: %s containing %d entries.\n", GetName(), nentries);
  TString opt(option);
  opt.ToUpper();
  // Check if details are requested.
  if (!opt.Contains("D")) return;
  for (Int_t i=0; i<nentries; i++) {
    printf("   %d: ", i);
    fEntries->At(i)->Print(option);
  }   
}   

//______________________________________________________________________________
void AliTrigScheduledGroup::RemoveEntry(AliTrigScheduledEntry *entry)
{
// Remove an entry.
   if (!fEntries) return;
   fEntries->RecursiveRemove(entry);
   fEntries->Compress();
}
   
ClassImp(AliTrigScheduledSequence)

//==============================================================================
//
//   AliTrigScheduledSequence - A programable group sequence. Scheduled groups
//                      are owned and controlled by a trigger scheduler. They
//                      are fired-up in such a sequence. A sequence supports some
//                      default modes but can also be programed manually.
//
//==============================================================================

//______________________________________________________________________________
AliTrigScheduledSequence::AliTrigScheduledSequence()
                :TNamed(),
                 fScheduler(NULL),
                 fNgroups(0),
                 fType(AliTrigScheduledSequence::kDefault),
                 fArray(NULL)
{
// I/O constructor
}

//______________________________________________________________________________
AliTrigScheduledSequence::AliTrigScheduledSequence(const char *name, AliTrigScheduler *scheduler)
                :TNamed(name,""),
                 fScheduler(scheduler),
                 fNgroups(scheduler->GetNgroups()),
                 fType(AliTrigScheduledSequence::kDefault),
                 fArray(NULL)
{
// Constructor
  if (fNgroups) {
    fArray = new Int_t[fNgroups];
    for (Int_t i=0; i<fNgroups; i++) fArray[i] = i;
  }
}    
   
//______________________________________________________________________________
AliTrigScheduledSequence::~AliTrigScheduledSequence()
{
// Destructor.
  if (fArray) delete [] fArray;
}  

//______________________________________________________________________________
void AliTrigScheduledSequence::Print(Option_t *) const
{
// Print the sequence.
  printf("Sequence: %s scheduled by: %s\n", GetName(), fScheduler->GetName());
  printf("   type: %d  sequence: ", (Int_t)fType);
  for (Int_t i=0; i<fNgroups; i++) printf("%d ", fArray[i]);
  printf("\n");
}   

//______________________________________________________________________________
void AliTrigScheduledSequence::SortArray(Int_t *array, Bool_t increasing)
{
// Sort the internal sequence array.
  Int_t *ind = new Int_t[fNgroups];
  TMath::Sort(fNgroups, array, ind, !increasing);
  memcpy(fArray, ind, fNgroups*sizeof(Int_t));
  delete [] ind;
}
  
//______________________________________________________________________________
void AliTrigScheduledSequence::Sort(ESortingType type, Int_t *sequence)
{
  // Sort the group sequence according a predefined type. The sequence
  // custom input array is considered only for kCustom type.
  Int_t i;
  Int_t *array = 0;
  switch (type) {
    case AliTrigScheduledSequence::kDefault:
      // Just ID permutation
      for (i=0; i<fNgroups; i++) fArray[i] = i;
      break;
    case AliTrigScheduledSequence::kTimeInc:
      // Sort by increasing start time
      array = new Int_t[fNgroups];
      for (i=0; i<fNgroups; i++) {
        array[i] = fScheduler->GetScheduledGroup(i)->GetDelay();
      }  
      SortArray(array, kTRUE);
      break;
    case AliTrigScheduledSequence::kTimeDec:
      // Sort by decreasing start time
      array = new Int_t[fNgroups];
      for (i=0; i<fNgroups; i++) {
        array[i] = fScheduler->GetScheduledGroup(i)->GetDelay();
      }  
      SortArray(array, kFALSE);
      break;
    case AliTrigScheduledSequence::kPriorityInc:
      // Sort by increasing priority
      array = new Int_t[fNgroups];
      for (i=0; i<fNgroups; i++) {
        array[i] = fScheduler->GetScheduledGroup(i)->GetPriority();
      }  
      SortArray(array, kTRUE);
      break;
    case AliTrigScheduledSequence::kPriorityDec:
      // Sort by decreasing priority
      array = new Int_t[fNgroups];
      for (i=0; i<fNgroups; i++) {
        array[i] = fScheduler->GetScheduledGroup(i)->GetPriority();
      }  
      SortArray(array, kFALSE);
      break;
    case AliTrigScheduledSequence::kCustom:
      if (!sequence) {
        Error("Sort", "Sequence array must be provided for custom type");
        return;
      }
      memcpy(fArray, sequence, fNgroups*sizeof(Int_t));
  }
  if (array) delete [] array;  
}            

ClassImp(AliTrigScheduler)

//==============================================================================
//   AliTrigScheduler - Device response function scheduler. Every device has a
//                      scheduler, but the same scheduler can replay responses of
//                      several devices. A scheduler holds groups of scheduled 
//                      entries. The groups can be replayed in programable
//                      sequences. A default group and sequence are always created.
//==============================================================================

//______________________________________________________________________________
AliTrigScheduler::AliTrigScheduler()
                 :TNamed(),
                  fNgroups(0),
                  fGroups(NULL),
                  fSequences(NULL),
                  fCurrentSequence(NULL)
{
// I/O constructor.
}

//______________________________________________________________________________
AliTrigScheduler::AliTrigScheduler(const char *name)
                 :TNamed(name,""),
                  fNgroups(0),
                  fGroups(new TObjArray()),
                  fSequences(new TObjArray()),
                  fCurrentSequence(NULL)
{
// Constructor.
  AddGroup("default");
  AddSequence("default");
}

//______________________________________________________________________________
AliTrigScheduler::~AliTrigScheduler()
{
// Destructor.
  if (fGroups) {fGroups->Delete(); delete fGroups;}
  if (fSequences) {fSequences->Delete(); delete fSequences;}
}

//______________________________________________________________________________
void AliTrigScheduler::AddScheduledEntry(AliTrigScheduledEntry *entry, const char *togroup)
{
// Add a scheduled entry to a given group.
  AliTrigScheduledGroup *group = GetScheduledGroup(togroup);
  if (!group) {
    Error("AddScheduledEntry", "Group %s does not exist in scheduler %s", togroup, GetName());
    return;
  }
  group->AddEntry(entry);
}

//______________________________________________________________________________
AliTrigScheduledGroup *AliTrigScheduler::AddGroup(const char *groupname)
{
// Add a group to the list of groups.
  if (!fGroups) fGroups = new TObjArray();
  if (fGroups->FindObject(groupname)) {
    Error("AddGroup", "Scheduler %s contains already a group named: %s", GetName(), groupname);
    return NULL;
  }
  AliTrigScheduledGroup *group = new AliTrigScheduledGroup(groupname);
  fGroups->Add(group);
  return group;
}

//______________________________________________________________________________
AliTrigScheduledGroup *AliTrigScheduler::AddGroup(AliTrigScheduledGroup *group)
{
// Add a group to the list of groups.
  if (!fGroups) fGroups = new TObjArray();
  if (fGroups->FindObject(group->GetName())) {
    Error("AddGroup", "Scheduler %s contains already a group named: %s", GetName(), group->GetName());
    return NULL;
  }
  fGroups->Add(group);
  return group;
}

//______________________________________________________________________________
AliTrigScheduledSequence *AliTrigScheduler::AddSequence(const char *seqname, AliTrigScheduledSequence::ESortingType type, Int_t *sequence)
{
// Add a sequence to the scheduler. Becomes the current sequence.
  if (!fSequences) fSequences = new TObjArray();
  if (fSequences->FindObject(seqname)) {
    Error("AddSequence", "Scheduler %s contains already a sequence named: %s", GetName(), seqname);
    return NULL;
  }
  AliTrigScheduledSequence *seq = new AliTrigScheduledSequence(seqname, (AliTrigScheduler*)this); 
  seq->Sort(type, sequence);
  fCurrentSequence = seq;
  return seq;
}

//______________________________________________________________________________
void AliTrigScheduler::FireUp(Int_t time)
{
// Fire-up groups in the order given by the current sequence.
  if (!fCurrentSequence) Fatal("FireUp", "No scheduled sequence booked for scheduler: %s", GetName());
  Int_t *sequence = fCurrentSequence->GetArray();
  AliTrigScheduledGroup *group;
  for (Int_t i=0; i<fNgroups; i++) {
    group = GetScheduledGroup(sequence[i]);
    group->FireUp(time);
  }
}

//______________________________________________________________________________
AliTrigScheduledGroup *AliTrigScheduler::GetScheduledGroup(Int_t i) const
{
// Get i-th registered group (scheduling order does not matter, only group addition order).
  return (AliTrigScheduledGroup*)fGroups->At(i);
}

//______________________________________________________________________________
AliTrigScheduledGroup *AliTrigScheduler::GetScheduledGroup(const char *name) const
{
// Get a scheduled group by name.
  return (AliTrigScheduledGroup*)fGroups->FindObject(name);
}

//______________________________________________________________________________
void AliTrigScheduler::SetGroupPriority(const char *groupname, Int_t priority)
{
// Set the priority of a group.
  AliTrigScheduledGroup *group = GetScheduledGroup(groupname);
  if (!group) {
    Error("SetGroupPriority", "Scheduler %s has no group named: %s", GetName(), groupname);
    return;
  }
  group->SetPriority(priority);
}
  
 AliTrigScheduler.cxx:1
 AliTrigScheduler.cxx:2
 AliTrigScheduler.cxx:3
 AliTrigScheduler.cxx:4
 AliTrigScheduler.cxx:5
 AliTrigScheduler.cxx:6
 AliTrigScheduler.cxx:7
 AliTrigScheduler.cxx:8
 AliTrigScheduler.cxx:9
 AliTrigScheduler.cxx:10
 AliTrigScheduler.cxx:11
 AliTrigScheduler.cxx:12
 AliTrigScheduler.cxx:13
 AliTrigScheduler.cxx:14
 AliTrigScheduler.cxx:15
 AliTrigScheduler.cxx:16
 AliTrigScheduler.cxx:17
 AliTrigScheduler.cxx:18
 AliTrigScheduler.cxx:19
 AliTrigScheduler.cxx:20
 AliTrigScheduler.cxx:21
 AliTrigScheduler.cxx:22
 AliTrigScheduler.cxx:23
 AliTrigScheduler.cxx:24
 AliTrigScheduler.cxx:25
 AliTrigScheduler.cxx:26
 AliTrigScheduler.cxx:27
 AliTrigScheduler.cxx:28
 AliTrigScheduler.cxx:29
 AliTrigScheduler.cxx:30
 AliTrigScheduler.cxx:31
 AliTrigScheduler.cxx:32
 AliTrigScheduler.cxx:33
 AliTrigScheduler.cxx:34
 AliTrigScheduler.cxx:35
 AliTrigScheduler.cxx:36
 AliTrigScheduler.cxx:37
 AliTrigScheduler.cxx:38
 AliTrigScheduler.cxx:39
 AliTrigScheduler.cxx:40
 AliTrigScheduler.cxx:41
 AliTrigScheduler.cxx:42
 AliTrigScheduler.cxx:43
 AliTrigScheduler.cxx:44
 AliTrigScheduler.cxx:45
 AliTrigScheduler.cxx:46
 AliTrigScheduler.cxx:47
 AliTrigScheduler.cxx:48
 AliTrigScheduler.cxx:49
 AliTrigScheduler.cxx:50
 AliTrigScheduler.cxx:51
 AliTrigScheduler.cxx:52
 AliTrigScheduler.cxx:53
 AliTrigScheduler.cxx:54
 AliTrigScheduler.cxx:55
 AliTrigScheduler.cxx:56
 AliTrigScheduler.cxx:57
 AliTrigScheduler.cxx:58
 AliTrigScheduler.cxx:59
 AliTrigScheduler.cxx:60
 AliTrigScheduler.cxx:61
 AliTrigScheduler.cxx:62
 AliTrigScheduler.cxx:63
 AliTrigScheduler.cxx:64
 AliTrigScheduler.cxx:65
 AliTrigScheduler.cxx:66
 AliTrigScheduler.cxx:67
 AliTrigScheduler.cxx:68
 AliTrigScheduler.cxx:69
 AliTrigScheduler.cxx:70
 AliTrigScheduler.cxx:71
 AliTrigScheduler.cxx:72
 AliTrigScheduler.cxx:73
 AliTrigScheduler.cxx:74
 AliTrigScheduler.cxx:75
 AliTrigScheduler.cxx:76
 AliTrigScheduler.cxx:77
 AliTrigScheduler.cxx:78
 AliTrigScheduler.cxx:79
 AliTrigScheduler.cxx:80
 AliTrigScheduler.cxx:81
 AliTrigScheduler.cxx:82
 AliTrigScheduler.cxx:83
 AliTrigScheduler.cxx:84
 AliTrigScheduler.cxx:85
 AliTrigScheduler.cxx:86
 AliTrigScheduler.cxx:87
 AliTrigScheduler.cxx:88
 AliTrigScheduler.cxx:89
 AliTrigScheduler.cxx:90
 AliTrigScheduler.cxx:91
 AliTrigScheduler.cxx:92
 AliTrigScheduler.cxx:93
 AliTrigScheduler.cxx:94
 AliTrigScheduler.cxx:95
 AliTrigScheduler.cxx:96
 AliTrigScheduler.cxx:97
 AliTrigScheduler.cxx:98
 AliTrigScheduler.cxx:99
 AliTrigScheduler.cxx:100
 AliTrigScheduler.cxx:101
 AliTrigScheduler.cxx:102
 AliTrigScheduler.cxx:103
 AliTrigScheduler.cxx:104
 AliTrigScheduler.cxx:105
 AliTrigScheduler.cxx:106
 AliTrigScheduler.cxx:107
 AliTrigScheduler.cxx:108
 AliTrigScheduler.cxx:109
 AliTrigScheduler.cxx:110
 AliTrigScheduler.cxx:111
 AliTrigScheduler.cxx:112
 AliTrigScheduler.cxx:113
 AliTrigScheduler.cxx:114
 AliTrigScheduler.cxx:115
 AliTrigScheduler.cxx:116
 AliTrigScheduler.cxx:117
 AliTrigScheduler.cxx:118
 AliTrigScheduler.cxx:119
 AliTrigScheduler.cxx:120
 AliTrigScheduler.cxx:121
 AliTrigScheduler.cxx:122
 AliTrigScheduler.cxx:123
 AliTrigScheduler.cxx:124
 AliTrigScheduler.cxx:125
 AliTrigScheduler.cxx:126
 AliTrigScheduler.cxx:127
 AliTrigScheduler.cxx:128
 AliTrigScheduler.cxx:129
 AliTrigScheduler.cxx:130
 AliTrigScheduler.cxx:131
 AliTrigScheduler.cxx:132
 AliTrigScheduler.cxx:133
 AliTrigScheduler.cxx:134
 AliTrigScheduler.cxx:135
 AliTrigScheduler.cxx:136
 AliTrigScheduler.cxx:137
 AliTrigScheduler.cxx:138
 AliTrigScheduler.cxx:139
 AliTrigScheduler.cxx:140
 AliTrigScheduler.cxx:141
 AliTrigScheduler.cxx:142
 AliTrigScheduler.cxx:143
 AliTrigScheduler.cxx:144
 AliTrigScheduler.cxx:145
 AliTrigScheduler.cxx:146
 AliTrigScheduler.cxx:147
 AliTrigScheduler.cxx:148
 AliTrigScheduler.cxx:149
 AliTrigScheduler.cxx:150
 AliTrigScheduler.cxx:151
 AliTrigScheduler.cxx:152
 AliTrigScheduler.cxx:153
 AliTrigScheduler.cxx:154
 AliTrigScheduler.cxx:155
 AliTrigScheduler.cxx:156
 AliTrigScheduler.cxx:157
 AliTrigScheduler.cxx:158
 AliTrigScheduler.cxx:159
 AliTrigScheduler.cxx:160
 AliTrigScheduler.cxx:161
 AliTrigScheduler.cxx:162
 AliTrigScheduler.cxx:163
 AliTrigScheduler.cxx:164
 AliTrigScheduler.cxx:165
 AliTrigScheduler.cxx:166
 AliTrigScheduler.cxx:167
 AliTrigScheduler.cxx:168
 AliTrigScheduler.cxx:169
 AliTrigScheduler.cxx:170
 AliTrigScheduler.cxx:171
 AliTrigScheduler.cxx:172
 AliTrigScheduler.cxx:173
 AliTrigScheduler.cxx:174
 AliTrigScheduler.cxx:175
 AliTrigScheduler.cxx:176
 AliTrigScheduler.cxx:177
 AliTrigScheduler.cxx:178
 AliTrigScheduler.cxx:179
 AliTrigScheduler.cxx:180
 AliTrigScheduler.cxx:181
 AliTrigScheduler.cxx:182
 AliTrigScheduler.cxx:183
 AliTrigScheduler.cxx:184
 AliTrigScheduler.cxx:185
 AliTrigScheduler.cxx:186
 AliTrigScheduler.cxx:187
 AliTrigScheduler.cxx:188
 AliTrigScheduler.cxx:189
 AliTrigScheduler.cxx:190
 AliTrigScheduler.cxx:191
 AliTrigScheduler.cxx:192
 AliTrigScheduler.cxx:193
 AliTrigScheduler.cxx:194
 AliTrigScheduler.cxx:195
 AliTrigScheduler.cxx:196
 AliTrigScheduler.cxx:197
 AliTrigScheduler.cxx:198
 AliTrigScheduler.cxx:199
 AliTrigScheduler.cxx:200
 AliTrigScheduler.cxx:201
 AliTrigScheduler.cxx:202
 AliTrigScheduler.cxx:203
 AliTrigScheduler.cxx:204
 AliTrigScheduler.cxx:205
 AliTrigScheduler.cxx:206
 AliTrigScheduler.cxx:207
 AliTrigScheduler.cxx:208
 AliTrigScheduler.cxx:209
 AliTrigScheduler.cxx:210
 AliTrigScheduler.cxx:211
 AliTrigScheduler.cxx:212
 AliTrigScheduler.cxx:213
 AliTrigScheduler.cxx:214
 AliTrigScheduler.cxx:215
 AliTrigScheduler.cxx:216
 AliTrigScheduler.cxx:217
 AliTrigScheduler.cxx:218
 AliTrigScheduler.cxx:219
 AliTrigScheduler.cxx:220
 AliTrigScheduler.cxx:221
 AliTrigScheduler.cxx:222
 AliTrigScheduler.cxx:223
 AliTrigScheduler.cxx:224
 AliTrigScheduler.cxx:225
 AliTrigScheduler.cxx:226
 AliTrigScheduler.cxx:227
 AliTrigScheduler.cxx:228
 AliTrigScheduler.cxx:229
 AliTrigScheduler.cxx:230
 AliTrigScheduler.cxx:231
 AliTrigScheduler.cxx:232
 AliTrigScheduler.cxx:233
 AliTrigScheduler.cxx:234
 AliTrigScheduler.cxx:235
 AliTrigScheduler.cxx:236
 AliTrigScheduler.cxx:237
 AliTrigScheduler.cxx:238
 AliTrigScheduler.cxx:239
 AliTrigScheduler.cxx:240
 AliTrigScheduler.cxx:241
 AliTrigScheduler.cxx:242
 AliTrigScheduler.cxx:243
 AliTrigScheduler.cxx:244
 AliTrigScheduler.cxx:245
 AliTrigScheduler.cxx:246
 AliTrigScheduler.cxx:247
 AliTrigScheduler.cxx:248
 AliTrigScheduler.cxx:249
 AliTrigScheduler.cxx:250
 AliTrigScheduler.cxx:251
 AliTrigScheduler.cxx:252
 AliTrigScheduler.cxx:253
 AliTrigScheduler.cxx:254
 AliTrigScheduler.cxx:255
 AliTrigScheduler.cxx:256
 AliTrigScheduler.cxx:257
 AliTrigScheduler.cxx:258
 AliTrigScheduler.cxx:259
 AliTrigScheduler.cxx:260
 AliTrigScheduler.cxx:261
 AliTrigScheduler.cxx:262
 AliTrigScheduler.cxx:263
 AliTrigScheduler.cxx:264
 AliTrigScheduler.cxx:265
 AliTrigScheduler.cxx:266
 AliTrigScheduler.cxx:267
 AliTrigScheduler.cxx:268
 AliTrigScheduler.cxx:269
 AliTrigScheduler.cxx:270
 AliTrigScheduler.cxx:271
 AliTrigScheduler.cxx:272
 AliTrigScheduler.cxx:273
 AliTrigScheduler.cxx:274
 AliTrigScheduler.cxx:275
 AliTrigScheduler.cxx:276
 AliTrigScheduler.cxx:277
 AliTrigScheduler.cxx:278
 AliTrigScheduler.cxx:279
 AliTrigScheduler.cxx:280
 AliTrigScheduler.cxx:281
 AliTrigScheduler.cxx:282
 AliTrigScheduler.cxx:283
 AliTrigScheduler.cxx:284
 AliTrigScheduler.cxx:285
 AliTrigScheduler.cxx:286
 AliTrigScheduler.cxx:287
 AliTrigScheduler.cxx:288
 AliTrigScheduler.cxx:289
 AliTrigScheduler.cxx:290
 AliTrigScheduler.cxx:291
 AliTrigScheduler.cxx:292
 AliTrigScheduler.cxx:293
 AliTrigScheduler.cxx:294
 AliTrigScheduler.cxx:295
 AliTrigScheduler.cxx:296
 AliTrigScheduler.cxx:297
 AliTrigScheduler.cxx:298
 AliTrigScheduler.cxx:299
 AliTrigScheduler.cxx:300
 AliTrigScheduler.cxx:301
 AliTrigScheduler.cxx:302
 AliTrigScheduler.cxx:303
 AliTrigScheduler.cxx:304
 AliTrigScheduler.cxx:305
 AliTrigScheduler.cxx:306
 AliTrigScheduler.cxx:307
 AliTrigScheduler.cxx:308
 AliTrigScheduler.cxx:309
 AliTrigScheduler.cxx:310
 AliTrigScheduler.cxx:311
 AliTrigScheduler.cxx:312
 AliTrigScheduler.cxx:313
 AliTrigScheduler.cxx:314
 AliTrigScheduler.cxx:315
 AliTrigScheduler.cxx:316
 AliTrigScheduler.cxx:317
 AliTrigScheduler.cxx:318
 AliTrigScheduler.cxx:319
 AliTrigScheduler.cxx:320
 AliTrigScheduler.cxx:321
 AliTrigScheduler.cxx:322
 AliTrigScheduler.cxx:323
 AliTrigScheduler.cxx:324
 AliTrigScheduler.cxx:325
 AliTrigScheduler.cxx:326
 AliTrigScheduler.cxx:327
 AliTrigScheduler.cxx:328
 AliTrigScheduler.cxx:329
 AliTrigScheduler.cxx:330
 AliTrigScheduler.cxx:331
 AliTrigScheduler.cxx:332
 AliTrigScheduler.cxx:333
 AliTrigScheduler.cxx:334
 AliTrigScheduler.cxx:335
 AliTrigScheduler.cxx:336
 AliTrigScheduler.cxx:337
 AliTrigScheduler.cxx:338
 AliTrigScheduler.cxx:339
 AliTrigScheduler.cxx:340
 AliTrigScheduler.cxx:341
 AliTrigScheduler.cxx:342
 AliTrigScheduler.cxx:343
 AliTrigScheduler.cxx:344
 AliTrigScheduler.cxx:345
 AliTrigScheduler.cxx:346
 AliTrigScheduler.cxx:347
 AliTrigScheduler.cxx:348
 AliTrigScheduler.cxx:349
 AliTrigScheduler.cxx:350
 AliTrigScheduler.cxx:351
 AliTrigScheduler.cxx:352
 AliTrigScheduler.cxx:353
 AliTrigScheduler.cxx:354
 AliTrigScheduler.cxx:355
 AliTrigScheduler.cxx:356
 AliTrigScheduler.cxx:357
 AliTrigScheduler.cxx:358
 AliTrigScheduler.cxx:359
 AliTrigScheduler.cxx:360
 AliTrigScheduler.cxx:361
 AliTrigScheduler.cxx:362
 AliTrigScheduler.cxx:363
 AliTrigScheduler.cxx:364
 AliTrigScheduler.cxx:365
 AliTrigScheduler.cxx:366
 AliTrigScheduler.cxx:367
 AliTrigScheduler.cxx:368
 AliTrigScheduler.cxx:369
 AliTrigScheduler.cxx:370