ROOT logo
#include <Riostream.h>
#include <TEntryList.h>

#include "AliLog.h"

#include "AliRsnCutSet.h"
#include "AliRsnDaughterDef.h"
#include "AliRsnAction.h"

#include "AliRsnDaughterSelector.h"

ClassImp(AliRsnDaughterSelector)

//__________________________________________________________________________________________________
AliRsnDaughterSelector::AliRsnDaughterSelector(const char *name, const char *title) :
   TNamed(name, title),
   fCutSetsN("AliRsnCutSet", 0),
   fCutSetsC("AliRsnCutSet", 0),
   fEntryListsN("TEntryList", 0),
   fEntryListsP("TEntryList", 0),
   fEntryListsM("TEntryList", 0),
   fUseLabelCheck(kTRUE),
   fActions()
{
//
// Default constructor.
//

   AliDebug(AliLog::kDebug + 10, "<-");
   AliDebug(AliLog::kDebug + 10, "->");
}

//__________________________________________________________________________________________________
AliRsnDaughterSelector::AliRsnDaughterSelector(const AliRsnDaughterSelector &copy) :
   TNamed(copy),
   fCutSetsN(copy.fCutSetsN),
   fCutSetsC(copy.fCutSetsC),
   fEntryListsN(copy.fEntryListsN),
   fEntryListsP(copy.fEntryListsP),
   fEntryListsM(copy.fEntryListsM),
   fUseLabelCheck(copy.fUseLabelCheck),
   fActions(copy.fActions)
{
//
// Copy constructor.
//

   AliDebug(AliLog::kDebug + 10, "<-");
   AliDebug(AliLog::kDebug + 10, "->");
}

//__________________________________________________________________________________________________
AliRsnDaughterSelector &AliRsnDaughterSelector::operator=(const AliRsnDaughterSelector &copy)
{
//
// Copy constructor.
//

   AliDebug(AliLog::kDebug + 10, "<-");

   TNamed::operator=(copy);
   if (this == &copy)
      return *this;
   fCutSetsN = copy.fCutSetsN;
   fCutSetsC = copy.fCutSetsC;
   fEntryListsN = copy.fEntryListsN;
   fEntryListsP = copy.fEntryListsP;
   fEntryListsM = copy.fEntryListsM;
   fUseLabelCheck = copy.fUseLabelCheck;
   fActions = copy.fActions;

   AliDebug(AliLog::kDebug + 10, "->");

   return (*this);
}

//__________________________________________________________________________________________________
AliRsnDaughterSelector::~AliRsnDaughterSelector()
{
//
// Destructor
//

   AliDebug(AliLog::kDebug + 10, "<-");

   fCutSetsN.Delete();
   fCutSetsC.Delete();
   fEntryListsN.Delete();
   fEntryListsP.Delete();
   fEntryListsM.Delete();

   fActions.Delete();

   AliDebug(AliLog::kDebug + 10, "->");
}

//__________________________________________________________________________________________________
void AliRsnDaughterSelector::Print(Option_t *option) const
{
//
// Override TObject::Print()
//

   TNamed::Print(option);

   Int_t i, nSets;
   AliRsnCutSet *set = 0x0;
   TEntryList *list = 0x0;

   // neutral
   nSets = fCutSetsN.GetEntries();
   for (i = 0; i < nSets; i++) {
      set = (AliRsnCutSet *)fCutSetsN[i];
      list = (TEntryList *)fEntryListsN[i];
      AliInfo(Form("Neutral entry list for cut set '%s' has %d entries", set->GetName(), (Int_t)list->GetN()));
   }

   // charged
   nSets = fCutSetsC.GetEntries();
   for (i = 0; i < nSets; i++) {
      set = (AliRsnCutSet *)fCutSetsC[i];
      list = (TEntryList *)fEntryListsP[i];
      AliInfo(Form("Positive entry list for cut set '%s' has %d entries", set->GetName(), (Int_t)list->GetN()));
      list = (TEntryList *)fEntryListsM[i];
      AliInfo(Form("Negative entry list for cut set '%s' has %d entries", set->GetName(), (Int_t)list->GetN()));
   }
}

//__________________________________________________________________________________________________
void AliRsnDaughterSelector::Init()
{
//
// Initialize the arrays of entry lists to the same size
// of the corresponding arrays of cut sets.
// If they are not empty, they are cleared.
//

   Int_t i, nSets;

   // neutral
   nSets = fCutSetsN.GetEntries();
   if (!fEntryListsN.IsEmpty()) fEntryListsN.Delete();
   for (i = 0; i < nSets; i++) {
      AliRsnCutSet *set = (AliRsnCutSet *)fCutSetsN[i];
      new (fEntryListsN[i]) TEntryList;
      AliInfo(Form("Adding 1 entry list for neutrals --> cut set '%s' [scheme = '%s']", set->GetName(), set->GetCutScheme().Data()));
   }

   // charged
   nSets = fCutSetsC.GetEntries();
   if (!fEntryListsP.IsEmpty()) fEntryListsP.Delete();
   if (!fEntryListsM.IsEmpty()) fEntryListsM.Delete();
   for (i = 0; i < nSets; i++) {
      AliRsnCutSet *set = (AliRsnCutSet *)fCutSetsC[i];
      new (fEntryListsP[i]) TEntryList;
      new (fEntryListsM[i]) TEntryList;
      AliInfo(Form("Adding 2 entry lists for charged --> cut set '%s' [scheme = '%s']", set->GetName(), set->GetCutScheme().Data()));
   }
}

