ROOT logo
#include "AliFMDMultCuts.h"
#include "AliForwardCorrectionManager.h"
#include "AliFMDCorrELossFit.h"
#include "AliForwardUtil.h"
#include <AliLog.h>
#include <iostream>
#include <TROOT.h>
#include <TParameter.h>
#include <TH2.h>
namespace { 
  Int_t fDebug = 1;
}
ClassImp(AliFMDMultCuts)
#if 0
; // This is for Emacs
#endif

//____________________________________________________________________
AliFMDMultCuts::AliFMDMultCuts()
  : TObject(),
    fMethod(kFixed)
{
  Reset();
}
//____________________________________________________________________
AliFMDMultCuts::AliFMDMultCuts(EMethod method, 
			       Double_t cut1,  
			       Double_t cut2,
			       Double_t cut3,
			       Double_t cut4,
			       Double_t cut5)
  : TObject(),
    fMethod(method)
{
  Set(method, cut1, cut2, cut3, cut4, cut5);
}

//____________________________________________________________________
AliFMDMultCuts::AliFMDMultCuts(const AliFMDMultCuts& o)
  : TObject(o),
    fMethod(o.fMethod)
{
  for (Int_t i = 0; i < 5; i++) fCuts[i] = o.fCuts[i];
}
//____________________________________________________________________
AliFMDMultCuts&
AliFMDMultCuts::operator=(const AliFMDMultCuts& o)
{
  if (&o == this) return *this; 
  fMethod  = o.fMethod;
  for (Int_t i = 0; i < 5; i++) fCuts[i] = o.fCuts[i];
  return *this;
}
//____________________________________________________________________
void
AliFMDMultCuts::Reset()
{
  fMethod = kFixed;
  for (Int_t i = 0; i < 5; i++) fCuts[i] = -1;
}
//____________________________________________________________________
void
AliFMDMultCuts::Set(EMethod method, 
		    Double_t fmd1i, 
		    Double_t fmd2i, 
		    Double_t fmd2o, 
		    Double_t fmd3i, 
		    Double_t fmd3o)
{
  // First, reset
  Reset();
  fMethod      = method; 
  Double_t oFac = 1;
  if      (fMethod == kFixed)       oFac = 1.2;
  else if (fMethod == kMPVFraction) oFac = 1.1;
  fCuts[0] = fmd1i;
  fCuts[1] = fmd2i >= 0 ? fmd2i : fmd1i;
  fCuts[2] = fmd2o >= 0 ? fmd2o : fmd1i * oFac;
  fCuts[3] = fmd3i >= 0 ? fmd3i : fmd1i;
  fCuts[4] = fmd3o >= 0 ? fmd3o : fmd1i * oFac;
}
//____________________________________________________________________
void
AliFMDMultCuts::DepSet(const char* what,
		       EMethod method, 
		       Double_t fmd1i, 
		       Double_t fmd2i, 
		       Double_t fmd2o, 
		       Double_t fmd3i, 
		       Double_t fmd3o)
{
  Warning(what, "*** DEPRECATED - use AliFMDMultCuts::Set instead ***");
  Set(method, fmd1i, fmd2i, fmd2o, fmd3i, fmd3o);
}
  
//____________________________________________________________________
void
AliFMDMultCuts::SetIncludeSigma(Bool_t in) 
{
  Warning("SetIncludeSigma",  
	  "*** DEPRECATED - use AliFMDMultCuts::Set instead ***");
  if (in) { 
    if (fMethod == kLandauWidth) fMethod = kLandauSigmaWidth;
  }
  else {
    if (fMethod == kLandauSigmaWidth) fMethod = kLandauWidth;
  }
}

//____________________________________________________________________
Double_t
AliFMDMultCuts::GetCutParam(UShort_t d, Char_t r) const
{
  // Int_t    idx = (d == 1 ? 0 : 2*(d - 2) + 1 + ((r=='I' || r=='i') ? 0 : 1));
  Int_t idx = -1;
  switch (d) { 
  case 1: idx = 0; break;
  case 2: idx = 1 + ((r == 'I' || r == 'i') ? 0 : 1); break;
  case 3: idx = 3 + ((r == 'I' || r == 'i') ? 0 : 1); break;
  }
  if (idx < 0) return -kBad;
  return fCuts[idx];
}
			    
