ROOT logo
//
// Analysis task for 'mini' sub-package
// Contains all definitions needed for running an analysis:
// -- global event cut
// -- a list of track cuts (any number)
// -- definitions of output histograms
// -- values to be computed.
// Each one must be defined using the "CREATE" methods, which
// add directly a new element in the task collections, and don't
// need an external object to be passed to the task itself.
//

#include <Riostream.h>

#include <TH1.h>
#include <TList.h>
#include <TTree.h>

#include "AliLog.h"
#include "AliEventplane.h"
#include "AliMultiplicity.h"
#include "AliTriggerAnalysis.h"
#include "AliAnalysisManager.h"
#include "AliInputEventHandler.h"

#include "AliESDtrackCuts.h"
#include "AliESDUtils.h"

#include "AliAODEvent.h"
#include "AliAODMCParticle.h"

#include "AliRsnCutSet.h"
#include "AliRsnMiniPair.h"
#include "AliRsnMiniEvent.h"
#include "AliRsnMiniParticle.h"

#include "AliRsnMiniMonitorTask.h"

ClassImp(AliRsnMiniMonitorTask)

//__________________________________________________________________________________________________
AliRsnMiniMonitorTask::AliRsnMiniMonitorTask() :
   AliAnalysisTaskSE(),
   fUseMC(kFALSE),
   fEvNum(0),
   fUseCentrality(kFALSE),
   fCentralityType("QUALITY"),
   fOutput(0x0),
   fHistograms("AliRsnMiniMonitor", 0),
   fEventCuts(0x0),
   fTrackCuts(0),
   fRsnEvent(),
   fBigOutput(kFALSE)
{
//
// Dummy constructor ALWAYS needed for I/O.
//
}

//__________________________________________________________________________________________________
AliRsnMiniMonitorTask::AliRsnMiniMonitorTask(const char *name, Bool_t useMC) :
   AliAnalysisTaskSE(name),
   fUseMC(useMC),
   fEvNum(0),
   fUseCentrality(kFALSE),
   fCentralityType("QUALITY"),
   fOutput(0x0),
   fHistograms("AliRsnMiniMonitor", 0),
   fEventCuts(0x0),
   fTrackCuts(0),
   fRsnEvent(),
   fBigOutput(kFALSE)
{
//
// Default constructor.
// Define input and output slots here (never in the dummy constructor)
// Input slot #0 works with a TChain - it is connected to the default input container
// Output slot #1 writes into a TH1 container
//

   DefineOutput(1, TList::Class());
}

//__________________________________________________________________________________________________
AliRsnMiniMonitorTask::AliRsnMiniMonitorTask(const AliRsnMiniMonitorTask &copy) :
   AliAnalysisTaskSE(copy),
   fUseMC(copy.fUseMC),
   fEvNum(0),
   fUseCentrality(copy.fUseCentrality),
   fCentralityType(copy.fCentralityType),
   fOutput(0x0),
   fHistograms(copy.fHistograms),
   fEventCuts(copy.fEventCuts),
   fTrackCuts(copy.fTrackCuts),
   fRsnEvent(),
   fBigOutput(copy.fBigOutput)
{
//
// Copy constructor.
// Implemented as requested by C++ standards.
// Can be used in PROOF and by plugins.
//
}

//__________________________________________________________________________________________________
AliRsnMiniMonitorTask &AliRsnMiniMonitorTask::operator=(const AliRsnMiniMonitorTask &copy)
{
//
// Assignment operator.
// Implemented as requested by C++ standards.
// Can be used in PROOF and by plugins.
//
   AliAnalysisTaskSE::operator=(copy);
   if (this == &copy)
      return *this;
   fUseMC = copy.fUseMC;
   fUseCentrality = copy.fUseCentrality;
   fCentralityType = copy.fCentralityType;
   fHistograms = copy.fHistograms;
   fEventCuts = copy.fEventCuts;
   fTrackCuts = copy.fTrackCuts;
   fBigOutput = copy.fBigOutput;

   return (*this);
}

//__________________________________________________________________________________________________
AliRsnMiniMonitorTask::~AliRsnMiniMonitorTask()
{
//
// Destructor.
// Clean-up the output list, but not the histograms that are put inside
// (the list is owner and will clean-up these histograms). Protect in PROOF case.
//


   if (fOutput && !AliAnalysisManager::GetAnalysisManager()->IsProofMode()) {
      delete fOutput;
   }
}

