ROOT logo
//
// This class contains the secondary correction and the double hit
// correction used in low-flux events.
//
#include "AliFMDCorrSecondaryMap.h"
#include <TBrowser.h>
#include <TH2D.h>
#include <AliLog.h>
#include <iostream>

//____________________________________________________________________
AliFMDCorrSecondaryMap::AliFMDCorrSecondaryMap()
  : fRingArray(), 
    fVertexAxis(0,0,0),
    fEtaAxis(0,0,0)
{
  // 
  // Default constructor 
  //
  fRingArray.SetOwner(kTRUE);
  fRingArray.SetName("rings");
  fVertexAxis.SetName("vertexAxis");
  fVertexAxis.SetTitle("v_{z} [cm]");
  fEtaAxis.SetName("etaAxis");
  fEtaAxis.SetTitle("#eta");
  
}
//____________________________________________________________________
AliFMDCorrSecondaryMap::AliFMDCorrSecondaryMap(const 
					       AliFMDCorrSecondaryMap& o)
  : TObject(o), 
    fRingArray(o.fRingArray), 
    fVertexAxis(o.fVertexAxis.GetNbins(), o.fVertexAxis.GetXmin(), 
		o.fVertexAxis.GetXmax()),
    fEtaAxis(o.fEtaAxis.GetNbins(), o.fEtaAxis.GetXmin(), 
	     o.fEtaAxis.GetXmax())
{
  // 
  // Copy constructor 
  // 
  // Parameters:
  //    o Object to copy from 
  //
  fVertexAxis.SetName("vertexAxis");
  fVertexAxis.SetTitle("v_{z} [cm]");
  fEtaAxis.SetName("etaAxis");
  fEtaAxis.SetTitle("v_{z} [cm]");
}
//____________________________________________________________________
AliFMDCorrSecondaryMap::~AliFMDCorrSecondaryMap()
{
  //
  // Destructor 
  // 
  //
  fRingArray.Clear();
}
//____________________________________________________________________
AliFMDCorrSecondaryMap&
AliFMDCorrSecondaryMap::operator=(const AliFMDCorrSecondaryMap& o)
{
  // 
  // Assignment operator 
  // 
  // Parameters:
  //    o Object to assign from 
  // 
  // Return:
  //    Reference to this object 
  //
  fRingArray        = o.fRingArray;
  SetVertexAxis(o.fVertexAxis);
  SetEtaAxis(o.fEtaAxis);

  return *this;
}
//____________________________________________________________________
TH2D*
AliFMDCorrSecondaryMap::GetCorrection(UShort_t d, Char_t r, Double_t v) const
{
  // 
  // Get the secondary correction @f$ c_{r,v}@f$ 
  // 
  // Parameters:
  //    d  Detector number (1-3)
  //    r  Ring identifier (I or O)
  //    v  Primary interaction point @f$z@f$ coordinate
  // 
  // Return:
  //    The correction @f$ c_{r,v}@f$ 
  //
  Int_t b = FindVertexBin(v);
  if (b <= 0) return 0;
  return GetCorrection(d, r, UShort_t(b));
}
//____________________________________________________________________
TH2D*
AliFMDCorrSecondaryMap::GetCorrection(UShort_t d, Char_t r, UShort_t b) const
{
  // 
  // Get the secondary correction @f$ c_{r,v}@f$ 
  // 
  // Parameters:
  //    d  Detector number (1-3)
  //    r  Ring identifier (I or O)
  //    b  Bin corresponding to the primary interaction point 
  //           @f$z@f$ coordinate (1 based)
  // 
  // Return:
  //    The correction @f$ c_{r,v}@f$ 
  //
  TObjArray* ringArray = GetRingArray(d, r);
  if (!ringArray) return 0;

  if (b <= 0 || b > ringArray->GetEntriesFast()) {
    AliWarning(Form("vertex bin %d out of range [1,%d]", 
		    b, ringArray->GetEntriesFast()));
    return 0;
  }

  TObject* o = ringArray->At(b-1);
  if (!o) { 
    AliWarning(Form("No secondary map found for FMD%d%c in vertex bin %d",
		    d,r,b));
    return 0;
  }
  return static_cast<TH2D*>(o);
}
  