//____________________________________________________________________
Double_t
AliFMDMultCuts::GetMultCut(UShort_t d, Char_t r, Int_t ieta, 
			   Bool_t errors) const
{
  // 
  // Get the multiplicity cut.  If the user has set fMultCut (via
  // SetMultCut) then that value is used.  If not, then the lower
  // value of the fit range for the enery loss fits is returned.
  // 
  // Return:
  //    Lower cut on multiplicity
  //
  DGUARD(fDebug, 5, "Get mult cut for FMD%d%c (method %d) @ etabin=%d", 
	 d, r, fMethod, ieta);
  Double_t param = GetCutParam(d, r);
  if (param < 0) {
    Warning("GetMultCut", "Got bad cut parameter for FMD%d%c ieta=%d",
	    d, r, ieta);
    return -kBad;
  }

  // If we're using a fixed cut, just return
  if (fMethod == kFixed) {
    DMSG(fDebug, 5, "-> %8.4f", param);
    return param;
  }

  // Bad value 
  Double_t rcut = -kBad;

  // Get the energy loss fits 
  AliForwardCorrectionManager&  fcm = 
    AliForwardCorrectionManager::Instance();
  const AliFMDCorrELossFit* fits = fcm.GetELossFit();
  if (fits) {
    switch (fMethod) { 
    case kMPVFraction:
      // Return fMPVFraction * mpv 
      rcut = fits->GetLowerBound(d, r, ieta, param); break;
    case kLandauWidth:
      // Return MPV - fNXi * xi
      rcut = fits->GetLowerBound(d, r, ieta, param, errors,false);
      break;
    case kLandauSigmaWidth:
      // Return MPV - fNXi * xi
      rcut = fits->GetLowerBound(d, r, ieta, param, errors,true);
      break;
    case kProbability:
      // Return probability cut 
      rcut = fits->GetLowerBound(d, r, ieta, param, true); break;
    default:
      // Return lower fit boundary
      rcut = fits->GetLowCut(); break;
    }
  }
  else 
    Warning("GetMultCut", "No energy loss fits obtained from manager");

  DMSG(fDebug, 5, "-> %8.4f", rcut);
    
  return rcut;
}
    
//____________________________________________________________________
Double_t
AliFMDMultCuts::GetMultCut(UShort_t d, Char_t r, Double_t eta,
			   Bool_t errors) const
{
  // 
  // Get the multiplicity cut.  If the user has set fMultCut (via
  // SetMultCut) then that value is used.  If not, then the lower
  // value of the fit range for the enery loss fits is returned.
  // 
  // Return:
  //    Lower cut on multiplicity
  //
  DGUARD(fDebug, 5, "Get mult cut for FMD%d%c @ eta=%8.4f", 
	 d, r, eta);
  AliForwardCorrectionManager&  fcm  = AliForwardCorrectionManager::Instance();
  const AliFMDCorrELossFit*     fits = fcm.GetELossFit();
  Int_t                         iEta = fits ? fits->FindEtaBin(eta) : 1;
  DMSG(fDebug, 5, "bin=%4d", iEta);
  return GetMultCut(d, r, iEta, errors);
}
//____________________________________________________________________
const char*
AliFMDMultCuts::GetMethodString(Bool_t latex) const
{
  return Method2String(fMethod, latex);
}

//____________________________________________________________________
const char*
AliFMDMultCuts::Method2String(EMethod method, Bool_t latex)
{
  switch (method) {
  case kFixed:            
    return latex ? "c=X" : "fixed value";
  case kMPVFraction:      
    return latex ? "c=X#times#Delta_{p}":"fraction of MPV";
  case kFitRange:         
    return latex ? "range" : "c: lower fit bound";
  case kLandauWidth:      
    return latex ? "c=#Delta_{p}-X#times#xi" : "landau width";
  case kLandauSigmaWidth: 
    return latex ? "c=#Delta_{p}-X#times(#xi+#sigma)" : "landau+sigma width";
  case kProbability:      
    return latex ? "c:P(#Delta<c)<X" : "probability";
  }
  return latex ? "c:?" : "unknown";
} 
//____________________________________________________________________
AliFMDMultCuts::EMethod
AliFMDMultCuts::String2Method(const char* str)
{
  TString m(str);
  if (m.EqualTo("fixed value")     || m.Contains("fix")) 
    return kFixed;
  else if (m.EqualTo("fraction of mpv") || m.Contains("mpv")) 
    return kMPVFraction;
  else if (m.EqualTo("fit range")       || m.Contains("fit")) 
    return kFitRange;
  else if (m.EqualTo("landau width")    || m.Contains("xi") || 
	   m.Contains("width")) return kLandauWidth;
  else if (m.EqualTo("landau+sigma width") || m.Contains("sig")) 
    return kLandauSigmaWidth;
  else if (m.EqualTo("probability")        || m.Contains("prob")) 
    return kProbability;
  return kFixed;
 } 
  
