ROOT logo
// 
// Calculate the multiplicity in the forward regions event-by-event 
// 
// Inputs: 
//   - AliESDEvent 
//
// Outputs: 
//   - AliAODForwardMult 
// 
// Histograms 
//   
// Corrections used 
//
#include "AliForwardQATask.h"
#include "AliForwardUtil.h"
#include "AliTriggerAnalysis.h"
#include "AliPhysicsSelection.h"
#include "AliLog.h"
#include "AliESDEvent.h"
#include "AliAODHandler.h"
#include "AliMultiplicity.h"
#include "AliInputEventHandler.h"
#include "AliForwardCorrectionManager.h"
#include "AliAnalysisManager.h"
#include "AliAODForwardMult.h"
#include <TH1.h>
#include <TDirectory.h>
#include <TTree.h>
#include <TROOT.h>
#include <TStopwatch.h>

//====================================================================
AliForwardQATask::AliForwardQATask()
  : AliBaseESDTask(),
    fEnableLowFlux(false), 
    fESDFMD(),
    fHistos(),
    fEventInspector(),
    fESDFixer(),
    fEnergyFitter(),
    fSharingFilter(),
    fDensityCalculator()
{
  // 
  // Constructor
  //
  fCloneList = true;
}

//____________________________________________________________________
AliForwardQATask::AliForwardQATask(const char* name)
  : AliBaseESDTask(name, "", &(AliForwardCorrectionManager::Instance())),
    fEnableLowFlux(false), 
    fESDFMD(),
    fHistos(),
    fEventInspector("event"),
    fESDFixer("fixer"),
    fEnergyFitter("energy"),
    fSharingFilter("sharing"), 
    fDensityCalculator("density")
{
  // 
  // Constructor 
  // 
  // Parameters:
  //    name Name of task 
  //
  fEnergyFitter.SetNParticles(1); // Just find the 1st peak 
  fEnergyFitter.SetDoMakeObject(false); 
  fEnergyFitter.SetUseIncreasingBins(true);
  fEnergyFitter.SetDoFits(kTRUE);
  fEnergyFitter.SetLowCut(0.4);
  fEnergyFitter.SetFitRangeBinWidth(4);
  fEnergyFitter.SetMinEntries(1000);
  fCloneList = true;

  // For the QA we always enable fall-back 
  AliForwardCorrectionManager::Instance().SetEnableFallBack(true);
}
//____________________________________________________________________
void
AliForwardQATask::SetDebug(Int_t dbg)
{
  // 
  // Set debug level 
  // 
  // Parameters:
  //    dbg Debug level
  //
  AliBaseESDTask::        SetDebug(dbg);
  GetEnergyFitter()     .SetDebug(dbg);
  GetSharingFilter()    .SetDebug(dbg);
  GetDensityCalculator().SetDebug(dbg);
}

//____________________________________________________________________
TAxis*
AliForwardQATask::DefaultEtaAxis() const
{
  static TAxis* a = new TAxis(240, -6, 6);
  return a;
}
//____________________________________________________________________
TAxis*
AliForwardQATask::DefaultVertexAxis() const
{
  static TAxis* a = new TAxis(10, -10, 10);
  return a;
}

//____________________________________________________________________
Bool_t
AliForwardQATask::Setup()
{
  fEnergyFitter.Init();
  return true;
}

