ROOT logo
//
// Class AliRsnCutSet
//
// This is the front-end for cut management and checking.
// It must be prepared by adding all required single cuts,
// and then with a logical expression which combines all cuts
// with the "AND", "OR" and "NOT" operators.
//

#include "AliLog.h"

#include "AliRsnExpression.h"
#include "AliRsnCut.h"

#include "AliRsnCutSet.h"

ClassImp(AliRsnCutSet)

//_____________________________________________________________________________
AliRsnCutSet::AliRsnCutSet() :
   AliRsnTarget(),
   fCuts(0),
   fNumOfCuts(0),
   fCutScheme(""),
   fCutSchemeIndexed(""),
   fBoolValues(0),
   fIsScheme(kFALSE),
   fExpression(0),
   fMonitors(),
   fUseMonitor(kFALSE)
{
//
// Constructor without name (not recommended)
//

   fBoolValues = new Bool_t[1];
   AliRsnExpression::fgCutSet = this;
}

//_____________________________________________________________________________
AliRsnCutSet::AliRsnCutSet(const char *name, RSNTARGET target) :
   AliRsnTarget(name, target),
   fCuts(0),
   fNumOfCuts(0),
   fCutScheme(""),
   fCutSchemeIndexed(""),
   fBoolValues(0),
   fIsScheme(kFALSE),
   fExpression(0),
   fMonitors(),
   fUseMonitor(kFALSE)
{
//
// Constructor with argument name (recommended)
//

   fBoolValues = new Bool_t[1];
   fExpression = 0;
   AliRsnExpression::fgCutSet = this;
}

//_____________________________________________________________________________
AliRsnCutSet::AliRsnCutSet(const AliRsnCutSet &copy) :
   AliRsnTarget(copy),
   fCuts(copy.fCuts),
   fNumOfCuts(copy.fNumOfCuts),
   fCutScheme(copy.fCutScheme),
   fCutSchemeIndexed(copy.fCutSchemeIndexed),
   fBoolValues(0),
   fIsScheme(copy.fIsScheme),
   fExpression(copy.fExpression),
   fMonitors(copy.fMonitors),
   fUseMonitor(copy.fUseMonitor)
{
//
// Copy constructor
//

   Int_t i;
   fBoolValues = new Bool_t[fNumOfCuts];
   for (i = 0; i < fNumOfCuts; ++i) {
      fBoolValues[i] = copy.fBoolValues[i];
   }

   AliRsnExpression::fgCutSet = this;
}

//_____________________________________________________________________________
AliRsnCutSet &AliRsnCutSet::operator=(const AliRsnCutSet &copy)
{
//
// Assignment operator.
//

   AliRsnTarget::operator=(copy);
   if (this == &copy)
      return *this;

   fCuts = copy.fCuts;
   fNumOfCuts = copy.fNumOfCuts;
   fCutScheme = copy.fCutScheme;
   fCutSchemeIndexed = copy.fCutSchemeIndexed;
   fIsScheme = copy.fIsScheme;
   fExpression = copy.fExpression;
   fMonitors = copy.fMonitors;
   fUseMonitor = copy.fUseMonitor;

   if (fBoolValues) delete [] fBoolValues;

   Int_t i;
   fBoolValues = new Bool_t[fNumOfCuts];
   for (i = 0; i < fNumOfCuts; ++i) {
      fBoolValues[i] = copy.fBoolValues[i];
   }

   AliRsnExpression::fgCutSet = this;

   return (*this);
}

//_____________________________________________________________________________
AliRsnCutSet::~AliRsnCutSet()
{
//
// Destructor
//

   delete fExpression;
   delete [] fBoolValues;
}

