ROOT logo
//
// *** Class AliRsnCut ***
//
// Cut base class: all other cuts inherit from it.
// The 'core' of the class is the method "IsSelected()" which
// must be overloaded by any specific cut implementation.
//
// This class provides some default instruments to check values
// agains a reference or an allowed range, in order to permit
// a unique way to execute such kind of checks.
//
// authors: Alberto Pulvirenti (alberto.pulvirenti@ct.infn.it)
//          Martin Vala (martin.vala@cern.ch)
//

#include <TFormula.h>
#include "AliRsnCut.h"

ClassImp(AliRsnCut)

//______________________________________________________________________________
AliRsnCut::AliRsnCut(const char *name, RSNTARGET target) :
   AliRsnTarget(name, target),
   fMinI(0),
   fMaxI(0),
   fMinD(0.),
   fMaxD(0.),
   fMinIptdep(0),
   fMaxIptdep(0),
   fMinDptdep(0),
   fMaxDptdep(0),
   fCutValueI(0),
   fCutValueD(0.0),
   fPtDepCut(kFALSE),
   fRefPtValueD(0.0),
   fMaxPt(1E20),
   fMinPt(0.0),
   fPtDepCutMaxFormula(""),
   fPtDepCutMinFormula(""),
   fCutResult(kTRUE)
{
//
// Default constructor.
//
}

//______________________________________________________________________________
AliRsnCut::AliRsnCut
(const char *name, RSNTARGET target, Int_t imin, Int_t imax, Double_t dmin, Double_t dmax) :
   AliRsnTarget(name, target),
   fMinI(imin),
   fMaxI(imax),
   fMinD(dmin),
   fMaxD(dmax),
   fMinIptdep(0),
   fMaxIptdep(0),
   fMinDptdep(0),
   fMaxDptdep(0),
   fCutValueI(0),
   fCutValueD(0.0),
   fPtDepCut(kFALSE),
   fRefPtValueD(0.0),
   fMaxPt(1E20),
   fMinPt(0.0),
   fPtDepCutMaxFormula(""),
   fPtDepCutMinFormula(""),
   fCutResult(kTRUE)
{
//
// Constructor with arguments.
// This is provided to allow a quick setting of all data members.
//
}

//______________________________________________________________________________
AliRsnCut::AliRsnCut
(const char *name, RSNTARGET target, Double_t dmin, Double_t dmax, Int_t imin, Int_t imax) :
   AliRsnTarget(name, target),
   fMinI(imin),
   fMaxI(imax),
   fMinD(dmin),
   fMaxD(dmax),
   fMinIptdep(0),
   fMaxIptdep(0),
   fMinDptdep(0),
   fMaxDptdep(0),
   fCutValueI(0),
   fCutValueD(0.0),
   fPtDepCut(kFALSE),
   fRefPtValueD(0.0),
   fMaxPt(1E20),
   fMinPt(0.0),
   fPtDepCutMaxFormula(""),
   fPtDepCutMinFormula(""),
   fCutResult(kTRUE)
{
//
// Constructor with arguments.
// This is provided to allow a quick setting of all data members.
//
}

//______________________________________________________________________________
AliRsnCut::AliRsnCut(const AliRsnCut &copy) :
   AliRsnTarget(copy),
   fMinI(copy.fMinI),
   fMaxI(copy.fMaxI),
   fMinD(copy.fMinD),
   fMaxD(copy.fMaxD),
   fMinIptdep(copy.fMinIptdep),
   fMaxIptdep(copy.fMaxIptdep),
   fMinDptdep(copy.fMinDptdep),
   fMaxDptdep(copy.fMaxDptdep),
   fCutValueI(copy.fCutValueI),
   fCutValueD(copy.fCutValueD),
   fPtDepCut(copy.fPtDepCut),
   fRefPtValueD(copy.fRefPtValueD),
   fMaxPt(copy.fMaxPt),
   fMinPt(copy.fMinPt),
   fPtDepCutMaxFormula(copy.fPtDepCutMaxFormula),
   fPtDepCutMinFormula(copy.fPtDepCutMinFormula),
   fCutResult(copy.fCutResult)
{
//
// Copy constructor.
// Don't duplicate memory occupancy for pointer
//
}

//______________________________________________________________________________
AliRsnCut &AliRsnCut::operator=(const AliRsnCut &copy)
{
//
// Assignment operator.
// Don't duplicate memory occupancy for pointer
//

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

   fMinI      = copy.fMinI;
   fMaxI      = copy.fMaxI;
   fMinD      = copy.fMinD;
   fMaxD      = copy.fMaxD;
   fMinIptdep = copy.fMinIptdep;
   fMaxIptdep = copy.fMaxIptdep;
   fMinDptdep = copy.fMinDptdep;
   fMaxDptdep = copy.fMaxDptdep;
   fCutValueI = copy.fCutValueI;
   fCutValueD = copy.fCutValueD;
   fPtDepCut = copy.fPtDepCut;
   fRefPtValueD = copy.fRefPtValueD;
   fMaxPt = copy.fMaxPt;
   fMinPt = copy.fMinPt;
   fPtDepCutMaxFormula = copy.fPtDepCutMaxFormula;
   fPtDepCutMinFormula = copy.fPtDepCutMinFormula;
   fCutResult = copy.fCutResult;

   return (*this);
}

