ROOT logo
//
// This class contains the acceptance correction due to dead channels 
// 
//
#include "AliCentralCorrAcceptance.h"
#include <TBrowser.h>
#include <TH1D.h>
#include <AliLog.h>
#include <iostream>

//____________________________________________________________________
AliCentralCorrAcceptance::AliCentralCorrAcceptance()
  : fArray(), 
    fVertexAxis(0,0,0)
{
  // 
  // Default constructor 
  //
  fArray.SetOwner(kTRUE);
  fArray.SetName("acceptance");
  fVertexAxis.SetName("vtxAxis");
  fVertexAxis.SetTitle("v_{z} [cm]");
  
}
//____________________________________________________________________
AliCentralCorrAcceptance::AliCentralCorrAcceptance(const 
					       AliCentralCorrAcceptance& o)
  : TObject(o), 
    fArray(o.fArray), 
    fVertexAxis(o.fVertexAxis.GetNbins(), o.fVertexAxis.GetXmin(), 
		o.fVertexAxis.GetXmax())
{
  // 
  // Copy constructor 
  // 
  // Parameters:
  //    o Object to copy from 
  //
  fVertexAxis.SetName("vtxAxis");
  fVertexAxis.SetTitle("v_{z} [cm]");
}
//____________________________________________________________________
AliCentralCorrAcceptance::~AliCentralCorrAcceptance()
{
  //
  // Destructor 
  // 
  //
  fArray.Clear();
}
//____________________________________________________________________
AliCentralCorrAcceptance&
AliCentralCorrAcceptance::operator=(const AliCentralCorrAcceptance& o)
{
  // 
  // Assignment operator 
  // 
  // Parameters:
  //    o Object to assign from 
  // 
  // Return:
  //    Reference to this object 
  //
  fArray        = o.fArray;
  SetVertexAxis(o.fVertexAxis);

  return *this;
}
//____________________________________________________________________
TH1D*
AliCentralCorrAcceptance::GetCorrection(Double_t v) const
{
  // 
  // Get the acceptance correction @f$ a_{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$ a_{r,v}@f$ 
  //
  Int_t b = FindVertexBin(v);
  if (b <= 0) return 0;
  return GetCorrection(UShort_t(b));
}
//____________________________________________________________________
TH1D*
AliCentralCorrAcceptance::GetCorrection(UShort_t b) const
{
  // 
  // Get the acceptance correction @f$ a_{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$ a_{r,v}@f$ 
  //
  
  // TObjArray* ringArray = GetRingArray(d, r);
  //if (!ringArray) return 0;

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

  TObject* o = fArray.At(b-1);
  if (!o) { 
    AliWarning(Form("No dead channels map found for SPD in vertex bin %d",
		    b));
    return 0;
  }
  return static_cast<TH1D*>(o);
}
  
//____________________________________________________________________
Int_t
AliCentralCorrAcceptance::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;
}

//____________________________________________________________________
Bool_t
AliCentralCorrAcceptance::SetCorrection(UShort_t b, TH1D*  h) 
{
  // 
  // Set the acceptance correction @f$ a_{r,v}(\eta)@f$ 
  // Note, that the object takes ownership of the passed pointer.
  // 
  // Parameters:
  //    b    Bin corresponding to the primary interaction point 
  //             @f$z@f$ coordinate  (1 based)
  //    h    @f$ a_{r,v}(\eta)@f$ 
  // 
  // Return:
  //    true if operation succeeded 
  //
  
  if (b <= 0 || b > fVertexAxis.GetNbins()) { 
    AliWarning(Form("Vertex bin %3d out of range [1,%3d]", 
		    b, fVertexAxis.GetNbins()));
    return false;
  }
  
  h->SetName(Form("acc_vtxbin%03d",  b));
  h->SetTitle(Form("Acceptance correction [%+5.1f<v_{z}<%+5.1f]", 
		   fVertexAxis.GetBinLowEdge(b), 
		   fVertexAxis.GetBinUpEdge(b)));
  h->SetXTitle("#eta");
  h->SetYTitle("dN_{ch}/d#eta / sum_i N_{ch,i}");
  h->SetFillStyle(3001);
  h->SetDirectory(0);
  h->SetStats(0);
  fArray.AddAtAndExpand(h, b-1);
  return kTRUE;
}
//____________________________________________________________________
Bool_t
AliCentralCorrAcceptance::SetCorrection(Double_t v, TH1D*  h) 
{
  // 
  // Set the acceptance correction @f$ a_{r,v}(\eta)@f$.
  // Note, that the object takes ownership of the passed pointer.
  // 
  // Parameters
  //    v    Primary interaction point @f$z@f$ coordinate  
  //    h    @f$ a_{r,v}(\eta)@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(UShort_t(b), h);
}
//____________________________________________________________________
void
AliCentralCorrAcceptance::Browse(TBrowser* b)
{
  // 
  // Browse this object in the browser
  // 
  // Parameters:
  //    b 
  //
  b->Add(&fArray);
  b->Add(&fVertexAxis);
}
//____________________________________________________________________
void
AliCentralCorrAcceptance::Print(Option_t* /* option */) const
{
  // 
  // Print this object 
  // 
  // Parameters:
  //    option 
  //  
  std::cout << "  Acceptance correction due to dead channels" 
	    << "   # of vertex bins: "  << fVertexAxis.GetNbins() << "\n"
	    << "   Vertex range:     [" << fVertexAxis.GetXmin() 
	    << "," << fVertexAxis.GetXmax() << "]\n" 
	    << "   Histograms:\n"
	    << "    ";
  TIter next(&fArray);
  TObject* o = 0;
  while ((o = next())) std::cout << o->GetName() << " ";
  std::cout << std::endl;
}
    
