ROOT logo
/**
 * @file   AliForwardCreateResponseMatrices.cxx
 * @author Christian Holm Christensen <cholm@master.hehi.nbi.dk>
 * @date   Thu Feb  7 01:01:24 2013
 * 
 * @brief  
 * 
 * 
 * @ingroup pwglf_forward_multdist
 */

#include <TH1D.h>
#include "AliForwardCreateResponseMatrices.h"
#include "AliForwardMultiplicityDistribution.h"
#include "AliAODForwardMult.h"
#include "AliAODCentralMult.h"
#include "AliAODEvent.h"
#include "AliFMDMCEventInspector.h"
#include "AliAODMCHeader.h"
#include "AliAODMCParticle.h"


ClassImp(AliForwardCreateResponseMatrices)
#if 0
; // This is for Emacs - do not delete
#endif
//_____________________________________________________________________
AliForwardCreateResponseMatrices::AliForwardCreateResponseMatrices() 
  : AliBaseAODTask(),
    fBins(), 
    fIsSelected(false)
{
  //
  // Default Constructor
  //
}
 
//_____________________________________________________________________
AliForwardCreateResponseMatrices::AliForwardCreateResponseMatrices(const char* name) 
  : AliBaseAODTask(name,"AliForwardCreateResponseMatrices"),
    fBins(), 
    fIsSelected(false)
{
  //
  // Constructor
  //
}

//_____________________________________________________________________
Bool_t 
AliForwardCreateResponseMatrices::CheckEvent(const AliAODForwardMult& fwd)
{
  fIsSelected = AliBaseAODTask::CheckEvent(fwd);
  // We always return true, so that we can process MC truth;
  return true;
}

//_____________________________________________________________________
Bool_t AliForwardCreateResponseMatrices::Book()
{
  //
  // Create Output Objects
  //
  TH1D* dndetaSumForward = new TH1D("dndetaSumForward","dndetaSumForward", 
				    200,-4,6);
  TH1D* dndetaSumCentral = new TH1D("dndetaSumCentral","dndetaSumCentral", 
				    200,-4,6);
  TH1D* dndetaSumMC = new TH1D("dndetaSumMC","dndetaSumMC", 200,-4,6);
 
  fSums->Add(dndetaSumForward);
  fSums->Add(dndetaSumCentral);
  fSums->Add(dndetaSumMC);

  TH1D* dndetaEventForward = new TH1D();
  TH1D* dndetaEventCentral = new TH1D();
  TH1D* dndetaEventMC = new TH1D();
  
  fSums->Add(dndetaEventForward);
  fSums->Add(dndetaEventCentral);
  fSums->Add(dndetaEventMC);

  //Loop over all individual eta bins, and define their hisograms 
  TIter next(&fBins);
  Bin * bin = 0;
  while ((bin = static_cast<Bin*>(next()))) { 
    bin->CreateOutputObjectss(fSums, 400);
  }
 
  return true;
  
}


//_____________________________________________________________________
Bool_t AliForwardCreateResponseMatrices::Event(AliAODEvent& aod)
{
  //
  // User Exec
  //
  // Here, we used to get ForwardMC!
  AliAODForwardMult* AODforward = GetForward(aod);
  if (!AODforward) return false;

  // Here, we used to get CentralClusters!
  AliAODCentralMult* AODcentral = GetCentral(aod);
  if (!AODcentral) return false;

  TH2D& forward = AODforward->GetHistogram();
  TH2D& central = AODcentral->GetHistogram();
  
  //check if event is NSD according to either MC truth or analysis (ESD)
  Bool_t isMCNSD  = kFALSE;
  Bool_t isESDNSD = kFALSE;
  if(AODforward->IsTriggerBits(AliAODForwardMult::kMCNSD))   isMCNSD=kTRUE; 
  if(AODforward->IsTriggerBits(AliAODForwardMult::kNSD))     isESDNSD=kTRUE;
  
  //primary dndeta dist
  TH2D*    primHist   = GetPrimary(aod);
  
  TH1D* dndetaSumForward    = (TH1D*)fSums->FindObject("dndetaSumForward");
  TH1D* dndetaSumCentral    = (TH1D*)fSums->FindObject("dndetaSumCentral");
  TH1D* dndetaSumMC         = (TH1D*)fSums->FindObject("dndetaSumMC");
  TH1D* dndetaEventForward  = forward.ProjectionX("dndetaForward",1,
						  forward.GetNbinsY(),"");
  TH1D* dndetaEventCentral  = central.ProjectionX("dndetaCentral",1,
						  central.GetNbinsY(),"");
  TH1D* dndetaEventMC       = primHist->ProjectionX("dndetaMC",1,
						    primHist->GetNbinsY(),"");
   
  // underflow eta bin of forward/central carry information on whether
  // there is acceptance. 1= acceptance, 0= no acceptance
  TH1D* normEventForward = 0;
  TH1D* normEventCentral = 0;
  normEventForward       = forward.ProjectionX("dndetaEventForwardNorm",0,0,"");
  normEventCentral       = central.ProjectionX("dndetaEventCentralNorm",0,0,"");

  dndetaSumForward->Add(dndetaEventForward);
  dndetaSumCentral->Add(dndetaEventCentral);
  dndetaSumMC->Add(dndetaEventMC);
     
  
  Double_t VtxZ = AODforward->GetIpZ();

  // loop over all eta bins, and create response matrices,
  // trigger-vertex bias histograms etc
  TIter next(&fBins);
  Bin * bin = 0;
  while ((bin = static_cast<Bin*>(next()))) { 
    bin->Process(dndetaEventForward, dndetaEventCentral, 
		 normEventForward,   normEventCentral, 
		 dndetaEventMC, VtxZ, fIsSelected,
		 isMCNSD, isESDNSD,  aod);
  }
    
  return true;  
}


