ROOT logo
/**************************************************************************
* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
*                                                                        *
* Author: The ALICE Off-line Project.                                    *
* Contributors are mentioned in the code where appropriate.              *
*                                                                        *
* Permission to use, copy, modify and distribute this software and its   *
* documentation strictly for non-commercial purposes is hereby granted   *
* without fee, provided that the above copyright notice appears in all   *
* copies and that both the copyright notice and this permission notice   *
* appear in the supporting documentation. The authors make no claims     *
* about the suitability of this software for any purpose. It is          *
* provided "as is" without express or implied warranty.                  *
**************************************************************************/
//
// Task for PID QA
// Using AliHFEpidQA and AliHFEMCpidQA
// 
// Authors
//   Matus Kalisky <matus.kalisky@cern.ch>
//   Markus Heide <mheide@uni-muenster.de>
//   Markus Fasel <M.Fasel@gsi.de>
//
#include <TH1I.h>
#include <TList.h>
#include <TFile.h>

#include "AliAnalysisManager.h"
#include "AliMCEventHandler.h"
#include "AliHFEpidQA.h"
#include "AliHFEtools.h"
#include "AliESDInputHandler.h"

#include "AliHFEtrdPIDqa.h"

#include "AliAnalysisTaskHFEpidQA.h"

ClassImp(AliAnalysisTaskHFEpidQA)

AliAnalysisTaskHFEpidQA::AliAnalysisTaskHFEpidQA():
  AliAnalysisTaskSE("pidQAtask")
  , fPIDqa(NULL)
  , fOutput(NULL)
  , fEvents(NULL)
  , fNNref(NULL)
  , fTRDTotalChargeInSlice0(kFALSE)
  , fIsQAPbPb(kFALSE)
  , fIsQAppMultiBin(kFALSE)
{
  //
  // Default Constructor
  //
}

AliAnalysisTaskHFEpidQA::AliAnalysisTaskHFEpidQA(const Char_t *name):
  AliAnalysisTaskSE(name)
  , fPIDqa(NULL)
  , fOutput(NULL)
  , fEvents(NULL)
  , fNNref(NULL)
  , fTRDTotalChargeInSlice0(kFALSE)
  , fIsQAPbPb(kFALSE)
  , fIsQAppMultiBin(kFALSE)
{
  //
  // Default Constructor
  //
  DefineOutput(1, TList::Class());

}

AliAnalysisTaskHFEpidQA::~AliAnalysisTaskHFEpidQA(){
  //
  // Destructor
  //
  if(fPIDqa) delete fPIDqa;
  if(fOutput) delete fOutput;
}

void AliAnalysisTaskHFEpidQA::UserCreateOutputObjects(){
  //
  // Create the output
  // Initialize PID QA
  //
  fOutput = new TList;
  fOutput->SetOwner();

  // Counter for number of events
  fOutput->Add((fEvents = new TH1I("nEvents", "NumberOfEvents", 1, 1, 2)));

  fPIDqa = new AliHFEpidQA;
  if(fTRDTotalChargeInSlice0) fPIDqa->SetTRDTotalChargeInSlice0();
  if(HasV0pidQA()) fPIDqa->SetV0pidQA();
  if(HasRecalculateTRDpid()) fPIDqa->SetRecalculateTRDpid();
  if(fNNref) fPIDqa->SetNNref(fNNref);
  if(fIsQAPbPb) fPIDqa->SetPbPb();
  else
  {
      if(fIsQAppMultiBin) fPIDqa->SetPPMultiBin();
      else fPIDqa->SetPP();
  }
  fPIDqa->Init();

  TList *tmp = fPIDqa->GetOutput();
  tmp->SetName("PIDqa");
  fOutput->Add(tmp);
  if(HasV0pidQA()){
    tmp = fPIDqa->GetV0pidQA();
    tmp->SetName("V0pidQA");
    fOutput->Add(tmp);
  }
  tmp = 0x0;
  tmp = fPIDqa->GetV0pidMC();
  if(tmp){
    tmp->SetName("V0pidMC");
    fOutput->Add(tmp);
  }

  // Add TRD PID QA object to the output
  fOutput->Add(fPIDqa->GetTRDQA());
}