//____________________________________________________________________
Bool_t
AliForwardQATask::Book()
{
  // 
  // Create output objects 
  // 
  //
  UInt_t what = AliForwardCorrectionManager::kAll;
  what ^= AliForwardCorrectionManager::kDoubleHit;
  what ^= AliForwardCorrectionManager::kVertexBias;
  what ^= AliForwardCorrectionManager::kAcceptance;
  what ^= AliForwardCorrectionManager::kMergingEfficiency;
  what ^= AliForwardCorrectionManager::kELossFits;
  fNeededCorrections = what;
  fExtraCorrections  = AliForwardCorrectionManager::kELossFits;
  
  fESDFixer         .CreateOutputObjects(fList);
  fEnergyFitter     .CreateOutputObjects(fList);
  fSharingFilter    .CreateOutputObjects(fList);
  fDensityCalculator.CreateOutputObjects(fList);
  
  return true;
}
//____________________________________________________________________
Bool_t
AliForwardQATask::PreData(const TAxis& /*vertex*/, const TAxis& eta)
{
  // 
  // Initialise the sub objects and stuff.  Called on first event 
  // 
  //
  AliForwardCorrectionManager& fcm = AliForwardCorrectionManager::Instance();
  // We allow fall-back queries so that we may proceed in case we have no 
  // valid corrections 
  if (!fcm.GetELossFit()) { 
    AliWarning("No energy loss fits");
    
    // Fall-back values if we do not have the energy loss fits 
    AliFMDMultCuts& sfLCuts = GetSharingFilter().GetLCuts();
    if (sfLCuts.GetMethod() != AliFMDMultCuts::kFixed) { 
      Double_t cut = 0.15;
      AliWarningF("Using fixed cut @ %f for the lower bound "
		  "of the sharing filter", cut);
      sfLCuts.SetMultCuts(cut);
    }
    AliFMDMultCuts& sfHCuts = GetSharingFilter().GetHCuts();
    if (sfHCuts.GetMethod() != AliFMDMultCuts::kFixed) { 
      Double_t cut = 0.45;
      AliWarningF("Using fixed cut @ %f for the upper bound "
		  "of the sharing filter", cut);
      sfHCuts.SetMultCuts(cut);
    }
    AliFMDMultCuts& dcCuts  = GetDensityCalculator().GetCuts();
    if (dcCuts.GetMethod() != AliFMDMultCuts::kFixed) { 
      Double_t cut = 0.45;
      AliWarningF("Using fixed cut @ %f for the lower bound "
		  "of the density calculator", cut);
      dcCuts.SetMultCuts(cut);
    }
  }
  else 
    fcm.GetELossFit()->CacheBins(GetDensityCalculator().GetMinQuality());

  fHistos.Init(eta);

  // GetEventInspector().SetupForData(vertex);
  GetEnergyFitter()     .SetupForData(eta);
  GetSharingFilter()    .SetupForData(eta);
  GetDensityCalculator().SetupForData(eta);

  return true;
}