//_____________________________________________________________________________
void AliRsnCutSet::AddCut(AliRsnCut *cut)
{
//
// Add a new cut.
// This must be done for all components of the final expression.
// If the target of the cut does not match the target of this,
// the cut is not added.
//

   if (!cut->IsTarget(GetTargetType())) {
      AliError(Form("Cannot add this cut (cut set name,target = [%s],[%s] --- cut name,target = [%s],[%s]", GetName(), GetTargetTypeName(), cut->GetName(), cut->GetTargetTypeName()));
      return;
   }

   Int_t i;

   AliDebug(AliLog::kDebug, "<-");
   fCuts.Add(cut);
   AliInfo(Form("====> Adding a new cut: [%s]", cut->GetName()));
   //cut->Print();
   fNumOfCuts++;

   if (fBoolValues) delete [] fBoolValues;

   fBoolValues = new Bool_t[fNumOfCuts];
   for (i = 0; i < fNumOfCuts; i++) {
      fBoolValues[i] = kTRUE;
   }

   AliDebug(AliLog::kDebug, Form("%d", fCuts.GetEntriesFast()));
   AliDebug(AliLog::kDebug, "->");
}

//_____________________________________________________________________________
void AliRsnCutSet::ShowCuts() const
{
//
// Prints all cuts
//
   AliRsnCut *cut;

   for (Int_t i = 0; i < fCuts.GetEntriesFast() ; i++) {
      cut = (AliRsnCut *)fCuts.At(i);
      cut->Print();
   }
}

//_____________________________________________________________________________
Bool_t AliRsnCutSet::IsSelected(TObject *object)
{
//
// Checks an object according to the cut expression defined here.
//

   Int_t i;

   if (!fNumOfCuts) return kTRUE;

   Bool_t boolReturn = kTRUE;
   AliRsnCut *cut;
   for (i = 0; i < fNumOfCuts; i++) {
      cut = (AliRsnCut *)fCuts.At(i);
      fBoolValues[i] = cut->IsSelected(object);
   }

   if (fIsScheme) boolReturn = Passed();

   // fill monitoring info
   if (boolReturn && fUseMonitor) {
      if (TargetOK(object)) {
         TIter next(&fMonitors);
         AliRsnListOutput *mo;
         while ((mo = (AliRsnListOutput *) next())) {
            mo->Fill(fEvent,fDaughter);
         }
      }
   }

   return boolReturn;
}

//_____________________________________________________________________________
void AliRsnCutSet::SetCutScheme(const char *theValue)
{
//
// Define the combination of cuts with logical operators
// and using the names given to all defined cuts.
//

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

   fCutScheme = theValue;
   SetCutSchemeIndexed(theValue);
   fIsScheme = kTRUE;
   AliDebug(AliLog::kDebug, "->");
}

//_____________________________________________________________________________
void AliRsnCutSet::SetCutSchemeIndexed(TString theValue)
{
//
// Internal method which indexes all cuts to organize their combo
//

   AliDebug(AliLog::kDebug, "<-");
   theValue.Append(" ");
   // fCutSchemeIndexed = theValue;
   fCutSchemeIndexed = GetCutSchemeIndexed();
   AliDebug(AliLog::kDebug, "->");
}

//_____________________________________________________________________________
Int_t AliRsnCutSet::GetIndexByCutName(TString s)
{
//
// Retrieve the cut index from its name
//

   Int_t i;
   AliRsnCut *cut;

   for (i = 0; i < fCuts.GetEntriesFast(); i++) {
      cut = (AliRsnCut *) fCuts.At(i);
      if (!s.CompareTo(cut->GetName())) return i;
   }

   return -1;
}

//_____________________________________________________________________________
Bool_t AliRsnCutSet::Passed()
{
//
// Combines the cuts according to expression
// and gives a global response to the cut check
//

   AliRsnExpression::fgCutSet = this;
   if (!fExpression) {
      fExpression = new AliRsnExpression(fCutSchemeIndexed);
      AliDebug(AliLog::kDebug, "fExpression was created.");
   }

   if (fCuts.IsEmpty()) return kTRUE;

   return fExpression->Value(*GetCuts());
}