//____________________________________________________________________
//
// EOF
//
 AliCentralCorrAcceptance.cxx:1
 AliCentralCorrAcceptance.cxx:2
 AliCentralCorrAcceptance.cxx:3
 AliCentralCorrAcceptance.cxx:4
 AliCentralCorrAcceptance.cxx:5
 AliCentralCorrAcceptance.cxx:6
 AliCentralCorrAcceptance.cxx:7
 AliCentralCorrAcceptance.cxx:8
 AliCentralCorrAcceptance.cxx:9
 AliCentralCorrAcceptance.cxx:10
 AliCentralCorrAcceptance.cxx:11
 AliCentralCorrAcceptance.cxx:12
 AliCentralCorrAcceptance.cxx:13
 AliCentralCorrAcceptance.cxx:14
 AliCentralCorrAcceptance.cxx:15
 AliCentralCorrAcceptance.cxx:16
 AliCentralCorrAcceptance.cxx:17
 AliCentralCorrAcceptance.cxx:18
 AliCentralCorrAcceptance.cxx:19
 AliCentralCorrAcceptance.cxx:20
 AliCentralCorrAcceptance.cxx:21
 AliCentralCorrAcceptance.cxx:22
 AliCentralCorrAcceptance.cxx:23
 AliCentralCorrAcceptance.cxx:24
 AliCentralCorrAcceptance.cxx:25
 AliCentralCorrAcceptance.cxx:26
 AliCentralCorrAcceptance.cxx:27
 AliCentralCorrAcceptance.cxx:28
 AliCentralCorrAcceptance.cxx:29
 AliCentralCorrAcceptance.cxx:30
 AliCentralCorrAcceptance.cxx:31
 AliCentralCorrAcceptance.cxx:32
 AliCentralCorrAcceptance.cxx:33
 AliCentralCorrAcceptance.cxx:34
 AliCentralCorrAcceptance.cxx:35
 AliCentralCorrAcceptance.cxx:36
 AliCentralCorrAcceptance.cxx:37
 AliCentralCorrAcceptance.cxx:38
 AliCentralCorrAcceptance.cxx:39
 AliCentralCorrAcceptance.cxx:40
 AliCentralCorrAcceptance.cxx:41
 AliCentralCorrAcceptance.cxx:42
 AliCentralCorrAcceptance.cxx:43
 AliCentralCorrAcceptance.cxx:44
 AliCentralCorrAcceptance.cxx:45
 AliCentralCorrAcceptance.cxx:46
 AliCentralCorrAcceptance.cxx:47
 AliCentralCorrAcceptance.cxx:48
 AliCentralCorrAcceptance.cxx:49
 AliCentralCorrAcceptance.cxx:50
 AliCentralCorrAcceptance.cxx:51
 AliCentralCorrAcceptance.cxx:52
 AliCentralCorrAcceptance.cxx:53
 AliCentralCorrAcceptance.cxx:54
 AliCentralCorrAcceptance.cxx:55
 AliCentralCorrAcceptance.cxx:56
 AliCentralCorrAcceptance.cxx:57
 AliCentralCorrAcceptance.cxx:58
 AliCentralCorrAcceptance.cxx:59
 AliCentralCorrAcceptance.cxx:60
 AliCentralCorrAcceptance.cxx:61
 AliCentralCorrAcceptance.cxx:62
 AliCentralCorrAcceptance.cxx:63
 AliCentralCorrAcceptance.cxx:64
 AliCentralCorrAcceptance.cxx:65
 AliCentralCorrAcceptance.cxx:66
 AliCentralCorrAcceptance.cxx:67
 AliCentralCorrAcceptance.cxx:68
 AliCentralCorrAcceptance.cxx:69
 AliCentralCorrAcceptance.cxx:70
 AliCentralCorrAcceptance.cxx:71
 AliCentralCorrAcceptance.cxx:72
 AliCentralCorrAcceptance.cxx:73
 AliCentralCorrAcceptance.cxx:74
 AliCentralCorrAcceptance.cxx:75
 AliCentralCorrAcceptance.cxx:76
 AliCentralCorrAcceptance.cxx:77
 AliCentralCorrAcceptance.cxx:78
 AliCentralCorrAcceptance.cxx:79
 AliCentralCorrAcceptance.cxx:80
 AliCentralCorrAcceptance.cxx:81
 AliCentralCorrAcceptance.cxx:82
 AliCentralCorrAcceptance.cxx:83
 AliCentralCorrAcceptance.cxx:84
 AliCentralCorrAcceptance.cxx:85
 AliCentralCorrAcceptance.cxx:86
 AliCentralCorrAcceptance.cxx:87
 AliCentralCorrAcceptance.cxx:88
 AliCentralCorrAcceptance.cxx:89
 AliCentralCorrAcceptance.cxx:90
 AliCentralCorrAcceptance.cxx:91
 AliCentralCorrAcceptance.cxx:92
 AliCentralCorrAcceptance.cxx:93
 AliCentralCorrAcceptance.cxx:94
 AliCentralCorrAcceptance.cxx:95
 AliCentralCorrAcceptance.cxx:96
 AliCentralCorrAcceptance.cxx:97
 AliCentralCorrAcceptance.cxx:98
 AliCentralCorrAcceptance.cxx:99
 AliCentralCorrAcceptance.cxx:100
 AliCentralCorrAcceptance.cxx:101
 AliCentralCorrAcceptance.cxx:102
 AliCentralCorrAcceptance.cxx:103
 AliCentralCorrAcceptance.cxx:104
 AliCentralCorrAcceptance.cxx:105
 AliCentralCorrAcceptance.cxx:106
 AliCentralCorrAcceptance.cxx:107
 AliCentralCorrAcceptance.cxx:108
 AliCentralCorrAcceptance.cxx:109
 AliCentralCorrAcceptance.cxx:110
 AliCentralCorrAcceptance.cxx:111
 AliCentralCorrAcceptance.cxx:112
 AliCentralCorrAcceptance.cxx:113
 AliCentralCorrAcceptance.cxx:114
 AliCentralCorrAcceptance.cxx:115
 AliCentralCorrAcceptance.cxx:116
 AliCentralCorrAcceptance.cxx:117
 AliCentralCorrAcceptance.cxx:118
 AliCentralCorrAcceptance.cxx:119
 AliCentralCorrAcceptance.cxx:120
 AliCentralCorrAcceptance.cxx:121
 AliCentralCorrAcceptance.cxx:122
 AliCentralCorrAcceptance.cxx:123
 AliCentralCorrAcceptance.cxx:124
 AliCentralCorrAcceptance.cxx:125
 AliCentralCorrAcceptance.cxx:126
 AliCentralCorrAcceptance.cxx:127
 AliCentralCorrAcceptance.cxx:128
 AliCentralCorrAcceptance.cxx:129
 AliCentralCorrAcceptance.cxx:130
 AliCentralCorrAcceptance.cxx:131
 AliCentralCorrAcceptance.cxx:132
 AliCentralCorrAcceptance.cxx:133
 AliCentralCorrAcceptance.cxx:134
 AliCentralCorrAcceptance.cxx:135
 AliCentralCorrAcceptance.cxx:136
 AliCentralCorrAcceptance.cxx:137
 AliCentralCorrAcceptance.cxx:138
 AliCentralCorrAcceptance.cxx:139
 AliCentralCorrAcceptance.cxx:140
 AliCentralCorrAcceptance.cxx:141
 AliCentralCorrAcceptance.cxx:142
 AliCentralCorrAcceptance.cxx:143
 AliCentralCorrAcceptance.cxx:144
 AliCentralCorrAcceptance.cxx:145
 AliCentralCorrAcceptance.cxx:146
 AliCentralCorrAcceptance.cxx:147
 AliCentralCorrAcceptance.cxx:148
 AliCentralCorrAcceptance.cxx:149
 AliCentralCorrAcceptance.cxx:150
 AliCentralCorrAcceptance.cxx:151
 AliCentralCorrAcceptance.cxx:152
 AliCentralCorrAcceptance.cxx:153
 AliCentralCorrAcceptance.cxx:154
 AliCentralCorrAcceptance.cxx:155
 AliCentralCorrAcceptance.cxx:156
 AliCentralCorrAcceptance.cxx:157
 AliCentralCorrAcceptance.cxx:158
 AliCentralCorrAcceptance.cxx:159
 AliCentralCorrAcceptance.cxx:160
 AliCentralCorrAcceptance.cxx:161
 AliCentralCorrAcceptance.cxx:162
 AliCentralCorrAcceptance.cxx:163
 AliCentralCorrAcceptance.cxx:164
 AliCentralCorrAcceptance.cxx:165
 AliCentralCorrAcceptance.cxx:166
 AliCentralCorrAcceptance.cxx:167
 AliCentralCorrAcceptance.cxx:168
 AliCentralCorrAcceptance.cxx:169
 AliCentralCorrAcceptance.cxx:170
 AliCentralCorrAcceptance.cxx:171
 AliCentralCorrAcceptance.cxx:172
 AliCentralCorrAcceptance.cxx:173
 AliCentralCorrAcceptance.cxx:174
 AliCentralCorrAcceptance.cxx:175
 AliCentralCorrAcceptance.cxx:176
 AliCentralCorrAcceptance.cxx:177
 AliCentralCorrAcceptance.cxx:178
 AliCentralCorrAcceptance.cxx:179
 AliCentralCorrAcceptance.cxx:180
 AliCentralCorrAcceptance.cxx:181
 AliCentralCorrAcceptance.cxx:182
 AliCentralCorrAcceptance.cxx:183
 AliCentralCorrAcceptance.cxx:184
 AliCentralCorrAcceptance.cxx:185
 AliCentralCorrAcceptance.cxx:186
 AliCentralCorrAcceptance.cxx:187
 AliCentralCorrAcceptance.cxx:188
 AliCentralCorrAcceptance.cxx:189
 AliCentralCorrAcceptance.cxx:190
 AliCentralCorrAcceptance.cxx:191
 AliCentralCorrAcceptance.cxx:192
 AliCentralCorrAcceptance.cxx:193
 AliCentralCorrAcceptance.cxx:194
 AliCentralCorrAcceptance.cxx:195
 AliCentralCorrAcceptance.cxx:196
 AliCentralCorrAcceptance.cxx:197
 AliCentralCorrAcceptance.cxx:198
 AliCentralCorrAcceptance.cxx:199
 AliCentralCorrAcceptance.cxx:200
 AliCentralCorrAcceptance.cxx:201
 AliCentralCorrAcceptance.cxx:202
 AliCentralCorrAcceptance.cxx:203
 AliCentralCorrAcceptance.cxx:204
 AliCentralCorrAcceptance.cxx:205
 AliCentralCorrAcceptance.cxx:206
 AliCentralCorrAcceptance.cxx:207
 AliCentralCorrAcceptance.cxx:208
 AliCentralCorrAcceptance.cxx:209
 AliCentralCorrAcceptance.cxx:210
 AliCentralCorrAcceptance.cxx:211
 AliCentralCorrAcceptance.cxx:212
 AliCentralCorrAcceptance.cxx:213
 AliCentralCorrAcceptance.cxx:214
 AliCentralCorrAcceptance.cxx:215
 AliCentralCorrAcceptance.cxx:216
 AliCentralCorrAcceptance.cxx:217
 AliCentralCorrAcceptance.cxx:218
 AliCentralCorrAcceptance.cxx:219
 AliCentralCorrAcceptance.cxx:220
 AliCentralCorrAcceptance.cxx:221
 AliCentralCorrAcceptance.cxx:222
 AliCentralCorrAcceptance.cxx:223
 AliCentralCorrAcceptance.cxx:224
 AliCentralCorrAcceptance.cxx:225
 AliCentralCorrAcceptance.cxx:226
 AliCentralCorrAcceptance.cxx:227
 AliCentralCorrAcceptance.cxx:228
 AliCentralCorrAcceptance.cxx:229
 AliCentralCorrAcceptance.cxx:230
 AliCentralCorrAcceptance.cxx:231
 AliCentralCorrAcceptance.cxx:232
 AliCentralCorrAcceptance.cxx:233
 AliCentralCorrAcceptance.cxx:234
 AliCentralCorrAcceptance.cxx:235
 AliCentralCorrAcceptance.cxx:236
 AliCentralCorrAcceptance.cxx:237
 AliCentralCorrAcceptance.cxx:238
 AliCentralCorrAcceptance.cxx:239
 AliCentralCorrAcceptance.cxx:240
 AliCentralCorrAcceptance.cxx:241
 AliCentralCorrAcceptance.cxx:242
 AliCentralCorrAcceptance.cxx:243
 AliCentralCorrAcceptance.cxx:244
 AliCentralCorrAcceptance.cxx:245
 AliCentralCorrAcceptance.cxx:246