//=====================================================================
AliForwardCreateResponseMatrices::Bin::Bin(Double_t etaLow, Double_t etaHigh) 
  : TNamed("", ""), 
    fEtaLow(etaLow),          // low eta limit 
    fEtaHigh(etaHigh),        // high eta limit 
    fHist(),                  // multiplicity histogram 
    fHistMC(),                // multiplicity histogram MC truth primaries
    fAcceptance(),            // histogram showing the 'holes' in acceptance. BinContent of 1 shows a hole, and BinContent of 10 shows data coverage
    fVtxZvsNdataBins(),       // VtxZ vs. number of data acceptance bins (normalised to the eta range)
    fResponseMatrix(),        // Response matrix (MC truth vs. analysed multiplicity)
    fResponseMatrixPlus05(),  // Response matrix with analysed multiplicity scaled up by 5%
    fResponseMatrixPlus075(), // Response matrix  with analysed multiplicity scaled up by 7.5%
    fResponseMatrixPlus10(),  // Response matrix with analysed multiplicity scaled up by 10%
    fResponseMatrixMinus05(), // Response matrix with analysed multiplicity scaled down by 5%
    fResponseMatrixMinus075(),// Response matrix with analysed multiplicity scaled down by 7.55%
    fResponseMatrixMinus10(), // Response matrix with analysed multiplicity scaled down by 10%
    fResponseMatrixMinusSys(),// Response matrix with analysed multiplicity scaled up by event mult uncertainty
    fResponseMatrixPlusSys(), // Response matrix with analysed multiplicity scaled down by event mult uncertainty
    fESDNSD(),                // number of events found as NSD by the analysis vs. multiplicity
    fMCNSD(),                 // number of events found as NSD by the MC truth vs. multiplicity
    fMCESDNSD(),              // number of events found as NSD by both analysis and MC truth vs. multiplicity   
    fTriggerBias()             // histogram for trigger vertex bias correction
{
  //
  // Constructor
  //
  const char* name = AliForwardMultiplicityDistribution::FormBinName(etaLow,etaHigh);

  SetName(name);
  SetTitle(Form("%+4.1f < #eta < %+4.1f", fEtaLow, fEtaHigh));
  
}
//_____________________________________________________________________
AliForwardCreateResponseMatrices::Bin::Bin() 
  : TNamed(), 
    fEtaLow(),          // low eta limit 
    fEtaHigh(),        // high eta limit 
    fHist(),                  // multiplicity histogram 
    fHistMC(),                // multiplicity histogram MC truth primaries
    fAcceptance(),            // histogram showing the 'holes' in acceptance. BinContent of 1 shows a hole, and BinContent of 10 shows data coverage
    fVtxZvsNdataBins(),       // VtxZ vs. number of data acceptance bins (normalised to the eta range)
    fResponseMatrix(),        // Response matrix (MC truth vs. analysed multiplicity)
    fResponseMatrixPlus05(),  // Response matrix with analysed multiplicity scaled up by 5%
    fResponseMatrixPlus075(), // Response matrix  with analysed multiplicity scaled up by 7.5%
    fResponseMatrixPlus10(),  // Response matrix with analysed multiplicity scaled up by 10%
    fResponseMatrixMinus05(), // Response matrix with analysed multiplicity scaled down by 5%
    fResponseMatrixMinus075(),// Response matrix with analysed multiplicity scaled down by 7.55%
    fResponseMatrixMinus10(), // Response matrix with analysed multiplicity scaled down by 10%
    fResponseMatrixMinusSys(),// Response matrix with analysed multiplicity scaled up by event mult uncertainty
    fResponseMatrixPlusSys(), // Response matrix with analysed multiplicity scaled down by event mult uncertainty
    fESDNSD(),                // number of events found as NSD by the analysis vs. multiplicity
    fMCNSD(),                 // number of events found as NSD by the MC truth vs. multiplicity
    fMCESDNSD(),              // number of events found as NSD by both analysis and MC truth vs. multiplicity        
    fTriggerBias()             // histogram for trigger vertex bias correction
{
  //
  // Default Constructor
  //
}
//_____________________________________________________________________
void AliForwardCreateResponseMatrices::Bin::CreateOutputObjectss(TList* cont,  Int_t max)
{
  //
  // Define eta bin output histos
  //
  TList* out = new TList;
  out->SetName(GetName());
  cont->Add(out);
  
  fHist                    = new TH1D("mult", GetTitle(), max, -0.5, max-.5);
  fHistMC                  = new TH1D("multTruth", GetTitle(), max, -0.5, max-.5);
  fVtxZvsNdataBins         = new TH2D("VtxZvsNdataBins", "VtxZ vs dataAcceptance/etaRange;z-vtz;dataAcceptance/etaRange", 20, -10,10, 130,0,1.3);
  fAcceptance              = new TH2D("Acceptance","Acceptance;#eta;z-vtx",200,-4, 6 , 20,-10,10);
  fResponseMatrix          = new TH2D("responseMatrix","Response Matrix;MC_{truth};MC_{measured}", max, -0.5, max-.5, max, -0.5, max-.5);
  fResponseMatrixPlus05    = new TH2D("responseMatrixPlus05","Response Matrix;MC_{truth};MC_{measured}", max, -0.5, max-.5, max, -0.5, max-.5);
  fResponseMatrixPlus075   = new TH2D("responseMatrixPlus075","Response Matrix;MC_{truth};MC_{measured}", max, -0.5, max-.5, max, -0.5, max-.5);
  fResponseMatrixPlus10    = new TH2D("responseMatrixPlus10","Response Matrix;MC_{truth};MC_{measured}", max, -0.5, max-.5, max, -0.5, max-.5);
  fResponseMatrixMinus05   = new TH2D("responseMatrixMinus05","Response Matrix;MC_{truth};MC_{measured}", max, -0.5, max-.5, max, -0.5, max-.5);
  fResponseMatrixMinus075  = new TH2D("responseMatrixMinus075","Response Matrix;MC_{truth};MC_{measured}", max, -0.5, max-.5, max, -0.5, max-.5);
  fResponseMatrixMinus10   = new TH2D("responseMatrixMinus10","Response Matrix;MC_{truth};MC_{measured}", max, -0.5, max-.5, max, -0.5, max-.5);
  fResponseMatrixMinusSys  = new TH2D("responseMatrixMinusSys","Response Matrix;MC_{truth};MC_{measured}", max, -0.5, max-.5, max, -0.5, max-.5);
  fResponseMatrixPlusSys   = new TH2D("responseMatrixPlusSys","Response Matrix;MC_{truth};MC_{measured}", max, -0.5, max-.5, max, -0.5, max-.5);
  fTriggerBias             = new TH1D("triggerBias","triggerBias;MC_{truth};Correction}", max, -0.5, max-.5);
  fMCNSD                   = new TH1D("fMCNSD","fMCNSD", 300,-0.5,299.5);
  fESDNSD                  = new TH1D("fESDNSD","fESDNSD", 300,-0.5,299.5);
  fMCESDNSD                = new TH1D("fMCESDNSD","fMCESDNSD", 300,-0.5,299.5);
  
  out->Add(fMCNSD);
  out->Add(fESDNSD);
  out->Add(fMCESDNSD);
  out->Add(fHist);
  out->Add(fHistMC);
  out->Add(fVtxZvsNdataBins);
  out->Add(fAcceptance);
  out->Add(fResponseMatrix);
  out->Add(fResponseMatrixPlus05);
  out->Add(fResponseMatrixPlus075);
  out->Add(fResponseMatrixPlus10);
  out->Add(fResponseMatrixMinus05);
  out->Add(fResponseMatrixMinus075);
  out->Add(fResponseMatrixMinus10);
  out->Add(fResponseMatrixPlusSys);
  out->Add(fResponseMatrixMinusSys);
  out->Add(fTriggerBias);
  
}
 

