ROOT logo
//
// Base class to implement any computation within the RSN package.
// It contains only an array of output objects which must derive
// from AliRsnOutput.
// Its core functions ar Init() and DoLoop() which must be
// overloaded by any class which inherits from this.
//

#include <TList.h>
#include <TEntryList.h>

#include "AliLog.h"

#include "AliRsnDaughterSelector.h"

#include "AliRsnLoop.h"

ClassImp(AliRsnLoop)

//_____________________________________________________________________________
AliRsnLoop::AliRsnLoop(const char *name, Bool_t isMixed) :
   TNamed(name, ""),
   fIsMixed(isMixed),
   fEventCuts(0x0),
   fOutputs("AliRsnListOutput", 0)
{
//
// Default constructor
//
}

//_____________________________________________________________________________
AliRsnLoop::AliRsnLoop(const AliRsnLoop &copy) :
   TNamed(copy),
   fIsMixed(copy.fIsMixed),
   fEventCuts(copy.fEventCuts),
   fOutputs(copy.fOutputs)
{
//
// Default constructor
//
}

//_____________________________________________________________________________
AliRsnLoop &AliRsnLoop::operator=(const AliRsnLoop &copy)
{
//
// Assignment operator
//
   if (this == &copy)
      return *this;
   fIsMixed = copy.fIsMixed;
   fEventCuts = copy.fEventCuts;
   fOutputs = copy.fOutputs;
   return (*this);
}

//_____________________________________________________________________________
AliRsnLoop::~AliRsnLoop()
{
//
// Destructor
//
}

//_____________________________________________________________________________
void AliRsnLoop::AddOutput(TObject *object)
{
//
// Adds an object to any of the collections.
// The target depends on the object type.
// Returns kFALSE if the addition failed.
//

   //fOutputs.AddLast(out);
   AliRsnListOutput *out = (AliRsnListOutput *)object;
   Int_t n = fOutputs.GetEntries();
   new (fOutputs[n]) AliRsnListOutput(*out);
}

//_____________________________________________________________________________
void AliRsnLoop::Print(Option_t *) const
{
//
// Prints info about pair
//

   TObjArrayIter next(&fOutputs);
   AliRsnListOutput *out = 0x0;

   while ( (out = (AliRsnListOutput *)next()) ) {
      out->Print();
   }
}

//_____________________________________________________________________________
Bool_t AliRsnLoop::OkEvent(AliRsnEvent *rsn)
{
//
// If event cuts are defined, check event against them
//

   if (fEventCuts)
      return fEventCuts->IsSelected(rsn);
   else
      return kTRUE;
}

//_____________________________________________________________________________
Bool_t AliRsnLoop::Init(const char *prefix, TList *list)
{
//
// Initialization function.
// Loops on all outputs, and initialize each of them.
// Returns kTRUE only if all initializations were successful.
//

   TObjArrayIter next(&fOutputs);
   AliRsnListOutput *out;
   Bool_t globalOK = kTRUE;

   while ( (out = (AliRsnListOutput *)next()) ) {
      globalOK = globalOK && out->Init(prefix, list);
   }

   AliInfo(Form("[%s] Object initialization: %s", GetName(), (globalOK ? "successful" : "failed")));
   return globalOK;
}

//_____________________________________________________________________________
Int_t AliRsnLoop::DoLoop
(AliRsnEvent *, AliRsnDaughterSelector *, AliRsnEvent *, AliRsnDaughterSelector *)
{
//
// Main loop.
// Performs all the computations, looping on the passed event(s) and using the lists
// of selected daughters which are provided, for allowing the user to choose what to do
// with them.
//

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