//_____________________________________________________________________________
Bool_t AliRsnCutSet::IsValidScheme()
{
//
// Validity check on cut expression specified by user
//

   TString str(fCutScheme);
   AliRsnCut *cut;
   for (Int_t i = 0; i < fNumOfCuts; i++) {
      cut = (AliRsnCut *)fCuts.At(i);
      str.ReplaceAll(cut->GetName(), "");
   }
   str.ReplaceAll("&", "");
   str.ReplaceAll("!", "");
   str.ReplaceAll("|", "");
   str.ReplaceAll("(", "");
   str.ReplaceAll(")", "");

   if (!str.IsNull()) {
      AliError(Form("Cut scheme '%s' is not valid !!!", fCutScheme.Data()));
      return kFALSE;
   }

   return kTRUE;
//   return (!(ShowCutScheme().Contains("Error")));
}

//_____________________________________________________________________________
TString AliRsnCutSet::ShowCutScheme() const
{
//
// Utility method to check validity of expression
//

   return fCutScheme;
//   return fExpression->Unparse();
}

//_____________________________________________________________________________
Int_t AliRsnCutSet::TestExpression(TString opt)
{

//   AliRsnCut *cut1 = new AliRsnCut ("aaa","aaa");
//   cut1->SetCutValues (AliRsnCut::kEsdPt,0.0,1.0);
//   AliRsnCut *cut2 = new AliRsnCut ("bbb","bbb");
//   cut2->SetCutValues (AliRsnCut::kEsdPt,1.,2.0);
//   AliRsnCut *cut3 = new AliRsnCut ("ccc","ccc");
//   cut3->SetCutValues (AliRsnCut::kEsdPt,2.0,3.0);
//
//   AliRsnCutSet* set  = new AliRsnCutSet ("setOne");
//   set->AddCut (cut1);
//   set->AddCut (cut2);
//   set->AddCut (cut3);
//
//   set->SetCutScheme ("(aaa&!(ccc))&(bbb&!(ccc))");
//
//   set->ShowCuts ();

   AliDebug(1, opt.Data());
   return 0;
}

//_____________________________________________________________________________
void AliRsnCutSet::PrintSetInfo()
{
//
// Show data about the cut set
//

   Int_t i;

   AliInfo("========== Rsn Cut Set info ==============");
   AliInfo(Form("Scheme : %s", fCutScheme.Data()));
   AliInfo(Form("Scheme : %s", fCutSchemeIndexed.Data()));
   AliInfo(Form("Num of Cuts: %d", fCuts.GetEntriesFast()));
   AliInfo("====== Cuts ======");
   AliRsnCut *cut;
   for (i = 0; i < fCuts.GetEntriesFast(); i++) {
      cut = (AliRsnCut *) fCuts.At(i);
      if (cut) AliInfo(Form("%d %d", i, fBoolValues[i]));
   }
   AliInfo("========== END Rsn Cut Mgr info ==============");
}

//_____________________________________________________________________________
TString AliRsnCutSet::GetCutSchemeIndexed()
{
//
// Internal method to retrieve the list of cuts with their indexes
// for evaluation of cut expression
//

   AliDebug(AliLog::kDebug, "<-");
   Int_t i;
   TString str(fCutScheme);
   AliDebug(AliLog::kDebug, Form("Num of cuts %d", fCuts.GetEntriesFast()));
   AliRsnCut *cut;
   for (i = 0; i < fCuts.GetEntriesFast(); i++) {
      cut = (AliRsnCut *) fCuts.At(i);
      str.ReplaceAll(cut->GetName(), Form("%d", i));
   }
   AliDebug(AliLog::kDebug, "->");
   return str;
}

Bool_t AliRsnCutSet::Init(TList *list)
{
   if (!fUseMonitor) return kTRUE;

   TIter next(&fMonitors);
   AliRsnListOutput *mo;
   while ((mo = (AliRsnListOutput *) next())) {
      mo->Init(GetName(),list);
   }


   return kTRUE;
}

void AliRsnCutSet::AddMonitor(AliRsnListOutput *mon)
{
   fMonitors.Add(mon);
}

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