//_____________________________________________________________________
void 
AliForwardCreateResponseMatrices::Bin::Process(TH1D* dndetaForward, 
					       TH1D* dndetaCentral,
					       TH1D* normForward,   
					       TH1D* normCentral, 
					       TH1D* mc, 
					       Double_t VtxZ, 
					       Bool_t selectedTrigger, 
					       Bool_t isMCNSD, 
					       Bool_t isESDNSD, 
					       const AliAODEvent& aodevent) 
{
  //
  // Process a single eta bin
  //  

  // Diagnostics on event acceptance
  Int_t    first = dndetaForward->GetXaxis()->FindBin(fEtaLow);
  Int_t    last  = dndetaForward->GetXaxis()->FindBin(fEtaHigh-.0001);
  Double_t acceptanceBins=0;
  for(Int_t n= first;n<=last;n++){
    if(normForward->GetBinContent(n)>0||normCentral->GetBinContent(n)>0){
      acceptanceBins++;
    }
    fAcceptance->SetBinContent(n, fAcceptance->GetYaxis()->FindBin(VtxZ), 1);
    if(normForward->GetBinContent(n)>0||normCentral->GetBinContent(n)>0)
      fAcceptance->SetBinContent(n, fAcceptance->GetYaxis()->FindBin(VtxZ),10);
  }
  fVtxZvsNdataBins->Fill(VtxZ, (Double_t)acceptanceBins/(last-first+1));



  Double_t c        = 0;
  Double_t e2       = 0;
  Double_t cPrimary = 0;
  Double_t e2Primary= 0;
    
  for (Int_t i = first; i <= last; i++){ 
    Double_t cForward  = 0;
    Double_t cCentral  = 0;
    Double_t e2Forward = 0;
    Double_t e2Central = 0;
    Double_t cMC  = 0;
    Double_t e2MC = 0;
    cMC= mc->GetBinContent(i);
    e2MC= mc->GetBinError(i) * mc->GetBinError(i);
    cPrimary+=cMC;
    e2Primary+=e2MC;
    if (normForward->GetBinContent(i) > 0) {
      cForward  = dndetaForward->GetBinContent(i);
      e2Forward = dndetaForward->GetBinError(i) * dndetaForward->GetBinError(i);
    }
    if (normCentral->GetBinContent(i) > 0) { 
      cCentral  = dndetaCentral->GetBinContent(i);
      e2Central = dndetaCentral->GetBinError(i) * dndetaCentral->GetBinError(i);
    }
    Double_t cc  = 0;
    Double_t ee2 = 0;
    if (cCentral > 0 && cForward > 0) { 
      cc  = 0.5 * (cForward  + cCentral);
      ee2 = 0.5 * (e2Forward + e2Central);
    }
    else if (cCentral > 0) { 
      cc  = cCentral;
      ee2 = e2Central;
    }
    else if (cForward > 0) { 
      cc  = cForward;
      ee2 = e2Forward;
    }
    c  += cc;
    e2 += ee2;
  }
  
  // retreive MC particles from event
  TClonesArray* mcArray = (TClonesArray*)aodevent.FindListObject(AliAODMCParticle::StdBranchName());
  if(!mcArray){
    AliWarning("No MC array found in AOD. Try making it again.");
    return;
  }
  AliAODMCHeader* header = 
    dynamic_cast<AliAODMCHeader*>(aodevent.
				  FindListObject(AliAODMCHeader::StdBranchName()));
  if (!header) {
    AliWarning("No header file found.");
    return;
  }
  
  
  Int_t ntracks = mcArray->GetEntriesFast();
  // Track loop: find MC truth multiplicity in selected eta bin
  Double_t mult = 0;
  for (Int_t it = 0; it < ntracks; it++) {
    AliAODMCParticle* particle = (AliAODMCParticle*)mcArray->At(it);
    if (!particle) {
      AliError(Form("Could not receive track %d", it));
      continue;
    }
    if (!particle->IsPhysicalPrimary()) continue;
    if (particle->Charge() == 0) continue;
    if(particle->Eta()>fEtaLow&&particle->Eta()<fEtaHigh-0.0001)
      mult++;
  }
  //fill fMCNSD with multiplicity of MC truth NSD events with MC truth |vtxz|<4
  if(header->GetVtxZ()>-4&&header->GetVtxZ()<4){
    if(isMCNSD){
      fMCNSD->Fill(mult);
    }
  }
  //fill fESDNSD with multiplicity from events with a reconstructed NSD trigger and reconstructed |vtxz|<4
  if(VtxZ>-4&&VtxZ<4){
    if(isESDNSD){
      fESDNSD->Fill(mult);
    }
  }
  // fullfilling both requirements of fMCNSD and fESDNSD
  if(header->GetVtxZ()>-4&&header->GetVtxZ()<4&&VtxZ>-4&&VtxZ<4&&isMCNSD&&isESDNSD){
    fMCESDNSD->Fill(mult);
  }
  


//Systematic errors from here

  Double_t fmd=0;
  Double_t spd=0;
  Double_t overlap=0;
    
  // number of eta bins in fmd, spd and overlap respectively
  for(Int_t i = first;i<=last;i++){
    if(normForward->GetBinContent(i)>0&&normCentral->GetBinContent(i)<1)
      fmd++;
    if(normForward->GetBinContent(i)>0&&normCentral->GetBinContent(i)>0)
      overlap++;
    if(normCentral->GetBinContent(i)>0&&normForward->GetBinContent(i)<1)
      spd++;
  }
  
  Double_t sysErrorSquared = 0;  

  // estimate of systematic uncertainty on the event multiplicity - hardcoded :(. estimates taken from Hans Hjersing Dalsgaard or Casper Nygaard phd theses.
  Double_t fmdSysError= 0.08;
  Double_t spdSysError= 0.04;
  Double_t total = 0;
  total= fmd + spd + overlap; 
  if(total){  
    // Combined systematc event uncertainty, by weighting with the number of eta-bins of fmd-only, spd-only and the overlap.
    sysErrorSquared= (fmd*TMath::Power(fmdSysError,2)+ spd*TMath::Power(spdSysError,2)+
		      0.5*overlap*TMath::Power(fmdSysError,2)+ 0.5*overlap*TMath::Power(spdSysError,2))/total;
  }
  
  
  if(selectedTrigger){
    fHist->Fill(c);
    fHistMC->Fill(cPrimary);
    fResponseMatrix->Fill(cPrimary, c);
    fResponseMatrixPlusSys->Fill(cPrimary,(1+TMath::Sqrt(sysErrorSquared))*c);
    fResponseMatrixMinusSys->Fill(cPrimary,(1-TMath::Sqrt(sysErrorSquared))*c);
    fResponseMatrixPlus05->Fill(cPrimary, 1.05*c);
    fResponseMatrixPlus075->Fill(cPrimary, 1.075*c);
    fResponseMatrixPlus10->Fill(cPrimary, 1.1*c);
    fResponseMatrixMinus05->Fill(cPrimary, 0.95*c);
    fResponseMatrixMinus075->Fill(cPrimary, 0.925*c);
    fResponseMatrixMinus10->Fill(cPrimary, 0.9*c);
     
  }
  
}