//____________________________________________________________________
Int_t
AliFMDCorrSecondaryMap::FindVertexBin(Double_t v) const
{
  // 
  // Find the vertex bin that corresponds to the passed vertex 
  // 
  // Parameters:
  //    vertex The interaction points @f$z@f$-coordinate 
  // 
  // Return:
  //    Vertex bin in @f$[1,N_{\mbox{vertex}}]@f$ or negative if 
  // out of range 
  //
  if (fVertexAxis.GetNbins() <= 0) { 
    AliWarning("No vertex array defined");
    return 0;
  }
  Int_t bin = const_cast<TAxis&>(fVertexAxis).FindBin(v);
  if (bin <= 0 || bin > fVertexAxis.GetNbins()) { 
    AliWarning(Form("vertex %+8.4f out of range [%+8.4f,%+8.4f]",
		    v, fVertexAxis.GetXmin(), fVertexAxis.GetXmax()));
    return 0;
  }
  return bin;
}
//____________________________________________________________________
Int_t
AliFMDCorrSecondaryMap::GetRingIndex(UShort_t d, Char_t r) const
{
  // 
  // Get the index corresponding to the given ring 
  // 
  // Parameters:
  //    d Detector
  //    r Ring 
  // 
  // Return:
  //    Index (0 based) or negative in case of errors
  //
  switch (d) {
  case 1:  return 0;
  case 2:  return (r == 'I' || r == 'i' ? 1 : 2); break;  
  case 3:  return (r == 'I' || r == 'i' ? 3 : 4); break;  
  }
  AliWarning(Form("Index for FMD%d%c not found", d, r));
  return -1;
}
//____________________________________________________________________
TObjArray*
AliFMDCorrSecondaryMap::GetRingArray(UShort_t d, Char_t r) const
{
  // 
  // Get the ring array corresponding to the specified ring
  // 
  // Parameters:
  //    d Detector 
  //    r Ring 
  // 
  // Return:
  //    Pointer to ring array, or null in case of problems
  //
  Int_t idx = GetRingIndex(d,r);
  if (idx < 0) return 0;
  
  TObject* o = fRingArray.At(idx);
  if (!o) { 
    AliWarning(Form("No array found for FMD%d%c", d, r));
    return 0;
  }

  return static_cast<TObjArray*>(o);
}
//____________________________________________________________________
TObjArray*
AliFMDCorrSecondaryMap::GetOrMakeRingArray(UShort_t d, Char_t r)
{
  // 
  // Get the ring array corresponding to the specified ring
  // 
  // Parameters:
  //    d Detector 
  //    r Ring 
  // 
  // Return:
  //    Pointer to ring array, or newly created container 
  //
  Int_t idx = GetRingIndex(d,r);
  if (idx < 0) return 0;
  
  TObject* o = fRingArray.At(idx);
  if (!o) { 
    TObjArray* a = new TObjArray(fVertexAxis.GetNbins());
    a->SetName(Form("FMD%d%c", d, r));
    a->SetOwner(kTRUE);
    fRingArray.AddAtAndExpand(a, idx);
    return a;
  }

  return static_cast<TObjArray*>(fRingArray.At(idx));
}