//__________________________________________________________________________________________________
Int_t AliRsnMiniMonitorTask::AddTrackCuts(AliRsnCutSet *cuts)
{
//
// Add a new cut set for a new criterion for track selection.
// A user can add as many as he wants, and each one corresponds
// to one of the available bits in the AliRsnMiniParticle mask.
// The only check is the following: if a cut set with the same name
// as the argument is there, this is not added.
// Return value is the array position of this set.
//

   TObject *obj = fTrackCuts.FindObject(cuts->GetName());

   if (obj) {
      AliInfo(Form("A cut set named '%s' already exists", cuts->GetName()));
      return fTrackCuts.IndexOf(obj);
   } else {
      fTrackCuts.AddLast(cuts);
      return fTrackCuts.IndexOf(cuts);
   }
}

//__________________________________________________________________________________________________
void AliRsnMiniMonitorTask::UserCreateOutputObjects()
{
//
// Initialization of outputs.
// This is called once per worker node.
//

   // reset counter
   fEvNum = 0;

   // message
   AliInfo(Form("Selected event characterization: %s (%s)", (fUseCentrality ? "centrality" : "multiplicity"), fCentralityType.Data()));

   // create list and set it as owner of its content (MANDATORY)
   if (fBigOutput) OpenFile(1);
   fOutput = new TList();
   fOutput->SetOwner();

   // create one histogram per each stored definition (event histograms)
   Int_t i, ndef = fHistograms.GetEntries();
   AliRsnMiniMonitor *def = 0x0;
   for (i = 0; i < ndef; i++) {
      def = (AliRsnMiniMonitor *)fHistograms[i];
      if (!def) continue;
      if (!def->Init(GetName(), fOutput)) {
         AliError(Form("Def '%s': failed initialization", def->GetName()));
         continue;
      }
   }

   // post data for ALL output slots >0 here, to get at least an empty histogram
   PostData(1, fOutput);
}

//__________________________________________________________________________________________________
void AliRsnMiniMonitorTask::UserExec(Option_t *)
{
//
// Computation loop.
// In this case, it checks if the event is acceptable, and eventually
// creates the corresponding mini-event and stores it in the buffer.
// The real histogram filling is done at the end, in "FinishTaskOutput".
//

   // event counter
   fEvNum++;

   // check current event
   Char_t check = CheckCurrentEvent();
   if (!check) return;

   // setup PID response
   AliAnalysisManager *man = AliAnalysisManager::GetAnalysisManager();
   AliInputEventHandler *inputHandler = (AliInputEventHandler *)man->GetInputEventHandler();
   fRsnEvent.SetPIDResponse(inputHandler->GetPIDResponse());

   // loop on monitors and fill them
   Int_t it, icut, nTracks = fRsnEvent.GetAbsoluteSum(), nCuts = fTrackCuts.GetEntriesFast();
   AliRsnDaughter cursor;
   AliRsnCutSet *cut = 0x0;
   AliRsnMiniMonitor *mon = 0x0;
   TObjArrayIter next(&fHistograms);
   for (it = 0; it < nTracks; it++) {
      fRsnEvent.SetDaughter(cursor, it, fUseMC);
      next.Reset();
      while ( (mon = (AliRsnMiniMonitor *)next()) ) {
         icut = mon->GetCutID();
         if (icut >= 0 && icut < nCuts) {
            cut = (AliRsnCutSet *)fTrackCuts[icut];
            if (!cut) {
               AliError("Cut not found");
               continue;
            }
            if (!cut->IsSelected(&cursor)) continue;
         }
         mon->Fill(&cursor, &fRsnEvent);
      }
   }

   // post data for computed stuff
   PostData(1, fOutput);
}

//__________________________________________________________________________________________________
void AliRsnMiniMonitorTask::Terminate(Option_t *)
{
//
// Draw result to screen, or perform fitting, normalizations
// Called once at the end of the query
//

   fOutput = dynamic_cast<TList *>(GetOutputData(1));
   if (!fOutput) {
      AliError("Could not retrieve TList fOutput");
      return;
   }
}