//_____________________________________________________________________
//
//
// EOF
 AliForwardCreateResponseMatrices.cxx:1
 AliForwardCreateResponseMatrices.cxx:2
 AliForwardCreateResponseMatrices.cxx:3
 AliForwardCreateResponseMatrices.cxx:4
 AliForwardCreateResponseMatrices.cxx:5
 AliForwardCreateResponseMatrices.cxx:6
 AliForwardCreateResponseMatrices.cxx:7
 AliForwardCreateResponseMatrices.cxx:8
 AliForwardCreateResponseMatrices.cxx:9
 AliForwardCreateResponseMatrices.cxx:10
 AliForwardCreateResponseMatrices.cxx:11
 AliForwardCreateResponseMatrices.cxx:12
 AliForwardCreateResponseMatrices.cxx:13
 AliForwardCreateResponseMatrices.cxx:14
 AliForwardCreateResponseMatrices.cxx:15
 AliForwardCreateResponseMatrices.cxx:16
 AliForwardCreateResponseMatrices.cxx:17
 AliForwardCreateResponseMatrices.cxx:18
 AliForwardCreateResponseMatrices.cxx:19
 AliForwardCreateResponseMatrices.cxx:20
 AliForwardCreateResponseMatrices.cxx:21
 AliForwardCreateResponseMatrices.cxx:22
 AliForwardCreateResponseMatrices.cxx:23
 AliForwardCreateResponseMatrices.cxx:24
 AliForwardCreateResponseMatrices.cxx:25
 AliForwardCreateResponseMatrices.cxx:26
 AliForwardCreateResponseMatrices.cxx:27
 AliForwardCreateResponseMatrices.cxx:28
 AliForwardCreateResponseMatrices.cxx:29
 AliForwardCreateResponseMatrices.cxx:30
 AliForwardCreateResponseMatrices.cxx:31
 AliForwardCreateResponseMatrices.cxx:32
 AliForwardCreateResponseMatrices.cxx:33
 AliForwardCreateResponseMatrices.cxx:34
 AliForwardCreateResponseMatrices.cxx:35
 AliForwardCreateResponseMatrices.cxx:36
 AliForwardCreateResponseMatrices.cxx:37
 AliForwardCreateResponseMatrices.cxx:38
 AliForwardCreateResponseMatrices.cxx:39
 AliForwardCreateResponseMatrices.cxx:40
 AliForwardCreateResponseMatrices.cxx:41
 AliForwardCreateResponseMatrices.cxx:42
 AliForwardCreateResponseMatrices.cxx:43
 AliForwardCreateResponseMatrices.cxx:44
 AliForwardCreateResponseMatrices.cxx:45
 AliForwardCreateResponseMatrices.cxx:46
 AliForwardCreateResponseMatrices.cxx:47
 AliForwardCreateResponseMatrices.cxx:48
 AliForwardCreateResponseMatrices.cxx:49
 AliForwardCreateResponseMatrices.cxx:50
 AliForwardCreateResponseMatrices.cxx:51
 AliForwardCreateResponseMatrices.cxx:52
 AliForwardCreateResponseMatrices.cxx:53
 AliForwardCreateResponseMatrices.cxx:54
 AliForwardCreateResponseMatrices.cxx:55
 AliForwardCreateResponseMatrices.cxx:56
 AliForwardCreateResponseMatrices.cxx:57
 AliForwardCreateResponseMatrices.cxx:58
 AliForwardCreateResponseMatrices.cxx:59
 AliForwardCreateResponseMatrices.cxx:60
 AliForwardCreateResponseMatrices.cxx:61
 AliForwardCreateResponseMatrices.cxx:62
 AliForwardCreateResponseMatrices.cxx:63
 AliForwardCreateResponseMatrices.cxx:64
 AliForwardCreateResponseMatrices.cxx:65
 AliForwardCreateResponseMatrices.cxx:66
 AliForwardCreateResponseMatrices.cxx:67
 AliForwardCreateResponseMatrices.cxx:68
 AliForwardCreateResponseMatrices.cxx:69
 AliForwardCreateResponseMatrices.cxx:70
 AliForwardCreateResponseMatrices.cxx:71
 AliForwardCreateResponseMatrices.cxx:72
 AliForwardCreateResponseMatrices.cxx:73
 AliForwardCreateResponseMatrices.cxx:74
 AliForwardCreateResponseMatrices.cxx:75
 AliForwardCreateResponseMatrices.cxx:76
 AliForwardCreateResponseMatrices.cxx:77
 AliForwardCreateResponseMatrices.cxx:78
 AliForwardCreateResponseMatrices.cxx:79
 AliForwardCreateResponseMatrices.cxx:80
 AliForwardCreateResponseMatrices.cxx:81
 AliForwardCreateResponseMatrices.cxx:82
 AliForwardCreateResponseMatrices.cxx:83
 AliForwardCreateResponseMatrices.cxx:84
 AliForwardCreateResponseMatrices.cxx:85
 AliForwardCreateResponseMatrices.cxx:86
 AliForwardCreateResponseMatrices.cxx:87
 AliForwardCreateResponseMatrices.cxx:88
 AliForwardCreateResponseMatrices.cxx:89
 AliForwardCreateResponseMatrices.cxx:90
 AliForwardCreateResponseMatrices.cxx:91
 AliForwardCreateResponseMatrices.cxx:92
 AliForwardCreateResponseMatrices.cxx:93
 AliForwardCreateResponseMatrices.cxx:94
 AliForwardCreateResponseMatrices.cxx:95
 AliForwardCreateResponseMatrices.cxx:96
 AliForwardCreateResponseMatrices.cxx:97
 AliForwardCreateResponseMatrices.cxx:98
 AliForwardCreateResponseMatrices.cxx:99
 AliForwardCreateResponseMatrices.cxx:100
 AliForwardCreateResponseMatrices.cxx:101
 AliForwardCreateResponseMatrices.cxx:102
 AliForwardCreateResponseMatrices.cxx:103
 AliForwardCreateResponseMatrices.cxx:104
 AliForwardCreateResponseMatrices.cxx:105
 AliForwardCreateResponseMatrices.cxx:106
 AliForwardCreateResponseMatrices.cxx:107
 AliForwardCreateResponseMatrices.cxx:108
 AliForwardCreateResponseMatrices.cxx:109
 AliForwardCreateResponseMatrices.cxx:110
 AliForwardCreateResponseMatrices.cxx:111
 AliForwardCreateResponseMatrices.cxx:112
 AliForwardCreateResponseMatrices.cxx:113
 AliForwardCreateResponseMatrices.cxx:114
 AliForwardCreateResponseMatrices.cxx:115
 AliForwardCreateResponseMatrices.cxx:116
 AliForwardCreateResponseMatrices.cxx:117
 AliForwardCreateResponseMatrices.cxx:118
 AliForwardCreateResponseMatrices.cxx:119
 AliForwardCreateResponseMatrices.cxx:120
 AliForwardCreateResponseMatrices.cxx:121
 AliForwardCreateResponseMatrices.cxx:122
 AliForwardCreateResponseMatrices.cxx:123
 AliForwardCreateResponseMatrices.cxx:124
 AliForwardCreateResponseMatrices.cxx:125
 AliForwardCreateResponseMatrices.cxx:126
 AliForwardCreateResponseMatrices.cxx:127
 AliForwardCreateResponseMatrices.cxx:128
 AliForwardCreateResponseMatrices.cxx:129
 AliForwardCreateResponseMatrices.cxx:130
 AliForwardCreateResponseMatrices.cxx:131
 AliForwardCreateResponseMatrices.cxx:132
 AliForwardCreateResponseMatrices.cxx:133
 AliForwardCreateResponseMatrices.cxx:134
 AliForwardCreateResponseMatrices.cxx:135
 AliForwardCreateResponseMatrices.cxx:136
 AliForwardCreateResponseMatrices.cxx:137
 AliForwardCreateResponseMatrices.cxx:138
 AliForwardCreateResponseMatrices.cxx:139
 AliForwardCreateResponseMatrices.cxx:140
 AliForwardCreateResponseMatrices.cxx:141
 AliForwardCreateResponseMatrices.cxx:142
 AliForwardCreateResponseMatrices.cxx:143
 AliForwardCreateResponseMatrices.cxx:144
 AliForwardCreateResponseMatrices.cxx:145
 AliForwardCreateResponseMatrices.cxx:146
 AliForwardCreateResponseMatrices.cxx:147
 AliForwardCreateResponseMatrices.cxx:148
 AliForwardCreateResponseMatrices.cxx:149
 AliForwardCreateResponseMatrices.cxx:150
 AliForwardCreateResponseMatrices.cxx:151
 AliForwardCreateResponseMatrices.cxx:152
 AliForwardCreateResponseMatrices.cxx:153
 AliForwardCreateResponseMatrices.cxx:154
 AliForwardCreateResponseMatrices.cxx:155
 AliForwardCreateResponseMatrices.cxx:156
 AliForwardCreateResponseMatrices.cxx:157
 AliForwardCreateResponseMatrices.cxx:158
 AliForwardCreateResponseMatrices.cxx:159
 AliForwardCreateResponseMatrices.cxx:160
 AliForwardCreateResponseMatrices.cxx:161
 AliForwardCreateResponseMatrices.cxx:162
 AliForwardCreateResponseMatrices.cxx:163
 AliForwardCreateResponseMatrices.cxx:164
 AliForwardCreateResponseMatrices.cxx:165
 AliForwardCreateResponseMatrices.cxx:166
 AliForwardCreateResponseMatrices.cxx:167
 AliForwardCreateResponseMatrices.cxx:168
 AliForwardCreateResponseMatrices.cxx:169
 AliForwardCreateResponseMatrices.cxx:170
 AliForwardCreateResponseMatrices.cxx:171
 AliForwardCreateResponseMatrices.cxx:172
 AliForwardCreateResponseMatrices.cxx:173
 AliForwardCreateResponseMatrices.cxx:174
 AliForwardCreateResponseMatrices.cxx:175
 AliForwardCreateResponseMatrices.cxx:176
 AliForwardCreateResponseMatrices.cxx:177
 AliForwardCreateResponseMatrices.cxx:178
 AliForwardCreateResponseMatrices.cxx:179
 AliForwardCreateResponseMatrices.cxx:180
 AliForwardCreateResponseMatrices.cxx:181
 AliForwardCreateResponseMatrices.cxx:182
 AliForwardCreateResponseMatrices.cxx:183
 AliForwardCreateResponseMatrices.cxx:184
 AliForwardCreateResponseMatrices.cxx:185
 AliForwardCreateResponseMatrices.cxx:186
 AliForwardCreateResponseMatrices.cxx:187
 AliForwardCreateResponseMatrices.cxx:188
 AliForwardCreateResponseMatrices.cxx:189
 AliForwardCreateResponseMatrices.cxx:190
 AliForwardCreateResponseMatrices.cxx:191
 AliForwardCreateResponseMatrices.cxx:192
 AliForwardCreateResponseMatrices.cxx:193
 AliForwardCreateResponseMatrices.cxx:194
 AliForwardCreateResponseMatrices.cxx:195
 AliForwardCreateResponseMatrices.cxx:196
 AliForwardCreateResponseMatrices.cxx:197
 AliForwardCreateResponseMatrices.cxx:198
 AliForwardCreateResponseMatrices.cxx:199
 AliForwardCreateResponseMatrices.cxx:200
 AliForwardCreateResponseMatrices.cxx:201
 AliForwardCreateResponseMatrices.cxx:202
 AliForwardCreateResponseMatrices.cxx:203
 AliForwardCreateResponseMatrices.cxx:204
 AliForwardCreateResponseMatrices.cxx:205
 AliForwardCreateResponseMatrices.cxx:206
 AliForwardCreateResponseMatrices.cxx:207
 AliForwardCreateResponseMatrices.cxx:208
 AliForwardCreateResponseMatrices.cxx:209
 AliForwardCreateResponseMatrices.cxx:210
 AliForwardCreateResponseMatrices.cxx:211
 AliForwardCreateResponseMatrices.cxx:212
 AliForwardCreateResponseMatrices.cxx:213
 AliForwardCreateResponseMatrices.cxx:214
 AliForwardCreateResponseMatrices.cxx:215
 AliForwardCreateResponseMatrices.cxx:216
 AliForwardCreateResponseMatrices.cxx:217
 AliForwardCreateResponseMatrices.cxx:218
 AliForwardCreateResponseMatrices.cxx:219
 AliForwardCreateResponseMatrices.cxx:220
 AliForwardCreateResponseMatrices.cxx:221
 AliForwardCreateResponseMatrices.cxx:222
 AliForwardCreateResponseMatrices.cxx:223
 AliForwardCreateResponseMatrices.cxx:224
 AliForwardCreateResponseMatrices.cxx:225
 AliForwardCreateResponseMatrices.cxx:226
 AliForwardCreateResponseMatrices.cxx:227
 AliForwardCreateResponseMatrices.cxx:228
 AliForwardCreateResponseMatrices.cxx:229
 AliForwardCreateResponseMatrices.cxx:230
 AliForwardCreateResponseMatrices.cxx:231
 AliForwardCreateResponseMatrices.cxx:232
 AliForwardCreateResponseMatrices.cxx:233
 AliForwardCreateResponseMatrices.cxx:234
 AliForwardCreateResponseMatrices.cxx:235
 AliForwardCreateResponseMatrices.cxx:236
 AliForwardCreateResponseMatrices.cxx:237
 AliForwardCreateResponseMatrices.cxx:238
 AliForwardCreateResponseMatrices.cxx:239
 AliForwardCreateResponseMatrices.cxx:240
 AliForwardCreateResponseMatrices.cxx:241
 AliForwardCreateResponseMatrices.cxx:242
 AliForwardCreateResponseMatrices.cxx:243
 AliForwardCreateResponseMatrices.cxx:244
 AliForwardCreateResponseMatrices.cxx:245
 AliForwardCreateResponseMatrices.cxx:246
 AliForwardCreateResponseMatrices.cxx:247
 AliForwardCreateResponseMatrices.cxx:248
 AliForwardCreateResponseMatrices.cxx:249
 AliForwardCreateResponseMatrices.cxx:250
 AliForwardCreateResponseMatrices.cxx:251
 AliForwardCreateResponseMatrices.cxx:252
 AliForwardCreateResponseMatrices.cxx:253
 AliForwardCreateResponseMatrices.cxx:254
 AliForwardCreateResponseMatrices.cxx:255
 AliForwardCreateResponseMatrices.cxx:256
 AliForwardCreateResponseMatrices.cxx:257
 AliForwardCreateResponseMatrices.cxx:258
 AliForwardCreateResponseMatrices.cxx:259
 AliForwardCreateResponseMatrices.cxx:260
 AliForwardCreateResponseMatrices.cxx:261
 AliForwardCreateResponseMatrices.cxx:262
 AliForwardCreateResponseMatrices.cxx:263
 AliForwardCreateResponseMatrices.cxx:264
 AliForwardCreateResponseMatrices.cxx:265
 AliForwardCreateResponseMatrices.cxx:266
 AliForwardCreateResponseMatrices.cxx:267
 AliForwardCreateResponseMatrices.cxx:268
 AliForwardCreateResponseMatrices.cxx:269
 AliForwardCreateResponseMatrices.cxx:270
 AliForwardCreateResponseMatrices.cxx:271
 AliForwardCreateResponseMatrices.cxx:272
 AliForwardCreateResponseMatrices.cxx:273
 AliForwardCreateResponseMatrices.cxx:274
 AliForwardCreateResponseMatrices.cxx:275
 AliForwardCreateResponseMatrices.cxx:276
 AliForwardCreateResponseMatrices.cxx:277
 AliForwardCreateResponseMatrices.cxx:278
 AliForwardCreateResponseMatrices.cxx:279
 AliForwardCreateResponseMatrices.cxx:280
 AliForwardCreateResponseMatrices.cxx:281
 AliForwardCreateResponseMatrices.cxx:282
 AliForwardCreateResponseMatrices.cxx:283
 AliForwardCreateResponseMatrices.cxx:284
 AliForwardCreateResponseMatrices.cxx:285
 AliForwardCreateResponseMatrices.cxx:286
 AliForwardCreateResponseMatrices.cxx:287
 AliForwardCreateResponseMatrices.cxx:288
 AliForwardCreateResponseMatrices.cxx:289
 AliForwardCreateResponseMatrices.cxx:290
 AliForwardCreateResponseMatrices.cxx:291
 AliForwardCreateResponseMatrices.cxx:292
 AliForwardCreateResponseMatrices.cxx:293
 AliForwardCreateResponseMatrices.cxx:294
 AliForwardCreateResponseMatrices.cxx:295
 AliForwardCreateResponseMatrices.cxx:296
 AliForwardCreateResponseMatrices.cxx:297
 AliForwardCreateResponseMatrices.cxx:298
 AliForwardCreateResponseMatrices.cxx:299
 AliForwardCreateResponseMatrices.cxx:300
 AliForwardCreateResponseMatrices.cxx:301
 AliForwardCreateResponseMatrices.cxx:302
 AliForwardCreateResponseMatrices.cxx:303
 AliForwardCreateResponseMatrices.cxx:304
 AliForwardCreateResponseMatrices.cxx:305
 AliForwardCreateResponseMatrices.cxx:306
 AliForwardCreateResponseMatrices.cxx:307
 AliForwardCreateResponseMatrices.cxx:308
 AliForwardCreateResponseMatrices.cxx:309
 AliForwardCreateResponseMatrices.cxx:310
 AliForwardCreateResponseMatrices.cxx:311
 AliForwardCreateResponseMatrices.cxx:312
 AliForwardCreateResponseMatrices.cxx:313
 AliForwardCreateResponseMatrices.cxx:314
 AliForwardCreateResponseMatrices.cxx:315
 AliForwardCreateResponseMatrices.cxx:316
 AliForwardCreateResponseMatrices.cxx:317
 AliForwardCreateResponseMatrices.cxx:318
 AliForwardCreateResponseMatrices.cxx:319
 AliForwardCreateResponseMatrices.cxx:320
 AliForwardCreateResponseMatrices.cxx:321
 AliForwardCreateResponseMatrices.cxx:322
 AliForwardCreateResponseMatrices.cxx:323
 AliForwardCreateResponseMatrices.cxx:324
 AliForwardCreateResponseMatrices.cxx:325
 AliForwardCreateResponseMatrices.cxx:326
 AliForwardCreateResponseMatrices.cxx:327
 AliForwardCreateResponseMatrices.cxx:328
 AliForwardCreateResponseMatrices.cxx:329
 AliForwardCreateResponseMatrices.cxx:330
 AliForwardCreateResponseMatrices.cxx:331
 AliForwardCreateResponseMatrices.cxx:332
 AliForwardCreateResponseMatrices.cxx:333
 AliForwardCreateResponseMatrices.cxx:334
 AliForwardCreateResponseMatrices.cxx:335
 AliForwardCreateResponseMatrices.cxx:336
 AliForwardCreateResponseMatrices.cxx:337
 AliForwardCreateResponseMatrices.cxx:338
 AliForwardCreateResponseMatrices.cxx:339
 AliForwardCreateResponseMatrices.cxx:340
 AliForwardCreateResponseMatrices.cxx:341
 AliForwardCreateResponseMatrices.cxx:342
 AliForwardCreateResponseMatrices.cxx:343
 AliForwardCreateResponseMatrices.cxx:344
 AliForwardCreateResponseMatrices.cxx:345
 AliForwardCreateResponseMatrices.cxx:346
 AliForwardCreateResponseMatrices.cxx:347
 AliForwardCreateResponseMatrices.cxx:348
 AliForwardCreateResponseMatrices.cxx:349
 AliForwardCreateResponseMatrices.cxx:350
 AliForwardCreateResponseMatrices.cxx:351
 AliForwardCreateResponseMatrices.cxx:352
 AliForwardCreateResponseMatrices.cxx:353
 AliForwardCreateResponseMatrices.cxx:354
 AliForwardCreateResponseMatrices.cxx:355
 AliForwardCreateResponseMatrices.cxx:356
 AliForwardCreateResponseMatrices.cxx:357
 AliForwardCreateResponseMatrices.cxx:358
 AliForwardCreateResponseMatrices.cxx:359
 AliForwardCreateResponseMatrices.cxx:360
 AliForwardCreateResponseMatrices.cxx:361
 AliForwardCreateResponseMatrices.cxx:362
 AliForwardCreateResponseMatrices.cxx:363
 AliForwardCreateResponseMatrices.cxx:364
 AliForwardCreateResponseMatrices.cxx:365
 AliForwardCreateResponseMatrices.cxx:366
 AliForwardCreateResponseMatrices.cxx:367
 AliForwardCreateResponseMatrices.cxx:368
 AliForwardCreateResponseMatrices.cxx:369
 AliForwardCreateResponseMatrices.cxx:370
 AliForwardCreateResponseMatrices.cxx:371
 AliForwardCreateResponseMatrices.cxx:372
 AliForwardCreateResponseMatrices.cxx:373
 AliForwardCreateResponseMatrices.cxx:374
 AliForwardCreateResponseMatrices.cxx:375
 AliForwardCreateResponseMatrices.cxx:376
 AliForwardCreateResponseMatrices.cxx:377
 AliForwardCreateResponseMatrices.cxx:378
 AliForwardCreateResponseMatrices.cxx:379
 AliForwardCreateResponseMatrices.cxx:380
 AliForwardCreateResponseMatrices.cxx:381
 AliForwardCreateResponseMatrices.cxx:382
 AliForwardCreateResponseMatrices.cxx:383
 AliForwardCreateResponseMatrices.cxx:384
 AliForwardCreateResponseMatrices.cxx:385
 AliForwardCreateResponseMatrices.cxx:386
 AliForwardCreateResponseMatrices.cxx:387
 AliForwardCreateResponseMatrices.cxx:388
 AliForwardCreateResponseMatrices.cxx:389
 AliForwardCreateResponseMatrices.cxx:390
 AliForwardCreateResponseMatrices.cxx:391
 AliForwardCreateResponseMatrices.cxx:392
 AliForwardCreateResponseMatrices.cxx:393
 AliForwardCreateResponseMatrices.cxx:394
 AliForwardCreateResponseMatrices.cxx:395
 AliForwardCreateResponseMatrices.cxx:396
 AliForwardCreateResponseMatrices.cxx:397
 AliForwardCreateResponseMatrices.cxx:398
 AliForwardCreateResponseMatrices.cxx:399
 AliForwardCreateResponseMatrices.cxx:400
 AliForwardCreateResponseMatrices.cxx:401
 AliForwardCreateResponseMatrices.cxx:402
 AliForwardCreateResponseMatrices.cxx:403
 AliForwardCreateResponseMatrices.cxx:404
 AliForwardCreateResponseMatrices.cxx:405
 AliForwardCreateResponseMatrices.cxx:406
 AliForwardCreateResponseMatrices.cxx:407
 AliForwardCreateResponseMatrices.cxx:408
 AliForwardCreateResponseMatrices.cxx:409
 AliForwardCreateResponseMatrices.cxx:410
 AliForwardCreateResponseMatrices.cxx:411
 AliForwardCreateResponseMatrices.cxx:412
 AliForwardCreateResponseMatrices.cxx:413
 AliForwardCreateResponseMatrices.cxx:414
 AliForwardCreateResponseMatrices.cxx:415
 AliForwardCreateResponseMatrices.cxx:416
 AliForwardCreateResponseMatrices.cxx:417
 AliForwardCreateResponseMatrices.cxx:418
 AliForwardCreateResponseMatrices.cxx:419
 AliForwardCreateResponseMatrices.cxx:420
 AliForwardCreateResponseMatrices.cxx:421
 AliForwardCreateResponseMatrices.cxx:422
 AliForwardCreateResponseMatrices.cxx:423
 AliForwardCreateResponseMatrices.cxx:424
 AliForwardCreateResponseMatrices.cxx:425
 AliForwardCreateResponseMatrices.cxx:426
 AliForwardCreateResponseMatrices.cxx:427
 AliForwardCreateResponseMatrices.cxx:428
 AliForwardCreateResponseMatrices.cxx:429
 AliForwardCreateResponseMatrices.cxx:430
 AliForwardCreateResponseMatrices.cxx:431
 AliForwardCreateResponseMatrices.cxx:432
 AliForwardCreateResponseMatrices.cxx:433
 AliForwardCreateResponseMatrices.cxx:434
 AliForwardCreateResponseMatrices.cxx:435
 AliForwardCreateResponseMatrices.cxx:436
 AliForwardCreateResponseMatrices.cxx:437
 AliForwardCreateResponseMatrices.cxx:438
 AliForwardCreateResponseMatrices.cxx:439
 AliForwardCreateResponseMatrices.cxx:440
 AliForwardCreateResponseMatrices.cxx:441
 AliForwardCreateResponseMatrices.cxx:442
 AliForwardCreateResponseMatrices.cxx:443