//____________________________________________________________________
Bool_t
AliFMDCorrSecondaryMap::SetCorrection(UShort_t d, Char_t r, 
				      UShort_t b, TH2D*  h) 
{
  // 
  // Set the secondary map correction @f$ c_{r,v}(\eta,\varphi)@f$ 
  // Note, that the object takes ownership of the passed pointer.
  // 
  // Parameters:
  //    d    Detector number (1-3)
  //    r    Ring identifier (I or O)
  //    b    Bin corresponding to the primary interaction point 
  //             @f$z@f$ coordinate  (1 based)
  //    h    @f$ c_{r,v}(\eta,\varphi)@f$ 
  // 
  // Return:
  //    true if operation succeeded 
  //
  TObjArray* ringArray = GetOrMakeRingArray(d, r);
  if (!ringArray) return false;
  
  if (b <= 0 || b > fVertexAxis.GetNbins()) { 
    AliWarning(Form("Vertex bin %3d out of range [1,%3d]", 
		    b, fVertexAxis.GetNbins()));
    return false;
  }
  h->SetName(Form("FMD%d%c_vtxbin%03d", d, r, b));
  h->SetTitle(Form("Secondary map correction for FMD%d%c "
		   "in vertex bin %d [%+8.4f,%+8.4f]", 
		   d, r, b, fVertexAxis.GetBinLowEdge(b), 
		   fVertexAxis.GetBinUpEdge(b)));
  h->SetXTitle("#eta");
  h->SetYTitle("#phi [radians]");
  h->SetZTitle("#sum_{i} N_{ch,i,primary} / #sum_{i} N_{ch,i,FMD}");
  h->SetDirectory(0);
  h->SetStats(0);
  ringArray->AddAtAndExpand(h, b-1);
  return kTRUE;
}
//____________________________________________________________________
Bool_t
AliFMDCorrSecondaryMap::SetCorrection(UShort_t d, Char_t r, 
				      Double_t v, TH2D*  h) 
{
  // 
  // Set the secondary map correction @f$ c_{r,v}(\eta,\varphi)@f$.
  // Note, that the object takes ownership of the passed pointer.
  // 
  // Parameters:
  //    d    Detector number (1-3)
  //    r    Ring identifier (I or O)
  //    v    Primary interaction point @f$z@f$ coordinate  
  //    h    @f$ c_{r,v}(\eta,\varphi)@f$ 
  // 
  // Return:
  //    true if operation succeeded 
  //
  Int_t b = FindVertexBin(v);
  if (b <= 0 || b > fVertexAxis.GetNbins()) { 
    AliWarning(Form("Vertex %+8.4f out of range [%+8.4f,%+8.4f]", 
		    v, fVertexAxis.GetXmin(), fVertexAxis.GetXmax()));
    return false;
  }
  return SetCorrection(d, r, UShort_t(b), h);
}
//____________________________________________________________________
void
AliFMDCorrSecondaryMap::Browse(TBrowser* b)
{
  // 
  // Browse this object in the browser
  // 
  // Parameters:
  //    b 
  //
  b->Add(&fRingArray);
  b->Add(&fVertexAxis);
  b->Add(&fEtaAxis);
}
//____________________________________________________________________
void
AliFMDCorrSecondaryMap::Print(Option_t* option) const
{
  // 
  // Print this object 
  // 
  // Parameters:
  //    option 
  //  
  std::cout << "Secondary correction map" << std::endl;
  fRingArray.Print(option);
  fVertexAxis.Print(option);
  fEtaAxis.Print(option);
}
    