//__________________________________________________________________________________________________
Char_t AliRsnMiniMonitorTask::CheckCurrentEvent()
{
//
// This method checks if current event is OK for analysis.
// In case it is, the pointers of the local AliRsnEvent data member
// will point to it, in order to allow cut checking, otherwise the
// function exits with a failure message.
// ---
// ESD events must pass the physics selection, AOD are supposed to do.
// ---
// While checking the event, a histogram is filled to count the number
// of CINT1B, V0AND and CANDLE events, which are needed for normalization
// ---
// Return values can be:
//    -- 'E' if the event is accepted and is ESD
//    -- 'A' if the event is accepted and is AOD
//    --  0  if the event is not accepted
//

   // string to sum messages
   TString msg("");

   // check input type
   // exit points are provided in all cases an event is bad
   // if this block is passed, an event can be rejected only
   // if it does not pass the set of event cuts defined in the task
   Char_t output = 0;
   Bool_t isSelected;
   if (fInputEvent->InheritsFrom(AliESDEvent::Class())) {
      // type ESD
      output = 'E';
      // ESD specific check: Physics Selection
      // --> if this is failed, the event is rejected
      isSelected = (((AliInputEventHandler *)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & AliVEvent::kMB);
      if (!isSelected) {
         AliDebugClass(2, "Event does not pass physics selections");
         fRsnEvent.SetRef(0x0);
         fRsnEvent.SetRefMC(0x0);
         return 0;
      }
      // set reference to input
      fRsnEvent.SetRef(fInputEvent);
      // add MC if requested and available
      if (fUseMC) {
         if (fMCEvent)
            fRsnEvent.SetRefMC(fMCEvent);
         else {
            AliWarning("MC event requested but not available");
            fRsnEvent.SetRefMC(0x0);
         }
      }
   } else if (fInputEvent->InheritsFrom(AliAODEvent::Class())) {
      // type AOD
      output = 'A';
      // set reference to input
      fRsnEvent.SetRef(fInputEvent);
      // add MC if requested and available (it is in the same object)
      if (fUseMC) {
         fRsnEvent.SetRefMC(fInputEvent);
         if (!fRsnEvent.GetAODList()) {
            AliWarning("MC event requested but not available");
            fRsnEvent.SetRefMC(0x0);
         }
      }
   } else {
      AliError(Form("Bad input event class: %s", fInputEvent->ClassName()));
      // reset pointers in local AliRsnEvent object
      fRsnEvent.SetRef(0x0);
      fRsnEvent.SetRefMC(0x0);
      return 0;
   }

   // if event cuts are defined, they are checked here
   // final decision on the event depends on this
   isSelected = kTRUE;
   if (fEventCuts) {
      if (!fEventCuts->IsSelected(&fRsnEvent)) {
         msg += " -- Local cuts = REJECTED";
         isSelected = kFALSE;
      } else {
         msg += " -- Local cuts = ACCEPTED";
         isSelected = kTRUE;
      }
   } else {
      msg += " -- Local cuts = NONE";
      isSelected = kTRUE;
   }

   // if the above exit point is not taken, the event is accepted
   AliDebugClass(2, Form("Stats for event %d: %s", fEvNum, msg.Data()));
   if (isSelected) {
      return output;
   } else {
      return 0;
   }
}

//__________________________________________________________________________________________________
Double_t AliRsnMiniMonitorTask::ComputeCentrality(Bool_t isESD)
{
//
// Computes event centrality/multiplicity according to the criterion defined
// by two elements: (1) choice between multiplicity and centrality and
// (2) the string defining what criterion must be used for specific computation.
//

   if (fUseCentrality) {
      AliCentrality *centrality = fInputEvent->GetCentrality();
      if (!centrality) {
         AliError("Cannot compute centrality!");
         return -1.0;
      }
      return centrality->GetCentralityPercentile(fCentralityType.Data());
   } else {
      if (!fCentralityType.CompareTo("TRACKS"))
         return fInputEvent->GetNumberOfTracks();
      else if (!fCentralityType.CompareTo("QUALITY"))
         if (isESD)
            return AliESDtrackCuts::GetReferenceMultiplicity((AliESDEvent *)fInputEvent, kTRUE);
         else {
            Double_t count = 0.;
            Int_t iTrack, ntracksLoop = fInputEvent->GetNumberOfTracks();
            for (iTrack = 0; iTrack < ntracksLoop; iTrack++) {
               AliVTrack   *track = (AliVTrack *)fInputEvent->GetTrack(iTrack);
               AliAODTrack *aodt  = dynamic_cast<AliAODTrack *>(track);
               if (!aodt) continue;
               if (!aodt->TestFilterBit(5)) continue;
               count++;
            }
            return count;
         }
      else if (!fCentralityType.CompareTo("TRACKLETS")) {
         if (isESD) {
            const AliMultiplicity *mult = ((AliESDEvent *)fInputEvent)->GetMultiplicity();
            Float_t nClusters[6] = {0.0,0.0,0.0,0.0,0.0,0.0};
            for(Int_t ilay = 0; ilay < 6; ilay++) nClusters[ilay] = (Float_t)mult->GetNumberOfITSClusters(ilay);
            return AliESDUtils::GetCorrSPD2(nClusters[1], fInputEvent->GetPrimaryVertex()->GetZ());
         } else {
            AliWarning("Cannot compute multiplicity with SPD tracklets from AOD");
            return 1E20;
         }
      } else {
         AliError(Form("String '%s' does not define a possible multiplicity/centrality computation", fCentralityType.Data()));
         return -1.0;
      }
   }
}
 AliRsnMiniMonitorTask.cxx:1
 AliRsnMiniMonitorTask.cxx:2
 AliRsnMiniMonitorTask.cxx:3
 AliRsnMiniMonitorTask.cxx:4
 AliRsnMiniMonitorTask.cxx:5
 AliRsnMiniMonitorTask.cxx:6
 AliRsnMiniMonitorTask.cxx:7
 AliRsnMiniMonitorTask.cxx:8
 AliRsnMiniMonitorTask.cxx:9
 AliRsnMiniMonitorTask.cxx:10
 AliRsnMiniMonitorTask.cxx:11
 AliRsnMiniMonitorTask.cxx:12
 AliRsnMiniMonitorTask.cxx:13
 AliRsnMiniMonitorTask.cxx:14
 AliRsnMiniMonitorTask.cxx:15
 AliRsnMiniMonitorTask.cxx:16
 AliRsnMiniMonitorTask.cxx:17
 AliRsnMiniMonitorTask.cxx:18
 AliRsnMiniMonitorTask.cxx:19
 AliRsnMiniMonitorTask.cxx:20
 AliRsnMiniMonitorTask.cxx:21
 AliRsnMiniMonitorTask.cxx:22
 AliRsnMiniMonitorTask.cxx:23
 AliRsnMiniMonitorTask.cxx:24
 AliRsnMiniMonitorTask.cxx:25
 AliRsnMiniMonitorTask.cxx:26
 AliRsnMiniMonitorTask.cxx:27
 AliRsnMiniMonitorTask.cxx:28
 AliRsnMiniMonitorTask.cxx:29
 AliRsnMiniMonitorTask.cxx:30
 AliRsnMiniMonitorTask.cxx:31
 AliRsnMiniMonitorTask.cxx:32
 AliRsnMiniMonitorTask.cxx:33
 AliRsnMiniMonitorTask.cxx:34
 AliRsnMiniMonitorTask.cxx:35
 AliRsnMiniMonitorTask.cxx:36
 AliRsnMiniMonitorTask.cxx:37
 AliRsnMiniMonitorTask.cxx:38
 AliRsnMiniMonitorTask.cxx:39
 AliRsnMiniMonitorTask.cxx:40
 AliRsnMiniMonitorTask.cxx:41
 AliRsnMiniMonitorTask.cxx:42
 AliRsnMiniMonitorTask.cxx:43
 AliRsnMiniMonitorTask.cxx:44
 AliRsnMiniMonitorTask.cxx:45
 AliRsnMiniMonitorTask.cxx:46
 AliRsnMiniMonitorTask.cxx:47
 AliRsnMiniMonitorTask.cxx:48
 AliRsnMiniMonitorTask.cxx:49
 AliRsnMiniMonitorTask.cxx:50
 AliRsnMiniMonitorTask.cxx:51
 AliRsnMiniMonitorTask.cxx:52
 AliRsnMiniMonitorTask.cxx:53
 AliRsnMiniMonitorTask.cxx:54
 AliRsnMiniMonitorTask.cxx:55
 AliRsnMiniMonitorTask.cxx:56
 AliRsnMiniMonitorTask.cxx:57
 AliRsnMiniMonitorTask.cxx:58
 AliRsnMiniMonitorTask.cxx:59
 AliRsnMiniMonitorTask.cxx:60
 AliRsnMiniMonitorTask.cxx:61
 AliRsnMiniMonitorTask.cxx:62
 AliRsnMiniMonitorTask.cxx:63
 AliRsnMiniMonitorTask.cxx:64
 AliRsnMiniMonitorTask.cxx:65
 AliRsnMiniMonitorTask.cxx:66
 AliRsnMiniMonitorTask.cxx:67
 AliRsnMiniMonitorTask.cxx:68
 AliRsnMiniMonitorTask.cxx:69
 AliRsnMiniMonitorTask.cxx:70
 AliRsnMiniMonitorTask.cxx:71
 AliRsnMiniMonitorTask.cxx:72
 AliRsnMiniMonitorTask.cxx:73
 AliRsnMiniMonitorTask.cxx:74
 AliRsnMiniMonitorTask.cxx:75
 AliRsnMiniMonitorTask.cxx:76
 AliRsnMiniMonitorTask.cxx:77
 AliRsnMiniMonitorTask.cxx:78
 AliRsnMiniMonitorTask.cxx:79
 AliRsnMiniMonitorTask.cxx:80
 AliRsnMiniMonitorTask.cxx:81
 AliRsnMiniMonitorTask.cxx:82
 AliRsnMiniMonitorTask.cxx:83
 AliRsnMiniMonitorTask.cxx:84
 AliRsnMiniMonitorTask.cxx:85
 AliRsnMiniMonitorTask.cxx:86
 AliRsnMiniMonitorTask.cxx:87
 AliRsnMiniMonitorTask.cxx:88
 AliRsnMiniMonitorTask.cxx:89
 AliRsnMiniMonitorTask.cxx:90
 AliRsnMiniMonitorTask.cxx:91
 AliRsnMiniMonitorTask.cxx:92
 AliRsnMiniMonitorTask.cxx:93
 AliRsnMiniMonitorTask.cxx:94
 AliRsnMiniMonitorTask.cxx:95
 AliRsnMiniMonitorTask.cxx:96
 AliRsnMiniMonitorTask.cxx:97
 AliRsnMiniMonitorTask.cxx:98
 AliRsnMiniMonitorTask.cxx:99
 AliRsnMiniMonitorTask.cxx:100
 AliRsnMiniMonitorTask.cxx:101
 AliRsnMiniMonitorTask.cxx:102
 AliRsnMiniMonitorTask.cxx:103
 AliRsnMiniMonitorTask.cxx:104
 AliRsnMiniMonitorTask.cxx:105
 AliRsnMiniMonitorTask.cxx:106
 AliRsnMiniMonitorTask.cxx:107
 AliRsnMiniMonitorTask.cxx:108
 AliRsnMiniMonitorTask.cxx:109
 AliRsnMiniMonitorTask.cxx:110
 AliRsnMiniMonitorTask.cxx:111
 AliRsnMiniMonitorTask.cxx:112
 AliRsnMiniMonitorTask.cxx:113
 AliRsnMiniMonitorTask.cxx:114
 AliRsnMiniMonitorTask.cxx:115
 AliRsnMiniMonitorTask.cxx:116
 AliRsnMiniMonitorTask.cxx:117
 AliRsnMiniMonitorTask.cxx:118
 AliRsnMiniMonitorTask.cxx:119
 AliRsnMiniMonitorTask.cxx:120
 AliRsnMiniMonitorTask.cxx:121
 AliRsnMiniMonitorTask.cxx:122
 AliRsnMiniMonitorTask.cxx:123
 AliRsnMiniMonitorTask.cxx:124
 AliRsnMiniMonitorTask.cxx:125
 AliRsnMiniMonitorTask.cxx:126
 AliRsnMiniMonitorTask.cxx:127
 AliRsnMiniMonitorTask.cxx:128
 AliRsnMiniMonitorTask.cxx:129
 AliRsnMiniMonitorTask.cxx:130
 AliRsnMiniMonitorTask.cxx:131
 AliRsnMiniMonitorTask.cxx:132
 AliRsnMiniMonitorTask.cxx:133
 AliRsnMiniMonitorTask.cxx:134
 AliRsnMiniMonitorTask.cxx:135
 AliRsnMiniMonitorTask.cxx:136
 AliRsnMiniMonitorTask.cxx:137
 AliRsnMiniMonitorTask.cxx:138
 AliRsnMiniMonitorTask.cxx:139
 AliRsnMiniMonitorTask.cxx:140
 AliRsnMiniMonitorTask.cxx:141
 AliRsnMiniMonitorTask.cxx:142
 AliRsnMiniMonitorTask.cxx:143
 AliRsnMiniMonitorTask.cxx:144
 AliRsnMiniMonitorTask.cxx:145
 AliRsnMiniMonitorTask.cxx:146
 AliRsnMiniMonitorTask.cxx:147
 AliRsnMiniMonitorTask.cxx:148
 AliRsnMiniMonitorTask.cxx:149
 AliRsnMiniMonitorTask.cxx:150
 AliRsnMiniMonitorTask.cxx:151
 AliRsnMiniMonitorTask.cxx:152
 AliRsnMiniMonitorTask.cxx:153
 AliRsnMiniMonitorTask.cxx:154
 AliRsnMiniMonitorTask.cxx:155
 AliRsnMiniMonitorTask.cxx:156
 AliRsnMiniMonitorTask.cxx:157
 AliRsnMiniMonitorTask.cxx:158
 AliRsnMiniMonitorTask.cxx:159
 AliRsnMiniMonitorTask.cxx:160
 AliRsnMiniMonitorTask.cxx:161
 AliRsnMiniMonitorTask.cxx:162
 AliRsnMiniMonitorTask.cxx:163
 AliRsnMiniMonitorTask.cxx:164
 AliRsnMiniMonitorTask.cxx:165
 AliRsnMiniMonitorTask.cxx:166
 AliRsnMiniMonitorTask.cxx:167
 AliRsnMiniMonitorTask.cxx:168
 AliRsnMiniMonitorTask.cxx:169
 AliRsnMiniMonitorTask.cxx:170
 AliRsnMiniMonitorTask.cxx:171
 AliRsnMiniMonitorTask.cxx:172
 AliRsnMiniMonitorTask.cxx:173
 AliRsnMiniMonitorTask.cxx:174
 AliRsnMiniMonitorTask.cxx:175
 AliRsnMiniMonitorTask.cxx:176
 AliRsnMiniMonitorTask.cxx:177
 AliRsnMiniMonitorTask.cxx:178
 AliRsnMiniMonitorTask.cxx:179
 AliRsnMiniMonitorTask.cxx:180
 AliRsnMiniMonitorTask.cxx:181
 AliRsnMiniMonitorTask.cxx:182
 AliRsnMiniMonitorTask.cxx:183
 AliRsnMiniMonitorTask.cxx:184
 AliRsnMiniMonitorTask.cxx:185
 AliRsnMiniMonitorTask.cxx:186
 AliRsnMiniMonitorTask.cxx:187
 AliRsnMiniMonitorTask.cxx:188
 AliRsnMiniMonitorTask.cxx:189
 AliRsnMiniMonitorTask.cxx:190
 AliRsnMiniMonitorTask.cxx:191
 AliRsnMiniMonitorTask.cxx:192
 AliRsnMiniMonitorTask.cxx:193
 AliRsnMiniMonitorTask.cxx:194
 AliRsnMiniMonitorTask.cxx:195
 AliRsnMiniMonitorTask.cxx:196
 AliRsnMiniMonitorTask.cxx:197
 AliRsnMiniMonitorTask.cxx:198
 AliRsnMiniMonitorTask.cxx:199
 AliRsnMiniMonitorTask.cxx:200
 AliRsnMiniMonitorTask.cxx:201
 AliRsnMiniMonitorTask.cxx:202
 AliRsnMiniMonitorTask.cxx:203
 AliRsnMiniMonitorTask.cxx:204
 AliRsnMiniMonitorTask.cxx:205
 AliRsnMiniMonitorTask.cxx:206
 AliRsnMiniMonitorTask.cxx:207
 AliRsnMiniMonitorTask.cxx:208
 AliRsnMiniMonitorTask.cxx:209
 AliRsnMiniMonitorTask.cxx:210
 AliRsnMiniMonitorTask.cxx:211
 AliRsnMiniMonitorTask.cxx:212
 AliRsnMiniMonitorTask.cxx:213
 AliRsnMiniMonitorTask.cxx:214
 AliRsnMiniMonitorTask.cxx:215
 AliRsnMiniMonitorTask.cxx:216
 AliRsnMiniMonitorTask.cxx:217
 AliRsnMiniMonitorTask.cxx:218
 AliRsnMiniMonitorTask.cxx:219
 AliRsnMiniMonitorTask.cxx:220
 AliRsnMiniMonitorTask.cxx:221
 AliRsnMiniMonitorTask.cxx:222
 AliRsnMiniMonitorTask.cxx:223
 AliRsnMiniMonitorTask.cxx:224
 AliRsnMiniMonitorTask.cxx:225
 AliRsnMiniMonitorTask.cxx:226
 AliRsnMiniMonitorTask.cxx:227
 AliRsnMiniMonitorTask.cxx:228
 AliRsnMiniMonitorTask.cxx:229
 AliRsnMiniMonitorTask.cxx:230
 AliRsnMiniMonitorTask.cxx:231
 AliRsnMiniMonitorTask.cxx:232
 AliRsnMiniMonitorTask.cxx:233
 AliRsnMiniMonitorTask.cxx:234
 AliRsnMiniMonitorTask.cxx:235
 AliRsnMiniMonitorTask.cxx:236
 AliRsnMiniMonitorTask.cxx:237
 AliRsnMiniMonitorTask.cxx:238
 AliRsnMiniMonitorTask.cxx:239
 AliRsnMiniMonitorTask.cxx:240
 AliRsnMiniMonitorTask.cxx:241
 AliRsnMiniMonitorTask.cxx:242
 AliRsnMiniMonitorTask.cxx:243
 AliRsnMiniMonitorTask.cxx:244
 AliRsnMiniMonitorTask.cxx:245
 AliRsnMiniMonitorTask.cxx:246
 AliRsnMiniMonitorTask.cxx:247
 AliRsnMiniMonitorTask.cxx:248
 AliRsnMiniMonitorTask.cxx:249
 AliRsnMiniMonitorTask.cxx:250
 AliRsnMiniMonitorTask.cxx:251
 AliRsnMiniMonitorTask.cxx:252
 AliRsnMiniMonitorTask.cxx:253
 AliRsnMiniMonitorTask.cxx:254
 AliRsnMiniMonitorTask.cxx:255
 AliRsnMiniMonitorTask.cxx:256
 AliRsnMiniMonitorTask.cxx:257
 AliRsnMiniMonitorTask.cxx:258
 AliRsnMiniMonitorTask.cxx:259
 AliRsnMiniMonitorTask.cxx:260
 AliRsnMiniMonitorTask.cxx:261
 AliRsnMiniMonitorTask.cxx:262
 AliRsnMiniMonitorTask.cxx:263
 AliRsnMiniMonitorTask.cxx:264
 AliRsnMiniMonitorTask.cxx:265
 AliRsnMiniMonitorTask.cxx:266
 AliRsnMiniMonitorTask.cxx:267
 AliRsnMiniMonitorTask.cxx:268
 AliRsnMiniMonitorTask.cxx:269
 AliRsnMiniMonitorTask.cxx:270
 AliRsnMiniMonitorTask.cxx:271
 AliRsnMiniMonitorTask.cxx:272
 AliRsnMiniMonitorTask.cxx:273
 AliRsnMiniMonitorTask.cxx:274
 AliRsnMiniMonitorTask.cxx:275
 AliRsnMiniMonitorTask.cxx:276
 AliRsnMiniMonitorTask.cxx:277
 AliRsnMiniMonitorTask.cxx:278
 AliRsnMiniMonitorTask.cxx:279
 AliRsnMiniMonitorTask.cxx:280
 AliRsnMiniMonitorTask.cxx:281
 AliRsnMiniMonitorTask.cxx:282
 AliRsnMiniMonitorTask.cxx:283
 AliRsnMiniMonitorTask.cxx:284
 AliRsnMiniMonitorTask.cxx:285
 AliRsnMiniMonitorTask.cxx:286
 AliRsnMiniMonitorTask.cxx:287
 AliRsnMiniMonitorTask.cxx:288
 AliRsnMiniMonitorTask.cxx:289
 AliRsnMiniMonitorTask.cxx:290
 AliRsnMiniMonitorTask.cxx:291
 AliRsnMiniMonitorTask.cxx:292
 AliRsnMiniMonitorTask.cxx:293
 AliRsnMiniMonitorTask.cxx:294
 AliRsnMiniMonitorTask.cxx:295
 AliRsnMiniMonitorTask.cxx:296
 AliRsnMiniMonitorTask.cxx:297
 AliRsnMiniMonitorTask.cxx:298
 AliRsnMiniMonitorTask.cxx:299
 AliRsnMiniMonitorTask.cxx:300
 AliRsnMiniMonitorTask.cxx:301
 AliRsnMiniMonitorTask.cxx:302
 AliRsnMiniMonitorTask.cxx:303
 AliRsnMiniMonitorTask.cxx:304
 AliRsnMiniMonitorTask.cxx:305
 AliRsnMiniMonitorTask.cxx:306
 AliRsnMiniMonitorTask.cxx:307
 AliRsnMiniMonitorTask.cxx:308
 AliRsnMiniMonitorTask.cxx:309
 AliRsnMiniMonitorTask.cxx:310
 AliRsnMiniMonitorTask.cxx:311
 AliRsnMiniMonitorTask.cxx:312
 AliRsnMiniMonitorTask.cxx:313
 AliRsnMiniMonitorTask.cxx:314
 AliRsnMiniMonitorTask.cxx:315
 AliRsnMiniMonitorTask.cxx:316
 AliRsnMiniMonitorTask.cxx:317
 AliRsnMiniMonitorTask.cxx:318
 AliRsnMiniMonitorTask.cxx:319
 AliRsnMiniMonitorTask.cxx:320
 AliRsnMiniMonitorTask.cxx:321
 AliRsnMiniMonitorTask.cxx:322
 AliRsnMiniMonitorTask.cxx:323
 AliRsnMiniMonitorTask.cxx:324
 AliRsnMiniMonitorTask.cxx:325
 AliRsnMiniMonitorTask.cxx:326
 AliRsnMiniMonitorTask.cxx:327
 AliRsnMiniMonitorTask.cxx:328
 AliRsnMiniMonitorTask.cxx:329
 AliRsnMiniMonitorTask.cxx:330
 AliRsnMiniMonitorTask.cxx:331
 AliRsnMiniMonitorTask.cxx:332
 AliRsnMiniMonitorTask.cxx:333
 AliRsnMiniMonitorTask.cxx:334
 AliRsnMiniMonitorTask.cxx:335
 AliRsnMiniMonitorTask.cxx:336
 AliRsnMiniMonitorTask.cxx:337
 AliRsnMiniMonitorTask.cxx:338
 AliRsnMiniMonitorTask.cxx:339
 AliRsnMiniMonitorTask.cxx:340
 AliRsnMiniMonitorTask.cxx:341
 AliRsnMiniMonitorTask.cxx:342
 AliRsnMiniMonitorTask.cxx:343
 AliRsnMiniMonitorTask.cxx:344
 AliRsnMiniMonitorTask.cxx:345
 AliRsnMiniMonitorTask.cxx:346
 AliRsnMiniMonitorTask.cxx:347
 AliRsnMiniMonitorTask.cxx:348
 AliRsnMiniMonitorTask.cxx:349
 AliRsnMiniMonitorTask.cxx:350
 AliRsnMiniMonitorTask.cxx:351
 AliRsnMiniMonitorTask.cxx:352
 AliRsnMiniMonitorTask.cxx:353
 AliRsnMiniMonitorTask.cxx:354
 AliRsnMiniMonitorTask.cxx:355
 AliRsnMiniMonitorTask.cxx:356
 AliRsnMiniMonitorTask.cxx:357
 AliRsnMiniMonitorTask.cxx:358
 AliRsnMiniMonitorTask.cxx:359
 AliRsnMiniMonitorTask.cxx:360
 AliRsnMiniMonitorTask.cxx:361
 AliRsnMiniMonitorTask.cxx:362
 AliRsnMiniMonitorTask.cxx:363
 AliRsnMiniMonitorTask.cxx:364
 AliRsnMiniMonitorTask.cxx:365
 AliRsnMiniMonitorTask.cxx:366
 AliRsnMiniMonitorTask.cxx:367
 AliRsnMiniMonitorTask.cxx:368
 AliRsnMiniMonitorTask.cxx:369
 AliRsnMiniMonitorTask.cxx:370
 AliRsnMiniMonitorTask.cxx:371
 AliRsnMiniMonitorTask.cxx:372
 AliRsnMiniMonitorTask.cxx:373
 AliRsnMiniMonitorTask.cxx:374
 AliRsnMiniMonitorTask.cxx:375
 AliRsnMiniMonitorTask.cxx:376
 AliRsnMiniMonitorTask.cxx:377
 AliRsnMiniMonitorTask.cxx:378
 AliRsnMiniMonitorTask.cxx:379
 AliRsnMiniMonitorTask.cxx:380
 AliRsnMiniMonitorTask.cxx:381
 AliRsnMiniMonitorTask.cxx:382
 AliRsnMiniMonitorTask.cxx:383
 AliRsnMiniMonitorTask.cxx:384
 AliRsnMiniMonitorTask.cxx:385
 AliRsnMiniMonitorTask.cxx:386
 AliRsnMiniMonitorTask.cxx:387
 AliRsnMiniMonitorTask.cxx:388
 AliRsnMiniMonitorTask.cxx:389
 AliRsnMiniMonitorTask.cxx:390
 AliRsnMiniMonitorTask.cxx:391
 AliRsnMiniMonitorTask.cxx:392
 AliRsnMiniMonitorTask.cxx:393
 AliRsnMiniMonitorTask.cxx:394
 AliRsnMiniMonitorTask.cxx:395
 AliRsnMiniMonitorTask.cxx:396
 AliRsnMiniMonitorTask.cxx:397
 AliRsnMiniMonitorTask.cxx:398
 AliRsnMiniMonitorTask.cxx:399
 AliRsnMiniMonitorTask.cxx:400
 AliRsnMiniMonitorTask.cxx:401
 AliRsnMiniMonitorTask.cxx:402
 AliRsnMiniMonitorTask.cxx:403
 AliRsnMiniMonitorTask.cxx:404
 AliRsnMiniMonitorTask.cxx:405
 AliRsnMiniMonitorTask.cxx:406
 AliRsnMiniMonitorTask.cxx:407
 AliRsnMiniMonitorTask.cxx:408
 AliRsnMiniMonitorTask.cxx:409
 AliRsnMiniMonitorTask.cxx:410
 AliRsnMiniMonitorTask.cxx:411