//__________________________________________________________________________________________________
void AliRsnDaughterSelector::AddAction(AliRsnAction *action)
{
//
// Adding action
//
   if (!action) return;

   fActions.Add(action);
}


//__________________________________________________________________________________________________
void AliRsnDaughterSelector::InitActions(TList *list)
{
//
// Initialize output for post actiosn
//
   if (!list) return;
   TObjArray objects;
   objects.Add(this);

   TIter next(&fActions);
   AliRsnAction *action;
   while ((action = (AliRsnAction *)next())) {
      action->InitAction(list,&objects);
   }

}

//__________________________________________________________________________________________________
void AliRsnDaughterSelector::ExecActions(AliRsnEvent *ev)
{
//
// Exec Actions
//

   if (!ev) return;

   TObjArray objects;
   objects.Add(ev);

   TIter next(&fActions);
   AliRsnAction *action;
   while ((action = (AliRsnAction *)next())) {
      action->ExecAction(&objects);
   }
}


//__________________________________________________________________________________________________
void AliRsnDaughterSelector::Reset()
{
   TEntryList *el;
   Int_t i, nSets;

   // N
   nSets = fCutSetsN.GetEntries();
   for (i = 0; i < nSets; i++) {
      el = (TEntryList *)fEntryListsN.At(i);
      el->Reset();
   }

   // charged
   nSets = fCutSetsC.GetEntries();
   for (i = 0; i < nSets; i++) {
      el = (TEntryList *)fEntryListsP.At(i);
      el->Reset();
      el = (TEntryList *)fEntryListsM.At(i);
      el->Reset();
   }
}

//__________________________________________________________________________________________________
Int_t AliRsnDaughterSelector::Add(AliRsnCutSet *cuts, Bool_t charged)
{
//
// Add a new selection slot defined by a set of cuts and daughter definition
//

   Int_t n = 0;

   if (!charged) {
      n = fCutSetsN.GetEntries();
      new (fCutSetsN[n]) AliRsnCutSet(*cuts);
   } else {
      n = fCutSetsC.GetEntries();
      new (fCutSetsC[n]) AliRsnCutSet(*cuts);
   }

   return n;
}

//__________________________________________________________________________________________________
Int_t AliRsnDaughterSelector::GetID(const char *name, Bool_t charged)
{
//
// Add a new selection slot defined by a set of cuts and daughter definition
//

   AliRsnCutSet *cuts;

   if (!charged) {
      cuts = (AliRsnCutSet *)fCutSetsN.FindObject(name);
      if (cuts) return fCutSetsN.IndexOf(cuts);
   } else {
      cuts = (AliRsnCutSet *)fCutSetsC.FindObject(name);
      if (cuts) return fCutSetsC.IndexOf(cuts);
   }

   return -1;
}

//__________________________________________________________________________________________________
TEntryList *AliRsnDaughterSelector::GetSelected(Int_t i, Char_t charge)
{
//
// Retrieve a given entry list (needs charge specified as a char)
//

   if (charge == '+')
      return (TEntryList *)fEntryListsP.At(i);
   else if (charge == '-')
      return (TEntryList *)fEntryListsM.At(i);
   else
      return (TEntryList *)fEntryListsN.At(i);
}

//__________________________________________________________________________________________________
TEntryList *AliRsnDaughterSelector::GetSelected(Int_t i, Short_t charge)
{
//
// Retrieve a given entry list passing charge as short
//

   if (charge > 0)
      return (TEntryList *)fEntryListsP.At(i);
   else if (charge < 0)
      return (TEntryList *)fEntryListsM.At(i);
   else
      return (TEntryList *)fEntryListsN.At(i);
}

//__________________________________________________________________________________________________
void AliRsnDaughterSelector::ScanEvent(AliRsnEvent *ev)
{
//
// Loop over event and fill all entry lists
//

   Int_t id, is;
   Int_t label;
   Int_t nSel, nTot = ev->GetAbsoluteSum();
   AliRsnDaughter check;
   TClonesArray *cutsArray = 0x0, *entryArray = 0x0;
   TEntryList labelList;
   TEntryList *el = 0;
   AliRsnCutSet *cuts;
   for (id = 0; id < nTot; id++) {
      ev->SetDaughter(check, id);
      // some checks
      if (!check.GetRef()) {
         AliDebugClass(1, Form("[%s]: daughter has NULL ref", GetName()));
         continue;
      }
      if (!check.IsOK()) {
         AliDebugClass(1, Form("[%s]: daughter is BAD", GetName()));
         continue;
      }
      // set pointers according to charge
      if (check.ChargeS() > 0) {
         cutsArray = &fCutSetsC;
         entryArray = &fEntryListsP;
      } else if (check.ChargeS() < 0) {
         cutsArray = &fCutSetsC;
         entryArray = &fEntryListsM;
      } else {
         cutsArray = &fCutSetsN;
         entryArray = &fEntryListsN;
      }

      // gets label for later use
      label = check.GetLabel();

      // check if label was not in labelList
      if (fUseLabelCheck && labelList.Contains(label)) continue;

      // check with all cuts in that charge
      nSel = cutsArray->GetEntries();
      for (is = 0; is < nSel; is++) {
         cuts = (AliRsnCutSet *)cutsArray->At(is);
         if (cuts->IsSelected(&check)) {
            el = (TEntryList *)entryArray->At(is);
            el->Enter(id);
            if (fUseLabelCheck && label >= 0) labelList.Enter(label);
         }
      }
   }
}

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