//____________________________________________________________________
void
AliFMDMultCuts::FillHistogram(TH2* h) const
{
  DGUARD(fDebug, 5, "Fill Histogram %s with cuts", h->GetName());
  // AliInfoF("Caching multiplicity cuts (%s)", h->GetName());
  TAxis* yAxis = h->GetYaxis(); 
  for (Int_t iy = 1; iy <= yAxis->GetNbins(); iy++) { 
    TString lab(yAxis->GetBinLabel(iy));
    lab.Remove(0,3);
    UShort_t det = lab.Atoi();
    Char_t   rng = lab[1];
    // Printf("Filling for FMD%d%c (bin # %d) %s", det, rng, iy, lab.Data());
    DMSG(fDebug, 5, "FMD%d%c", det, rng);
    // AliInfoF("FMD%d%c", det, rng);
    for (Int_t ix = 1; ix <= h->GetNbinsX(); ix++) {
      Double_t eta = h->GetXaxis()->GetBinCenter(ix);
      Double_t c   = GetMultCut(det, rng, eta,  false);
      DMSG(fDebug, 10, "FMD%s bin=%4d -> eta=%8.4f -> %8.4f", 
	   lab.Data(), ix, eta, c);
      // Double_t c = GetMultCut(det, rng, ix, false);
      if (c > 0) h->SetBinContent(ix, iy, c);
    }
  }
}

//____________________________________________________________________
void
AliFMDMultCuts::Output(TList* l, const char* name) const
{
  TList* ll = l;
  if (name && name[0] != '\0') { 
    ll = new TList;
    ll->SetName(name);
    ll->SetOwner();
    l->Add(ll);
  }
    

  ll->Add(AliForwardUtil::MakeParameter("method", UShort_t(fMethod)));
  ll->Add(AliForwardUtil::MakeParameter("fmd1i", fCuts[0]));
  ll->Add(AliForwardUtil::MakeParameter("fmd2i", fCuts[1]));
  ll->Add(AliForwardUtil::MakeParameter("fmd2o", fCuts[2]));
  ll->Add(AliForwardUtil::MakeParameter("fmd3i", fCuts[3]));
  ll->Add(AliForwardUtil::MakeParameter("fmd3o", fCuts[4]));
}
//____________________________________________________________________
Bool_t
AliFMDMultCuts::Input(TList* l, const char* name)
{
  if (!l) return false;
  TList* ll = l;
  if (name && name[0] != '\0') { 
    ll = static_cast<TList*>(l->FindObject(name));
  }
  if (!ll) return false;
  
  TObject* meth    = ll->FindObject("method");
  TObject* fmd1i   = ll->FindObject("fmd1i");
  TObject* fmd2i   = ll->FindObject("fmd2i");
  TObject* fmd2o   = ll->FindObject("fmd2o");
  TObject* fmd3i   = ll->FindObject("fmd3i");
  TObject* fmd3o   = ll->FindObject("fmd3o");
  
  UShort_t methNum = 0;
  
  AliForwardUtil::GetParameter(meth,  methNum);
  switch (methNum) { 
  case 0: fMethod = kFixed;            break;
  case 1: fMethod = kMPVFraction;      break;
  case 2: fMethod = kFitRange;         break;
  case 3: fMethod = kLandauWidth;      break;
  case 4: fMethod = kLandauSigmaWidth; break;
  case 5: fMethod = kProbability;      break;
  }

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