//____________________________________________________________________
//
// EOF
//
 AliFMDCorrSecondaryMap.cxx:1
 AliFMDCorrSecondaryMap.cxx:2
 AliFMDCorrSecondaryMap.cxx:3
 AliFMDCorrSecondaryMap.cxx:4
 AliFMDCorrSecondaryMap.cxx:5
 AliFMDCorrSecondaryMap.cxx:6
 AliFMDCorrSecondaryMap.cxx:7
 AliFMDCorrSecondaryMap.cxx:8
 AliFMDCorrSecondaryMap.cxx:9
 AliFMDCorrSecondaryMap.cxx:10
 AliFMDCorrSecondaryMap.cxx:11
 AliFMDCorrSecondaryMap.cxx:12
 AliFMDCorrSecondaryMap.cxx:13
 AliFMDCorrSecondaryMap.cxx:14
 AliFMDCorrSecondaryMap.cxx:15
 AliFMDCorrSecondaryMap.cxx:16
 AliFMDCorrSecondaryMap.cxx:17
 AliFMDCorrSecondaryMap.cxx:18
 AliFMDCorrSecondaryMap.cxx:19
 AliFMDCorrSecondaryMap.cxx:20
 AliFMDCorrSecondaryMap.cxx:21
 AliFMDCorrSecondaryMap.cxx:22
 AliFMDCorrSecondaryMap.cxx:23
 AliFMDCorrSecondaryMap.cxx:24
 AliFMDCorrSecondaryMap.cxx:25
 AliFMDCorrSecondaryMap.cxx:26
 AliFMDCorrSecondaryMap.cxx:27
 AliFMDCorrSecondaryMap.cxx:28
 AliFMDCorrSecondaryMap.cxx:29
 AliFMDCorrSecondaryMap.cxx:30
 AliFMDCorrSecondaryMap.cxx:31
 AliFMDCorrSecondaryMap.cxx:32
 AliFMDCorrSecondaryMap.cxx:33
 AliFMDCorrSecondaryMap.cxx:34
 AliFMDCorrSecondaryMap.cxx:35
 AliFMDCorrSecondaryMap.cxx:36
 AliFMDCorrSecondaryMap.cxx:37
 AliFMDCorrSecondaryMap.cxx:38
 AliFMDCorrSecondaryMap.cxx:39
 AliFMDCorrSecondaryMap.cxx:40
 AliFMDCorrSecondaryMap.cxx:41
 AliFMDCorrSecondaryMap.cxx:42
 AliFMDCorrSecondaryMap.cxx:43
 AliFMDCorrSecondaryMap.cxx:44
 AliFMDCorrSecondaryMap.cxx:45
 AliFMDCorrSecondaryMap.cxx:46
 AliFMDCorrSecondaryMap.cxx:47
 AliFMDCorrSecondaryMap.cxx:48
 AliFMDCorrSecondaryMap.cxx:49
 AliFMDCorrSecondaryMap.cxx:50
 AliFMDCorrSecondaryMap.cxx:51
 AliFMDCorrSecondaryMap.cxx:52
 AliFMDCorrSecondaryMap.cxx:53
 AliFMDCorrSecondaryMap.cxx:54
 AliFMDCorrSecondaryMap.cxx:55
 AliFMDCorrSecondaryMap.cxx:56
 AliFMDCorrSecondaryMap.cxx:57
 AliFMDCorrSecondaryMap.cxx:58
 AliFMDCorrSecondaryMap.cxx:59
 AliFMDCorrSecondaryMap.cxx:60
 AliFMDCorrSecondaryMap.cxx:61
 AliFMDCorrSecondaryMap.cxx:62
 AliFMDCorrSecondaryMap.cxx:63
 AliFMDCorrSecondaryMap.cxx:64
 AliFMDCorrSecondaryMap.cxx:65
 AliFMDCorrSecondaryMap.cxx:66
 AliFMDCorrSecondaryMap.cxx:67
 AliFMDCorrSecondaryMap.cxx:68
 AliFMDCorrSecondaryMap.cxx:69
 AliFMDCorrSecondaryMap.cxx:70
 AliFMDCorrSecondaryMap.cxx:71
 AliFMDCorrSecondaryMap.cxx:72
 AliFMDCorrSecondaryMap.cxx:73
 AliFMDCorrSecondaryMap.cxx:74
 AliFMDCorrSecondaryMap.cxx:75
 AliFMDCorrSecondaryMap.cxx:76
 AliFMDCorrSecondaryMap.cxx:77
 AliFMDCorrSecondaryMap.cxx:78
 AliFMDCorrSecondaryMap.cxx:79
 AliFMDCorrSecondaryMap.cxx:80
 AliFMDCorrSecondaryMap.cxx:81
 AliFMDCorrSecondaryMap.cxx:82
 AliFMDCorrSecondaryMap.cxx:83
 AliFMDCorrSecondaryMap.cxx:84
 AliFMDCorrSecondaryMap.cxx:85
 AliFMDCorrSecondaryMap.cxx:86
 AliFMDCorrSecondaryMap.cxx:87
 AliFMDCorrSecondaryMap.cxx:88
 AliFMDCorrSecondaryMap.cxx:89
 AliFMDCorrSecondaryMap.cxx:90
 AliFMDCorrSecondaryMap.cxx:91
 AliFMDCorrSecondaryMap.cxx:92
 AliFMDCorrSecondaryMap.cxx:93
 AliFMDCorrSecondaryMap.cxx:94
 AliFMDCorrSecondaryMap.cxx:95
 AliFMDCorrSecondaryMap.cxx:96
 AliFMDCorrSecondaryMap.cxx:97
 AliFMDCorrSecondaryMap.cxx:98
 AliFMDCorrSecondaryMap.cxx:99
 AliFMDCorrSecondaryMap.cxx:100
 AliFMDCorrSecondaryMap.cxx:101
 AliFMDCorrSecondaryMap.cxx:102
 AliFMDCorrSecondaryMap.cxx:103
 AliFMDCorrSecondaryMap.cxx:104
 AliFMDCorrSecondaryMap.cxx:105
 AliFMDCorrSecondaryMap.cxx:106
 AliFMDCorrSecondaryMap.cxx:107
 AliFMDCorrSecondaryMap.cxx:108
 AliFMDCorrSecondaryMap.cxx:109
 AliFMDCorrSecondaryMap.cxx:110
 AliFMDCorrSecondaryMap.cxx:111
 AliFMDCorrSecondaryMap.cxx:112
 AliFMDCorrSecondaryMap.cxx:113
 AliFMDCorrSecondaryMap.cxx:114
 AliFMDCorrSecondaryMap.cxx:115
 AliFMDCorrSecondaryMap.cxx:116
 AliFMDCorrSecondaryMap.cxx:117
 AliFMDCorrSecondaryMap.cxx:118
 AliFMDCorrSecondaryMap.cxx:119
 AliFMDCorrSecondaryMap.cxx:120
 AliFMDCorrSecondaryMap.cxx:121
 AliFMDCorrSecondaryMap.cxx:122
 AliFMDCorrSecondaryMap.cxx:123
 AliFMDCorrSecondaryMap.cxx:124
 AliFMDCorrSecondaryMap.cxx:125
 AliFMDCorrSecondaryMap.cxx:126
 AliFMDCorrSecondaryMap.cxx:127
 AliFMDCorrSecondaryMap.cxx:128
 AliFMDCorrSecondaryMap.cxx:129
 AliFMDCorrSecondaryMap.cxx:130
 AliFMDCorrSecondaryMap.cxx:131
 AliFMDCorrSecondaryMap.cxx:132
 AliFMDCorrSecondaryMap.cxx:133
 AliFMDCorrSecondaryMap.cxx:134
 AliFMDCorrSecondaryMap.cxx:135
 AliFMDCorrSecondaryMap.cxx:136
 AliFMDCorrSecondaryMap.cxx:137
 AliFMDCorrSecondaryMap.cxx:138
 AliFMDCorrSecondaryMap.cxx:139
 AliFMDCorrSecondaryMap.cxx:140
 AliFMDCorrSecondaryMap.cxx:141
 AliFMDCorrSecondaryMap.cxx:142
 AliFMDCorrSecondaryMap.cxx:143
 AliFMDCorrSecondaryMap.cxx:144
 AliFMDCorrSecondaryMap.cxx:145
 AliFMDCorrSecondaryMap.cxx:146
 AliFMDCorrSecondaryMap.cxx:147
 AliFMDCorrSecondaryMap.cxx:148
 AliFMDCorrSecondaryMap.cxx:149
 AliFMDCorrSecondaryMap.cxx:150
 AliFMDCorrSecondaryMap.cxx:151
 AliFMDCorrSecondaryMap.cxx:152
 AliFMDCorrSecondaryMap.cxx:153
 AliFMDCorrSecondaryMap.cxx:154
 AliFMDCorrSecondaryMap.cxx:155
 AliFMDCorrSecondaryMap.cxx:156
 AliFMDCorrSecondaryMap.cxx:157
 AliFMDCorrSecondaryMap.cxx:158
 AliFMDCorrSecondaryMap.cxx:159
 AliFMDCorrSecondaryMap.cxx:160
 AliFMDCorrSecondaryMap.cxx:161
 AliFMDCorrSecondaryMap.cxx:162
 AliFMDCorrSecondaryMap.cxx:163
 AliFMDCorrSecondaryMap.cxx:164
 AliFMDCorrSecondaryMap.cxx:165
 AliFMDCorrSecondaryMap.cxx:166
 AliFMDCorrSecondaryMap.cxx:167
 AliFMDCorrSecondaryMap.cxx:168
 AliFMDCorrSecondaryMap.cxx:169
 AliFMDCorrSecondaryMap.cxx:170
 AliFMDCorrSecondaryMap.cxx:171
 AliFMDCorrSecondaryMap.cxx:172
 AliFMDCorrSecondaryMap.cxx:173
 AliFMDCorrSecondaryMap.cxx:174
 AliFMDCorrSecondaryMap.cxx:175
 AliFMDCorrSecondaryMap.cxx:176
 AliFMDCorrSecondaryMap.cxx:177
 AliFMDCorrSecondaryMap.cxx:178
 AliFMDCorrSecondaryMap.cxx:179
 AliFMDCorrSecondaryMap.cxx:180
 AliFMDCorrSecondaryMap.cxx:181
 AliFMDCorrSecondaryMap.cxx:182
 AliFMDCorrSecondaryMap.cxx:183
 AliFMDCorrSecondaryMap.cxx:184
 AliFMDCorrSecondaryMap.cxx:185
 AliFMDCorrSecondaryMap.cxx:186
 AliFMDCorrSecondaryMap.cxx:187
 AliFMDCorrSecondaryMap.cxx:188
 AliFMDCorrSecondaryMap.cxx:189
 AliFMDCorrSecondaryMap.cxx:190
 AliFMDCorrSecondaryMap.cxx:191
 AliFMDCorrSecondaryMap.cxx:192
 AliFMDCorrSecondaryMap.cxx:193
 AliFMDCorrSecondaryMap.cxx:194
 AliFMDCorrSecondaryMap.cxx:195
 AliFMDCorrSecondaryMap.cxx:196
 AliFMDCorrSecondaryMap.cxx:197
 AliFMDCorrSecondaryMap.cxx:198
 AliFMDCorrSecondaryMap.cxx:199
 AliFMDCorrSecondaryMap.cxx:200
 AliFMDCorrSecondaryMap.cxx:201
 AliFMDCorrSecondaryMap.cxx:202
 AliFMDCorrSecondaryMap.cxx:203
 AliFMDCorrSecondaryMap.cxx:204
 AliFMDCorrSecondaryMap.cxx:205
 AliFMDCorrSecondaryMap.cxx:206
 AliFMDCorrSecondaryMap.cxx:207
 AliFMDCorrSecondaryMap.cxx:208
 AliFMDCorrSecondaryMap.cxx:209
 AliFMDCorrSecondaryMap.cxx:210
 AliFMDCorrSecondaryMap.cxx:211
 AliFMDCorrSecondaryMap.cxx:212
 AliFMDCorrSecondaryMap.cxx:213
 AliFMDCorrSecondaryMap.cxx:214
 AliFMDCorrSecondaryMap.cxx:215
 AliFMDCorrSecondaryMap.cxx:216
 AliFMDCorrSecondaryMap.cxx:217
 AliFMDCorrSecondaryMap.cxx:218
 AliFMDCorrSecondaryMap.cxx:219
 AliFMDCorrSecondaryMap.cxx:220
 AliFMDCorrSecondaryMap.cxx:221
 AliFMDCorrSecondaryMap.cxx:222
 AliFMDCorrSecondaryMap.cxx:223
 AliFMDCorrSecondaryMap.cxx:224
 AliFMDCorrSecondaryMap.cxx:225
 AliFMDCorrSecondaryMap.cxx:226
 AliFMDCorrSecondaryMap.cxx:227
 AliFMDCorrSecondaryMap.cxx:228
 AliFMDCorrSecondaryMap.cxx:229
 AliFMDCorrSecondaryMap.cxx:230
 AliFMDCorrSecondaryMap.cxx:231
 AliFMDCorrSecondaryMap.cxx:232
 AliFMDCorrSecondaryMap.cxx:233
 AliFMDCorrSecondaryMap.cxx:234
 AliFMDCorrSecondaryMap.cxx:235
 AliFMDCorrSecondaryMap.cxx:236
 AliFMDCorrSecondaryMap.cxx:237
 AliFMDCorrSecondaryMap.cxx:238
 AliFMDCorrSecondaryMap.cxx:239
 AliFMDCorrSecondaryMap.cxx:240
 AliFMDCorrSecondaryMap.cxx:241
 AliFMDCorrSecondaryMap.cxx:242
 AliFMDCorrSecondaryMap.cxx:243
 AliFMDCorrSecondaryMap.cxx:244
 AliFMDCorrSecondaryMap.cxx:245
 AliFMDCorrSecondaryMap.cxx:246
 AliFMDCorrSecondaryMap.cxx:247
 AliFMDCorrSecondaryMap.cxx:248
 AliFMDCorrSecondaryMap.cxx:249
 AliFMDCorrSecondaryMap.cxx:250
 AliFMDCorrSecondaryMap.cxx:251
 AliFMDCorrSecondaryMap.cxx:252
 AliFMDCorrSecondaryMap.cxx:253
 AliFMDCorrSecondaryMap.cxx:254
 AliFMDCorrSecondaryMap.cxx:255
 AliFMDCorrSecondaryMap.cxx:256
 AliFMDCorrSecondaryMap.cxx:257
 AliFMDCorrSecondaryMap.cxx:258
 AliFMDCorrSecondaryMap.cxx:259
 AliFMDCorrSecondaryMap.cxx:260
 AliFMDCorrSecondaryMap.cxx:261
 AliFMDCorrSecondaryMap.cxx:262
 AliFMDCorrSecondaryMap.cxx:263
 AliFMDCorrSecondaryMap.cxx:264
 AliFMDCorrSecondaryMap.cxx:265
 AliFMDCorrSecondaryMap.cxx:266
 AliFMDCorrSecondaryMap.cxx:267
 AliFMDCorrSecondaryMap.cxx:268
 AliFMDCorrSecondaryMap.cxx:269
 AliFMDCorrSecondaryMap.cxx:270
 AliFMDCorrSecondaryMap.cxx:271
 AliFMDCorrSecondaryMap.cxx:272
 AliFMDCorrSecondaryMap.cxx:273
 AliFMDCorrSecondaryMap.cxx:274
 AliFMDCorrSecondaryMap.cxx:275
 AliFMDCorrSecondaryMap.cxx:276
 AliFMDCorrSecondaryMap.cxx:277
 AliFMDCorrSecondaryMap.cxx:278
 AliFMDCorrSecondaryMap.cxx:279
 AliFMDCorrSecondaryMap.cxx:280
 AliFMDCorrSecondaryMap.cxx:281
 AliFMDCorrSecondaryMap.cxx:282
 AliFMDCorrSecondaryMap.cxx:283
 AliFMDCorrSecondaryMap.cxx:284
 AliFMDCorrSecondaryMap.cxx:285
 AliFMDCorrSecondaryMap.cxx:286
 AliFMDCorrSecondaryMap.cxx:287
 AliFMDCorrSecondaryMap.cxx:288
 AliFMDCorrSecondaryMap.cxx:289
 AliFMDCorrSecondaryMap.cxx:290
 AliFMDCorrSecondaryMap.cxx:291
 AliFMDCorrSecondaryMap.cxx:292
 AliFMDCorrSecondaryMap.cxx:293
 AliFMDCorrSecondaryMap.cxx:294
 AliFMDCorrSecondaryMap.cxx:295
 AliFMDCorrSecondaryMap.cxx:296
 AliFMDCorrSecondaryMap.cxx:297
 AliFMDCorrSecondaryMap.cxx:298
 AliFMDCorrSecondaryMap.cxx:299
 AliFMDCorrSecondaryMap.cxx:300
 AliFMDCorrSecondaryMap.cxx:301
 AliFMDCorrSecondaryMap.cxx:302
 AliFMDCorrSecondaryMap.cxx:303
 AliFMDCorrSecondaryMap.cxx:304
 AliFMDCorrSecondaryMap.cxx:305
 AliFMDCorrSecondaryMap.cxx:306
 AliFMDCorrSecondaryMap.cxx:307
 AliFMDCorrSecondaryMap.cxx:308
 AliFMDCorrSecondaryMap.cxx:309
 AliFMDCorrSecondaryMap.cxx:310
 AliFMDCorrSecondaryMap.cxx:311
 AliFMDCorrSecondaryMap.cxx:312
 AliFMDCorrSecondaryMap.cxx:313
 AliFMDCorrSecondaryMap.cxx:314
 AliFMDCorrSecondaryMap.cxx:315
 AliFMDCorrSecondaryMap.cxx:316
 AliFMDCorrSecondaryMap.cxx:317
 AliFMDCorrSecondaryMap.cxx:318
 AliFMDCorrSecondaryMap.cxx:319
 AliFMDCorrSecondaryMap.cxx:320
 AliFMDCorrSecondaryMap.cxx:321
 AliFMDCorrSecondaryMap.cxx:322
 AliFMDCorrSecondaryMap.cxx:323
 AliFMDCorrSecondaryMap.cxx:324
 AliFMDCorrSecondaryMap.cxx:325
 AliFMDCorrSecondaryMap.cxx:326
 AliFMDCorrSecondaryMap.cxx:327
 AliFMDCorrSecondaryMap.cxx:328
 AliFMDCorrSecondaryMap.cxx:329
 AliFMDCorrSecondaryMap.cxx:330
 AliFMDCorrSecondaryMap.cxx:331