//______________________________________________________________________________
Bool_t AliRsnCut::IsSelected(TObject * /*object*/)
{
//
// Virtual cut-checking method.
// In this implementation, it does nothing, and all classes
// inheriting from this, should provide a proper implementation
// which must return kTRUE if the cut is passed, and kFALSE otherwise.
//

   AliWarning("This virtual function must be implemented properly");
   return kTRUE;
}

//______________________________________________________________________________
Bool_t AliRsnCut::OkValueI()
{
//
// This method is used to compare a value with a reference.
// In the case of integers, the equality must be exact.
//

   // eval result
   
   if (fPtDepCut){
   	if(fRefPtValueD > fMaxPt) {
    	AliDebug(2,Form("pt = %f (> %f), cutting at %d\n",fRefPtValueD, fMaxPt, fMinI)); 
    	fCutResult = (fCutValueI == fMinI);
  	} else if (fRefPtValueD < fMinPt){
	AliDebug(2,Form("pt = %f (< %f), cutting at %d\n",fRefPtValueD, fMinPt, fMinI));
	fCutResult = (fCutValueI == fMinI);
	}else{ 
	TString str(fPtDepCutMinFormula);
        str.ReplaceAll("pt", "x");
        TFormula ptdepcut(Form("%s_ptdepcut", GetName()), str.Data());
        fMinIptdep = static_cast<int> (ptdepcut.Eval(fRefPtValueD));	
    	AliDebug(2,Form("pt = %f (> %f and < %f), cutting  at %d\n",fRefPtValueD, fMinPt, fMaxPt, fMinIptdep)); 
    	fCutResult = (fCutValueI == fMinIptdep);
  	}
  }
  else fCutResult = (fCutValueI == fMinI);

   // print debug message
   AliDebug(AliLog::kDebug + 2, "=== CUT DEBUG ========================================================");
   AliDebug(AliLog::kDebug + 2, Form("Cut name     : %s", GetName()));
   AliDebug(AliLog::kDebug + 2, Form("Checked value: %d", fCutValueI));
   AliDebug(AliLog::kDebug + 2, Form("Cut value    : %d", fMinI));
   AliDebug(AliLog::kDebug + 2, Form("Cut result   : %s", (fCutResult ? "PASSED" : "NOT PASSED")));
   AliDebug(AliLog::kDebug + 2, "=== END CUT DEBUG ====================================================");

   return fCutResult;
}

//______________________________________________________________________________
Bool_t AliRsnCut::OkValueD()
{
//
// This method is used to compare a value with a reference.
// In the case of doubles, the equality consists in being very close.
//

   // eval result
   
    if (fPtDepCut){
   	if(fRefPtValueD > fMaxPt) {
    	AliDebug(2,Form("pt = %f (> %f), cutting at %f\n",fRefPtValueD, fMaxPt, fMinD)); 
    	fCutResult = (TMath::Abs(fCutValueD - fMinD) < 1E-6);
  	} else if (fRefPtValueD < fMinPt){
	AliDebug(2,Form("pt = %f (< %f), cutting at %f\n",fRefPtValueD, fMinPt, fMinD));
	fCutResult = (TMath::Abs(fCutValueD - fMinD) < 1E-6);
	}else{
	TString str(fPtDepCutMinFormula);
        str.ReplaceAll("pt", "x");
        TFormula ptdepcut(Form("%s_ptdepcut", GetName()), str.Data());
        fMinDptdep = ptdepcut.Eval(fRefPtValueD);	
    	AliDebug(2,Form("pt = %f (> %f and < %f), cutting  at %f\n",fRefPtValueD, fMinPt, fMaxPt, fMinDptdep)); 
    	fCutResult = (TMath::Abs(fCutValueD - fMinDptdep) < 1E-6);
  	}
  }
  else fCutResult = (TMath::Abs(fCutValueD - fMinD) < 1E-6);

   // print debug message
   AliDebug(AliLog::kDebug + 2, "=== CUT DEBUG =======================================================");
   AliDebug(AliLog::kDebug + 2, Form("Cut name     : %s", GetName()));
   AliDebug(AliLog::kDebug + 2, Form("Checked value: %f", fCutValueD));
   AliDebug(AliLog::kDebug + 2, Form("Cut value    : %f", fMinD));
   AliDebug(AliLog::kDebug + 2, Form("Cut result   : %s", (fCutResult ? "PASSED" : "NOT PASSED")));
   AliDebug(AliLog::kDebug + 2, "=== END CUT DEBUG ===================================================");

   return fCutResult;
}

