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

//____________________________________________________________________
AliFMDCorrDoubleHit::AliFMDCorrDoubleHit()
  : fCorrections()
{
  // Constructor 
  // 
  // 
  fCorrections.SetOwner(kTRUE);
  fCorrections.SetName("doubleHit");
}
//____________________________________________________________________
AliFMDCorrDoubleHit::AliFMDCorrDoubleHit(const AliFMDCorrDoubleHit& o)
  : TObject(o), 
    fCorrections(o.fCorrections)
{
  // Copy constructor 
  // 
  // Parameters: 
  //   o  Object to copy from 
}
//____________________________________________________________________
AliFMDCorrDoubleHit::~AliFMDCorrDoubleHit()
{
  // 
  // Destructor 
  // 
  fCorrections.Clear();
}
//____________________________________________________________________
AliFMDCorrDoubleHit&
AliFMDCorrDoubleHit::operator=(const AliFMDCorrDoubleHit& o)
{
  // Assignment operator 
  // 
  // Parameters: 
  //   o   Object to assign from 
  fCorrections   = o.fCorrections;

  return *this;
}
//____________________________________________________________________
TH1D*
AliFMDCorrDoubleHit::GetCorrection(UShort_t d, Char_t r) const
{
  // 
  // Get the double hit correction @f$ h_{r}(\eta)@f$ 
  //
  // Parameters:
  //    d Detector number 
  //    r Ring identifier 
  // 
  // Return:
  //    @f$ h_{r}(\eta)@f$ 
  //
  Int_t idx = GetRingIndex(d, r);
  if (idx < 0) return 0;

  TObject* o = fCorrections.At(idx);
  if (!o) { 
    AliWarning(Form("No double hit correction found for FMD%d%c", d, r));
    return 0;
  }
  return static_cast<TH1D*>(o);
}
//____________________________________________________________________
Int_t
AliFMDCorrDoubleHit::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;
}
//____________________________________________________________________
Bool_t
AliFMDCorrDoubleHit::SetCorrection(UShort_t d, Char_t r, TH1D* h) 
{
  // 
  // Set the double hit correction @f$ h_{r}(\eta)@f$. Note, that the
  // object takes ownership of the passed pointer.
  //
  // Parameters:
  //    d  Detector number (1-3)
  //    r  Ring identifier (I or O)
  //    h  @f$ h_{r}(\eta)@f$ 
  // 
  // Return:
  //    true if operation succeeded 
  //
  Int_t idx = GetRingIndex(d, r);
  if (idx < 0) return kFALSE;

  h->SetName(Form("FMD%d%c", d, r));
  h->SetTitle(Form("Double hit correction for FMD%d%c", d,r));
  h->SetXTitle("#eta");
  h->SetYTitle("#sum_{i} N_{i,strips hit}(#eta)/"
	       "#sum_{i} N_{i,total hits}(#eta)");
  // h->SetFillColor(Color(d,r));
  h->SetFillStyle(3001);
  h->SetDirectory(0);
  h->SetStats(0);
  
  fCorrections.AddAtAndExpand(h, idx);
  return kTRUE;
}
//____________________________________________________________________
void
AliFMDCorrDoubleHit::Browse(TBrowser* b)
{
  // BRowse this object 
  // 
  // Parameters:
  //  b   Browser to use
  b->Add(&fCorrections);
}
//____________________________________________________________________
void
AliFMDCorrDoubleHit::Print(Option_t* option) const
{
  // Print this object 
  // 
  // Parameters:
  //  option   Passed to TH2D::Print 
  std::cout << "Double hit correction" << std::endl;
  fCorrections.Print(option);
}
    
