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.                  *
**************************************************************************/
//
// Class AliHFEpidQAmanager
// Does steering of the PID QA. The PID QA manager is initialized according
// to the configuration used for PID. It contains PID objects inheriting 
// from AliHFEdetPIDqa, which are
//     AliHFEtpcPIDqa
//     AliHFEtrdPIDqaV1
//     AliHFEtofPIDqa
// PID QA objects are filled for every detector before PID decision and 
// after PID decision for tracks which are selected by the given detector
// as electron candidates.
//
// Author
//   Markus Fasel <M.Fasel@gsi.de>
//
#include <TList.h>

#include "AliAODpidUtil.h"
#include "AliESDpid.h"
#include "AliVParticle.h"

#include "AliHFEtpcPIDqa.h"
#include "AliHFEtrdPIDqaV1.h"
#include "AliHFEtofPIDqa.h"
#include "AliHFEitsPIDqa.h"
#include "AliHFEemcalPIDqa.h"  //s.s
#include "AliHFEbayesPIDqa.h"
#include "AliHFEpidQAmanager.h"

ClassImp(AliHFEpidQAmanager)

//____________________________________________________________
AliHFEpidQAmanager::AliHFEpidQAmanager():
  TObject()
{
  //
  // Dummy constructor
  //
  memset(fDetPIDqa, 0, sizeof(AliHFEdetPIDqa *) * AliHFEpid::kNdetectorPID);
  memset(fDetPID, 0, sizeof(AliHFEdetPIDqa *) * AliHFEpid::kNdetectorPID);
  SetOwner(); 
}

//____________________________________________________________
AliHFEpidQAmanager::AliHFEpidQAmanager(const AliHFEpidQAmanager &ref):
  TObject(ref)
{
  //
  // Copy constructor
  //
  ref.Copy(*this);
  SetOwner();
}

//____________________________________________________________
AliHFEpidQAmanager &AliHFEpidQAmanager::operator=(const AliHFEpidQAmanager &ref){
  //
  // Assignment operator
  //
  if(this != &ref) ref.Copy(*this);
  SetOwner();
  return *this;
}

//____________________________________________________________
void AliHFEpidQAmanager::Copy(TObject &o) const{
  //
  // Make copy
  //
  TObject::Copy(o);
  AliHFEpidQAmanager &target = dynamic_cast<AliHFEpidQAmanager &>(o);

  for(Int_t idet = 0; idet < AliHFEpid::kNdetectorPID; idet++){
    target.fDetPID[idet] = fDetPID[idet]; 
    if(target.fDetPIDqa[idet]) delete target.fDetPIDqa[idet];
    if(fDetPIDqa[idet]) target.CreateDetPIDqa(static_cast<AliHFEpid::EDETtype_t>(idet));
  }
}

//____________________________________________________________
AliHFEpidQAmanager::~AliHFEpidQAmanager(){
  //
  // Destructor
  //
  if(IsOwner())
    for(Int_t idet = 0; idet < AliHFEpid::kNdetectorPID; idet++){
      if(fDetPIDqa[idet]) delete fDetPIDqa[idet];
    }
}

//____________________________________________________________
void AliHFEpidQAmanager::Initialize(AliHFEpid *pid){
  //
  // Initialize PID QA manager according to the detector
  // configuration used in the PID
  //
  for(Int_t idet = 0; idet < AliHFEpid::kNdetectorPID; idet++){
    // Initialize Array for detector PID for all detectors
    fDetPID[idet] = pid->GetDetPID(static_cast<AliHFEpid::EDETtype_t>(idet));
    if(pid->HasDetector(static_cast<AliHFEpid::EDETtype_t>(idet))){
      CreateDetPIDqa(static_cast<AliHFEpid::EDETtype_t>(idet));
      if(fDetPIDqa[idet]){
        fDetPIDqa[idet]->SetPIDqaManager(this);
        fDetPIDqa[idet]->Initialize();
      }
    }
  }
}

//____________________________________________________________
void AliHFEpidQAmanager::CreateDetPIDqa(AliHFEpid::EDETtype_t idet){
  //
  // Create new PID QA object
  //
  switch(idet){
    case AliHFEpid::kTPCpid: 
          fDetPIDqa[idet] = new AliHFEtpcPIDqa("TPCQA"); 
          break;
    case AliHFEpid::kTRDpid: 
          fDetPIDqa[idet] = new AliHFEtrdPIDqaV1("TRDQA"); 
          break;
    case AliHFEpid::kTOFpid: 
          fDetPIDqa[idet] = new AliHFEtofPIDqa("TOFQA"); 
	  break;
  case AliHFEpid::kITSpid:
          fDetPIDqa[idet] = new AliHFEitsPIDqa("ITSQA");
          break;
    case AliHFEpid::kEMCALpid: //s.s (name) 
          fDetPIDqa[idet] = new AliHFEemcalPIDqa("EMCALQA"); // s.s 
	  break;  //s.s
    case AliHFEpid::kBAYESpid:
          fDetPIDqa[idet] = new AliHFEbayesPIDqa("BAYESQA");
          break;

    default:
          break;
  };
}

//____________________________________________________________
void AliHFEpidQAmanager::ProcessTrack(const AliHFEpidObject *track, AliHFEpid::EDETtype_t det, AliHFEdetPIDqa::EStep_t step){
  //
  // Process single Track
  //
  if(!fDetPIDqa[det]){
    AliDebug(1, Form("QA for detector %d not available", det));
    return;
  }
  AliDebug(1, Form("Doing QA for detector %d\n", det));
  fDetPIDqa[det]->ProcessTrack(track, step);
}

//____________________________________________________________
TList *AliHFEpidQAmanager::MakeList(const Char_t *name){
  //
  // Make List of PID QA objects
  //
  TList *list = new TList;
  list->SetName(name);
  list->SetOwner();
  for(Int_t idet = 0; idet < AliHFEpid::kNdetectorPID; idet++){
    if(fDetPIDqa[idet]) list->Add(fDetPIDqa[idet]);
  }
  ReleaseOwnerShip();
  return list;
}

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