Bool_t AliAnalysisTaskHFEpidQA::UserNotify(){
  // DEBUG
  //printf("*****\n");
  //printf(" -D Current File Name: %s \n", CurrentFileName());
  return AliAnalysisTask::Notify();
}

void AliAnalysisTaskHFEpidQA::UserExec(Option_t *){
  //
  // Event Loop
  // 
  AliMCEventHandler* mcHandler = (dynamic_cast<AliMCEventHandler*>(AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()));
  AliESDInputHandler *inh = dynamic_cast<AliESDInputHandler *>(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
  AliPIDResponse *workingPID = NULL;
  if(inh && (workingPID = inh->GetPIDResponse()))
    fPIDqa->SetPIDResponse(workingPID);
  else fPIDqa->SetPIDResponse(AliHFEtools::GetDefaultPID(mcHandler ? kTRUE : kFALSE, kFALSE));
  
  // check the MC data
  if(fMCEvent && !mcHandler ) return;
  if(fMCEvent &&  !mcHandler->InitOk() ) return;
  if(fMCEvent &&  !mcHandler->TreeK() ) return;
  if(fMCEvent &&  !mcHandler->TreeTR() ) return;
  if(fMCEvent) fPIDqa->SetMCEvent(fMCEvent);
  
  fPIDqa->SetEvent(fInputEvent);
  fPIDqa->Process();
  fEvents->Fill(1.1);
  PostData(1, fOutput);
}

void AliAnalysisTaskHFEpidQA::Terminate(Option_t *){
  //
  // Do Post Processing
  //
}


 AliAnalysisTaskHFEpidQA.cxx:1
 AliAnalysisTaskHFEpidQA.cxx:2
 AliAnalysisTaskHFEpidQA.cxx:3
 AliAnalysisTaskHFEpidQA.cxx:4
 AliAnalysisTaskHFEpidQA.cxx:5
 AliAnalysisTaskHFEpidQA.cxx:6
 AliAnalysisTaskHFEpidQA.cxx:7
 AliAnalysisTaskHFEpidQA.cxx:8
 AliAnalysisTaskHFEpidQA.cxx:9
 AliAnalysisTaskHFEpidQA.cxx:10
 AliAnalysisTaskHFEpidQA.cxx:11
 AliAnalysisTaskHFEpidQA.cxx:12
 AliAnalysisTaskHFEpidQA.cxx:13
 AliAnalysisTaskHFEpidQA.cxx:14
 AliAnalysisTaskHFEpidQA.cxx:15
 AliAnalysisTaskHFEpidQA.cxx:16
 AliAnalysisTaskHFEpidQA.cxx:17
 AliAnalysisTaskHFEpidQA.cxx:18
 AliAnalysisTaskHFEpidQA.cxx:19
 AliAnalysisTaskHFEpidQA.cxx:20
 AliAnalysisTaskHFEpidQA.cxx:21
 AliAnalysisTaskHFEpidQA.cxx:22
 AliAnalysisTaskHFEpidQA.cxx:23
 AliAnalysisTaskHFEpidQA.cxx:24
 AliAnalysisTaskHFEpidQA.cxx:25
 AliAnalysisTaskHFEpidQA.cxx:26
 AliAnalysisTaskHFEpidQA.cxx:27
 AliAnalysisTaskHFEpidQA.cxx:28
 AliAnalysisTaskHFEpidQA.cxx:29
 AliAnalysisTaskHFEpidQA.cxx:30
 AliAnalysisTaskHFEpidQA.cxx:31
 AliAnalysisTaskHFEpidQA.cxx:32
 AliAnalysisTaskHFEpidQA.cxx:33
 AliAnalysisTaskHFEpidQA.cxx:34
 AliAnalysisTaskHFEpidQA.cxx:35
 AliAnalysisTaskHFEpidQA.cxx:36
 AliAnalysisTaskHFEpidQA.cxx:37
 AliAnalysisTaskHFEpidQA.cxx:38
 AliAnalysisTaskHFEpidQA.cxx:39
 AliAnalysisTaskHFEpidQA.cxx:40
 AliAnalysisTaskHFEpidQA.cxx:41
 AliAnalysisTaskHFEpidQA.cxx:42
 AliAnalysisTaskHFEpidQA.cxx:43
 AliAnalysisTaskHFEpidQA.cxx:44
 AliAnalysisTaskHFEpidQA.cxx:45
 AliAnalysisTaskHFEpidQA.cxx:46
 AliAnalysisTaskHFEpidQA.cxx:47
 AliAnalysisTaskHFEpidQA.cxx:48
 AliAnalysisTaskHFEpidQA.cxx:49
 AliAnalysisTaskHFEpidQA.cxx:50
 AliAnalysisTaskHFEpidQA.cxx:51
 AliAnalysisTaskHFEpidQA.cxx:52
 AliAnalysisTaskHFEpidQA.cxx:53
 AliAnalysisTaskHFEpidQA.cxx:54
 AliAnalysisTaskHFEpidQA.cxx:55
 AliAnalysisTaskHFEpidQA.cxx:56
 AliAnalysisTaskHFEpidQA.cxx:57
 AliAnalysisTaskHFEpidQA.cxx:58
 AliAnalysisTaskHFEpidQA.cxx:59
 AliAnalysisTaskHFEpidQA.cxx:60
 AliAnalysisTaskHFEpidQA.cxx:61
 AliAnalysisTaskHFEpidQA.cxx:62
 AliAnalysisTaskHFEpidQA.cxx:63
 AliAnalysisTaskHFEpidQA.cxx:64
 AliAnalysisTaskHFEpidQA.cxx:65
 AliAnalysisTaskHFEpidQA.cxx:66
 AliAnalysisTaskHFEpidQA.cxx:67
 AliAnalysisTaskHFEpidQA.cxx:68
 AliAnalysisTaskHFEpidQA.cxx:69
 AliAnalysisTaskHFEpidQA.cxx:70
 AliAnalysisTaskHFEpidQA.cxx:71
 AliAnalysisTaskHFEpidQA.cxx:72
 AliAnalysisTaskHFEpidQA.cxx:73
 AliAnalysisTaskHFEpidQA.cxx:74
 AliAnalysisTaskHFEpidQA.cxx:75
 AliAnalysisTaskHFEpidQA.cxx:76
 AliAnalysisTaskHFEpidQA.cxx:77
 AliAnalysisTaskHFEpidQA.cxx:78
 AliAnalysisTaskHFEpidQA.cxx:79
 AliAnalysisTaskHFEpidQA.cxx:80
 AliAnalysisTaskHFEpidQA.cxx:81
 AliAnalysisTaskHFEpidQA.cxx:82
 AliAnalysisTaskHFEpidQA.cxx:83
 AliAnalysisTaskHFEpidQA.cxx:84
 AliAnalysisTaskHFEpidQA.cxx:85
 AliAnalysisTaskHFEpidQA.cxx:86
 AliAnalysisTaskHFEpidQA.cxx:87
 AliAnalysisTaskHFEpidQA.cxx:88
 AliAnalysisTaskHFEpidQA.cxx:89
 AliAnalysisTaskHFEpidQA.cxx:90
 AliAnalysisTaskHFEpidQA.cxx:91
 AliAnalysisTaskHFEpidQA.cxx:92
 AliAnalysisTaskHFEpidQA.cxx:93
 AliAnalysisTaskHFEpidQA.cxx:94
 AliAnalysisTaskHFEpidQA.cxx:95
 AliAnalysisTaskHFEpidQA.cxx:96
 AliAnalysisTaskHFEpidQA.cxx:97
 AliAnalysisTaskHFEpidQA.cxx:98
 AliAnalysisTaskHFEpidQA.cxx:99
 AliAnalysisTaskHFEpidQA.cxx:100
 AliAnalysisTaskHFEpidQA.cxx:101
 AliAnalysisTaskHFEpidQA.cxx:102
 AliAnalysisTaskHFEpidQA.cxx:103
 AliAnalysisTaskHFEpidQA.cxx:104
 AliAnalysisTaskHFEpidQA.cxx:105
 AliAnalysisTaskHFEpidQA.cxx:106
 AliAnalysisTaskHFEpidQA.cxx:107
 AliAnalysisTaskHFEpidQA.cxx:108
 AliAnalysisTaskHFEpidQA.cxx:109
 AliAnalysisTaskHFEpidQA.cxx:110
 AliAnalysisTaskHFEpidQA.cxx:111
 AliAnalysisTaskHFEpidQA.cxx:112
 AliAnalysisTaskHFEpidQA.cxx:113
 AliAnalysisTaskHFEpidQA.cxx:114
 AliAnalysisTaskHFEpidQA.cxx:115
 AliAnalysisTaskHFEpidQA.cxx:116
 AliAnalysisTaskHFEpidQA.cxx:117
 AliAnalysisTaskHFEpidQA.cxx:118
 AliAnalysisTaskHFEpidQA.cxx:119
 AliAnalysisTaskHFEpidQA.cxx:120
 AliAnalysisTaskHFEpidQA.cxx:121
 AliAnalysisTaskHFEpidQA.cxx:122
 AliAnalysisTaskHFEpidQA.cxx:123
 AliAnalysisTaskHFEpidQA.cxx:124
 AliAnalysisTaskHFEpidQA.cxx:125
 AliAnalysisTaskHFEpidQA.cxx:126
 AliAnalysisTaskHFEpidQA.cxx:127
 AliAnalysisTaskHFEpidQA.cxx:128
 AliAnalysisTaskHFEpidQA.cxx:129
 AliAnalysisTaskHFEpidQA.cxx:130
 AliAnalysisTaskHFEpidQA.cxx:131
 AliAnalysisTaskHFEpidQA.cxx:132
 AliAnalysisTaskHFEpidQA.cxx:133
 AliAnalysisTaskHFEpidQA.cxx:134
 AliAnalysisTaskHFEpidQA.cxx:135
 AliAnalysisTaskHFEpidQA.cxx:136
 AliAnalysisTaskHFEpidQA.cxx:137
 AliAnalysisTaskHFEpidQA.cxx:138
 AliAnalysisTaskHFEpidQA.cxx:139
 AliAnalysisTaskHFEpidQA.cxx:140
 AliAnalysisTaskHFEpidQA.cxx:141
 AliAnalysisTaskHFEpidQA.cxx:142
 AliAnalysisTaskHFEpidQA.cxx:143
 AliAnalysisTaskHFEpidQA.cxx:144
 AliAnalysisTaskHFEpidQA.cxx:145
 AliAnalysisTaskHFEpidQA.cxx:146
 AliAnalysisTaskHFEpidQA.cxx:147
 AliAnalysisTaskHFEpidQA.cxx:148
 AliAnalysisTaskHFEpidQA.cxx:149
 AliAnalysisTaskHFEpidQA.cxx:150
 AliAnalysisTaskHFEpidQA.cxx:151
 AliAnalysisTaskHFEpidQA.cxx:152
 AliAnalysisTaskHFEpidQA.cxx:153
 AliAnalysisTaskHFEpidQA.cxx:154
 AliAnalysisTaskHFEpidQA.cxx:155
 AliAnalysisTaskHFEpidQA.cxx:156
 AliAnalysisTaskHFEpidQA.cxx:157
 AliAnalysisTaskHFEpidQA.cxx:158
 AliAnalysisTaskHFEpidQA.cxx:159
 AliAnalysisTaskHFEpidQA.cxx:160