//____________________________________________________________________
//
// EOF
//
 AliFMDCorrDoubleHit.cxx:1
 AliFMDCorrDoubleHit.cxx:2
 AliFMDCorrDoubleHit.cxx:3
 AliFMDCorrDoubleHit.cxx:4
 AliFMDCorrDoubleHit.cxx:5
 AliFMDCorrDoubleHit.cxx:6
 AliFMDCorrDoubleHit.cxx:7
 AliFMDCorrDoubleHit.cxx:8
 AliFMDCorrDoubleHit.cxx:9
 AliFMDCorrDoubleHit.cxx:10
 AliFMDCorrDoubleHit.cxx:11
 AliFMDCorrDoubleHit.cxx:12
 AliFMDCorrDoubleHit.cxx:13
 AliFMDCorrDoubleHit.cxx:14
 AliFMDCorrDoubleHit.cxx:15
 AliFMDCorrDoubleHit.cxx:16
 AliFMDCorrDoubleHit.cxx:17
 AliFMDCorrDoubleHit.cxx:18
 AliFMDCorrDoubleHit.cxx:19
 AliFMDCorrDoubleHit.cxx:20
 AliFMDCorrDoubleHit.cxx:21
 AliFMDCorrDoubleHit.cxx:22
 AliFMDCorrDoubleHit.cxx:23
 AliFMDCorrDoubleHit.cxx:24
 AliFMDCorrDoubleHit.cxx:25
 AliFMDCorrDoubleHit.cxx:26
 AliFMDCorrDoubleHit.cxx:27
 AliFMDCorrDoubleHit.cxx:28
 AliFMDCorrDoubleHit.cxx:29
 AliFMDCorrDoubleHit.cxx:30
 AliFMDCorrDoubleHit.cxx:31
 AliFMDCorrDoubleHit.cxx:32
 AliFMDCorrDoubleHit.cxx:33
 AliFMDCorrDoubleHit.cxx:34
 AliFMDCorrDoubleHit.cxx:35
 AliFMDCorrDoubleHit.cxx:36
 AliFMDCorrDoubleHit.cxx:37
 AliFMDCorrDoubleHit.cxx:38
 AliFMDCorrDoubleHit.cxx:39
 AliFMDCorrDoubleHit.cxx:40
 AliFMDCorrDoubleHit.cxx:41
 AliFMDCorrDoubleHit.cxx:42
 AliFMDCorrDoubleHit.cxx:43
 AliFMDCorrDoubleHit.cxx:44
 AliFMDCorrDoubleHit.cxx:45
 AliFMDCorrDoubleHit.cxx:46
 AliFMDCorrDoubleHit.cxx:47
 AliFMDCorrDoubleHit.cxx:48
 AliFMDCorrDoubleHit.cxx:49
 AliFMDCorrDoubleHit.cxx:50
 AliFMDCorrDoubleHit.cxx:51
 AliFMDCorrDoubleHit.cxx:52
 AliFMDCorrDoubleHit.cxx:53
 AliFMDCorrDoubleHit.cxx:54
 AliFMDCorrDoubleHit.cxx:55
 AliFMDCorrDoubleHit.cxx:56
 AliFMDCorrDoubleHit.cxx:57
 AliFMDCorrDoubleHit.cxx:58
 AliFMDCorrDoubleHit.cxx:59
 AliFMDCorrDoubleHit.cxx:60
 AliFMDCorrDoubleHit.cxx:61
 AliFMDCorrDoubleHit.cxx:62
 AliFMDCorrDoubleHit.cxx:63
 AliFMDCorrDoubleHit.cxx:64
 AliFMDCorrDoubleHit.cxx:65
 AliFMDCorrDoubleHit.cxx:66
 AliFMDCorrDoubleHit.cxx:67
 AliFMDCorrDoubleHit.cxx:68
 AliFMDCorrDoubleHit.cxx:69
 AliFMDCorrDoubleHit.cxx:70
 AliFMDCorrDoubleHit.cxx:71
 AliFMDCorrDoubleHit.cxx:72
 AliFMDCorrDoubleHit.cxx:73
 AliFMDCorrDoubleHit.cxx:74
 AliFMDCorrDoubleHit.cxx:75
 AliFMDCorrDoubleHit.cxx:76
 AliFMDCorrDoubleHit.cxx:77
 AliFMDCorrDoubleHit.cxx:78
 AliFMDCorrDoubleHit.cxx:79
 AliFMDCorrDoubleHit.cxx:80
 AliFMDCorrDoubleHit.cxx:81
 AliFMDCorrDoubleHit.cxx:82
 AliFMDCorrDoubleHit.cxx:83
 AliFMDCorrDoubleHit.cxx:84
 AliFMDCorrDoubleHit.cxx:85
 AliFMDCorrDoubleHit.cxx:86
 AliFMDCorrDoubleHit.cxx:87
 AliFMDCorrDoubleHit.cxx:88
 AliFMDCorrDoubleHit.cxx:89
 AliFMDCorrDoubleHit.cxx:90
 AliFMDCorrDoubleHit.cxx:91
 AliFMDCorrDoubleHit.cxx:92
 AliFMDCorrDoubleHit.cxx:93
 AliFMDCorrDoubleHit.cxx:94
 AliFMDCorrDoubleHit.cxx:95
 AliFMDCorrDoubleHit.cxx:96
 AliFMDCorrDoubleHit.cxx:97
 AliFMDCorrDoubleHit.cxx:98
 AliFMDCorrDoubleHit.cxx:99
 AliFMDCorrDoubleHit.cxx:100
 AliFMDCorrDoubleHit.cxx:101
 AliFMDCorrDoubleHit.cxx:102
 AliFMDCorrDoubleHit.cxx:103
 AliFMDCorrDoubleHit.cxx:104
 AliFMDCorrDoubleHit.cxx:105
 AliFMDCorrDoubleHit.cxx:106
 AliFMDCorrDoubleHit.cxx:107
 AliFMDCorrDoubleHit.cxx:108
 AliFMDCorrDoubleHit.cxx:109
 AliFMDCorrDoubleHit.cxx:110
 AliFMDCorrDoubleHit.cxx:111
 AliFMDCorrDoubleHit.cxx:112
 AliFMDCorrDoubleHit.cxx:113
 AliFMDCorrDoubleHit.cxx:114
 AliFMDCorrDoubleHit.cxx:115
 AliFMDCorrDoubleHit.cxx:116
 AliFMDCorrDoubleHit.cxx:117
 AliFMDCorrDoubleHit.cxx:118
 AliFMDCorrDoubleHit.cxx:119
 AliFMDCorrDoubleHit.cxx:120
 AliFMDCorrDoubleHit.cxx:121
 AliFMDCorrDoubleHit.cxx:122
 AliFMDCorrDoubleHit.cxx:123
 AliFMDCorrDoubleHit.cxx:124
 AliFMDCorrDoubleHit.cxx:125
 AliFMDCorrDoubleHit.cxx:126
 AliFMDCorrDoubleHit.cxx:127
 AliFMDCorrDoubleHit.cxx:128
 AliFMDCorrDoubleHit.cxx:129
 AliFMDCorrDoubleHit.cxx:130
 AliFMDCorrDoubleHit.cxx:131
 AliFMDCorrDoubleHit.cxx:132
 AliFMDCorrDoubleHit.cxx:133
 AliFMDCorrDoubleHit.cxx:134
 AliFMDCorrDoubleHit.cxx:135
 AliFMDCorrDoubleHit.cxx:136
 AliFMDCorrDoubleHit.cxx:137
 AliFMDCorrDoubleHit.cxx:138
 AliFMDCorrDoubleHit.cxx:139
 AliFMDCorrDoubleHit.cxx:140
 AliFMDCorrDoubleHit.cxx:141
 AliFMDCorrDoubleHit.cxx:142
 AliFMDCorrDoubleHit.cxx:143
 AliFMDCorrDoubleHit.cxx:144
 AliFMDCorrDoubleHit.cxx:145
 AliFMDCorrDoubleHit.cxx:146
 AliFMDCorrDoubleHit.cxx:147
 AliFMDCorrDoubleHit.cxx:148
 AliFMDCorrDoubleHit.cxx:149
 AliFMDCorrDoubleHit.cxx:150
 AliFMDCorrDoubleHit.cxx:151
 AliFMDCorrDoubleHit.cxx:152
 AliFMDCorrDoubleHit.cxx:153
 AliFMDCorrDoubleHit.cxx:154
 AliFMDCorrDoubleHit.cxx:155
 AliFMDCorrDoubleHit.cxx:156