//______________________________________________________________________________
Bool_t AliRsnCut::OkRangeI()
{
//
// This method is used to compare a value with an integer range.
//

  // eval result
  if (fPtDepCut){
    if(fRefPtValueD > fMaxPt) {
      AliDebug(2,Form("pt = %f (> %f), cutting between [%d, %d]\n",fRefPtValueD, fMaxPt, fMinI, fMaxI)); 
      fCutResult = ((fCutValueI >= fMinI) && (fCutValueD <= fMaxI));
    } else if (fRefPtValueD < fMinPt){
      AliDebug(2,Form("pt = %f (< %f), cutting between [%d, %d]\n",fRefPtValueD, fMinPt, fMinI, fMaxI));
      fCutResult = ((fCutValueI >= fMinI) && (fCutValueD <= fMaxI));
    } else {
      TString str(fPtDepCutMinFormula);
      str.ReplaceAll("pt", "x");
      TFormula ptdepcut(Form("%s_ptdepcut", GetName()), str.Data());
      fMinIptdep = static_cast<int> (ptdepcut.Eval(fRefPtValueD));
	
      TString str2(fPtDepCutMaxFormula);
      str2.ReplaceAll("pt", "x");
      TFormula ptdepcut2(Form("%s_ptdepcut", GetName()), str2.Data());
      fMaxIptdep = static_cast<int> (ptdepcut2.Eval(fRefPtValueD));
    		    
      AliDebug(2,Form("pt = %f (> %f and < %f), cutting  according to the fiducial zone [%d, %d]\n",fRefPtValueD, fMinPt, fMaxPt, fMinIptdep, fMaxIptdep)); 
      fCutResult = ((fCutValueI >= fMinIptdep) && (fCutValueI <= fMaxIptdep));
    }
  }
  else fCutResult = ((fCutValueI >= fMinI) && (fCutValueI <= fMaxI));

   // print debug message
   AliDebug(AliLog::kDebug + 2, "=== CUT DEBUG ========================================================");
   AliDebug(AliLog::kDebug + 2, Form("Cut name     : %s", GetName()));
   AliDebug(AliLog::kDebug + 2, Form("Checked value: %d", fCutValueI));
   AliDebug(AliLog::kDebug + 2, Form("Cut range    : %d , %d", fMinI, fMaxI));
   AliDebug(AliLog::kDebug + 2, Form("Cut result   : %s", (fCutResult ? "PASSED" : "NOT PASSED")));
   AliDebug(AliLog::kDebug + 2, "=== END CUT DEBUG ====================================================");

   return fCutResult;
}

//______________________________________________________________________________
Bool_t AliRsnCut::OkRangeD()
{
//
// This method is used to compare a value with a double-float range.
//

  // eval result
   
  if (fPtDepCut){
    if(fRefPtValueD > fMaxPt) {
      AliDebug(2,Form("pt = %f (> %f), cutting between [%f, %f]\n",fRefPtValueD, fMaxPt, fMinD, fMaxD)); 
      fCutResult = ((fCutValueD >= fMinD) && (fCutValueD <= fMaxD));
    } else if (fRefPtValueD < fMinPt) {
      AliDebug(2,Form("pt = %f (< %f), cutting between [%f, %f]\n",fRefPtValueD, fMinPt, fMinD, fMaxD));
      fCutResult = ((fCutValueD >= fMinD) && (fCutValueD <= fMaxD));
    } else {
      TString str(fPtDepCutMinFormula);
      str.ReplaceAll("pt", "x");
      TFormula ptdepcut(Form("%s_ptdepcut", GetName()), str.Data());
      fMinDptdep = ptdepcut.Eval(fRefPtValueD);
      
      TString str2(fPtDepCutMaxFormula);
      str2.ReplaceAll("pt", "x");
      TFormula ptdepcut2(Form("%s_ptdepcut", GetName()), str2.Data());
      fMaxDptdep = ptdepcut2.Eval(fRefPtValueD);   
      
      AliDebug(2,Form("pt = %f (> %f and < %f), cutting  according to the fiducial zone [%f, %f]\n",fRefPtValueD, fMinPt, fMaxPt, fMinDptdep, fMaxDptdep)); 
      fCutResult = ((fCutValueD >= fMinDptdep) && (fCutValueD <= fMaxDptdep));
    }
  }
  else fCutResult = ((fCutValueD >= fMinD) && (fCutValueD <= fMaxD));

   // print debug message
   AliDebug(AliLog::kDebug + 2, "=== CUT DEBUG ========================================================");
   AliDebug(AliLog::kDebug + 2, Form("Cut name     : %s", GetName()));
   AliDebug(AliLog::kDebug + 2, Form("Checked value: %f", fCutValueD));
   AliDebug(AliLog::kDebug + 2, Form("Cut range    : %f , %f", fMinD, fMaxD));
   AliDebug(AliLog::kDebug + 2, Form("Cut result   : %s", (fCutResult ? "PASSED" : "NOT PASSED")));
   AliDebug(AliLog::kDebug + 2, "=== END CUT DEBUG ====================================================");

   return fCutResult;
}


//______________________________________________________________________________
void AliRsnCut::Print(Option_t *) const
{
//
// Override TObject::Print() method,
// and print some useful info about the cut general parameters.
//

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