//____________________________________________________________________
Bool_t
AliForwardQATask::PreEvent()
{
  // Clear stuff 
  fHistos.Clear();
  fESDFMD.Clear();
  return true;
}
//____________________________________________________________________
Bool_t
AliForwardQATask::Event(AliESDEvent& esd)
{
  // 
  // Process each event 
  // 
  // Parameters:
  //    option Not used
  //  
  DGUARD(fDebug,1,"Process the input event");

  if (fFirstEvent) { 
    // If the first event flag wasn't cleared in the above call to
    // GetESDEvent, we should not do anything, since nothing has been
    // initialised yet, so we opt out here (with a warning) 
    AliWarning("Nothing has been initialized yet, opt'ing out");
    return false;
  }

  Bool_t   lowFlux   = kFALSE;
  UInt_t   triggers  = 0;
  UShort_t ivz       = 0;
  TVector3 ip;
  Double_t cent      = -1;
  UShort_t nClusters = 0;
  UInt_t   found     = fEventInspector.Process(&esd, triggers, lowFlux, 
					       ivz, ip, cent, nClusters);
  
  Bool_t ok = true;
  if (found & AliFMDEventInspector::kNoEvent)    ok = false;
  if (found & AliFMDEventInspector::kNoTriggers) ok = false;
  if (found & AliFMDEventInspector::kNoSPD)      ok = false;
  if (found & AliFMDEventInspector::kNoFMD)      ok = false;
  if (found & AliFMDEventInspector::kNoVertex)   ok = false;
  if (triggers & AliAODForwardMult::kPileUp)     ok = false;
  if (triggers & AliAODForwardMult::kA)          ok = false;
  if (triggers & AliAODForwardMult::kC)          ok = false;
  if (triggers & AliAODForwardMult::kE)          ok = false;
  if (!(triggers & AliAODForwardMult::kOffline)) ok = false;
  if (found & AliFMDEventInspector::kBadVertex)  ok = false;
  if (!ok) { 
    DMSG(fDebug,2,"Event failed selection: %s", 
	 AliFMDEventInspector::CodeString(found));
    return false;
  }
  DMSG(fDebug,2,"Event triggers: %s", 
       AliAODForwardMult::GetTriggerString(triggers));

  // We we do not want to use low flux specific code, we disable it here. 
  if (!fEnableLowFlux) lowFlux = false;

  // Get FMD data 
  AliESDFMD* esdFMD = esd.GetFMDData();

  // Fix up the the ESD 
  GetESDFixer().Fix(*esdFMD, ip.Z());
  
  // Run the energy loss fitter 
  if (!fEnergyFitter.Accumulate(*esdFMD, cent, 
				triggers & AliAODForwardMult::kEmpty)) {
    AliWarning("Energy fitter failed");
    return false;
  }
  
  //  // Apply the sharing filter (or hit merging or clustering if you like)
  if (!fSharingFilter.Filter(*esdFMD, lowFlux, fESDFMD, ip.Z())) { 
    AliWarning("Sharing filter failed!");
    return false;
  }
 
  // Calculate the inclusive charged particle density 
  if (!fDensityCalculator.Calculate(fESDFMD, fHistos, lowFlux, cent, ip)) { 
    // if (!fDensityCalculator.Calculate(*esdFMD, fHistos, ivz, lowFlux)) { 
    AliWarning("Density calculator failed!");
    return false;
  }
  
  return true;
}

//____________________________________________________________________
Bool_t
AliForwardQATask::Finalize()
{
  // 
  // End of job
  // 
  // Parameters:
  //    option Not used 
  //
  if (fDebug) AliInfo("In Forwards terminate");
  TStopwatch swt;
  swt.Start();

  // Get our histograms from the container 
  TH1I* hEventsTr    = 0;
  TH1I* hEventsTrVtx = 0;
  TH1I* hEventsAcc   = 0;
  TH1I* hTriggers    = 0;
  if (!fEventInspector.FetchHistograms(fList, 
				       hEventsTr, 
				       hEventsTrVtx, 
				       hEventsAcc,
				       hTriggers)) { 
    AliErrorF("Didn't get histograms from event selector "
	      "(hEventsTr=%p,hEventsTrVtx=%p,hEventsAcc=%p)", 
	      hEventsTr, hEventsTrVtx,hEventsAcc);
    return false;
  }

  TStopwatch swf;
  swf.Start();
  fEnergyFitter.Fit(fResults);
  swf.Stop();
  AliInfoF("Fitting took %d real-time seconds, and %f CPU seconds", 
	   Int_t(swf.RealTime()), swf.CpuTime());

  fSharingFilter.Terminate(fList,fResults,Int_t(hEventsTr->Integral()));
  fDensityCalculator.Terminate(fList,fResults,Int_t(hEventsTrVtx->Integral()));

  if (fDebug) AliInfoF("Posting post processing results to %s", 
		       fResults->GetName());
  swt.Stop();
  AliInfoF("Finalize took %d real-time seconds, and %f CPU seconds", 
	   Int_t(swt.RealTime()), swt.CpuTime());

  return true;
}

//____________________________________________________________________
void
AliForwardQATask::Print(Option_t* option) const
{
  // 
  // Print information 
  // 
  // Parameters:
  //    option Not used
  //
  AliBaseESDTask::Print(option);
  gROOT->IncreaseDirLevel();
  GetESDFixer()         .Print(option);        
  GetEnergyFitter()     .Print(option);
  GetSharingFilter()    .Print(option);
  GetDensityCalculator().Print(option);
  gROOT->DecreaseDirLevel();
}

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