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.                  *
 **************************************************************************/

/* $Id: AliPIDResponseInputHandler 46193 2010-12-21 09:00:14Z wiechula $ */

//-----------------------------------------------------------------
//        Handler to set up the PID response object and
//         initialise it correctly for each event
//
//      Origin:
//        Jens Wiechula (jens.wiechula@cern.ch)
//        Martin Vala (martin.vala@cern.ch)

//-----------------------------------------------------------------


#include <TFile.h>
#include <TPRegexp.h>

#include <AliLog.h>
#include <AliVEvent.h>
#include "AliAnalysisManager.h"
#include "AliMultiInputEventHandler.h"
#include "AliPIDResponse.h"

#include "AliPIDResponseInputHandler.h"


ClassImp(AliPIDResponseInputHandler)

//_____________________________________________________________________________
AliPIDResponseInputHandler::AliPIDResponseInputHandler(const char *name) :
  AliInputEventHandler(name, name),
  fIsMC(kFALSE),
  fPIDResponse(0x0),
  fRun(0),
  fOldRun(0),
  fRecoPass(0),
  fMCurrentMutliIH(0)
{
//
// Default constructor.
//
   AliDebug(AliLog::kDebug + 10, "<-");
   AliDebug(AliLog::kDebug + 10, "->");
}

//_____________________________________________________________________________
AliPIDResponseInputHandler::~AliPIDResponseInputHandler()
{
//
// Destructor
//
   AliDebug(AliLog::kDebug + 10, "<-");
// 	delete fArrPidResponseMaster;
   AliDebug(AliLog::kDebug + 10, "->");
}

//_____________________________________________________________________________
Bool_t AliPIDResponseInputHandler::Init(Option_t *opt)
{
//
// Init() is called for all mix input handlers.
//
   AliDebug(AliLog::kDebug + 5, Form("<- opt=%s", opt));

   AliDebug(AliLog::kDebug + 5, Form("->"));
   return kTRUE;
}
//_____________________________________________________________________________
Bool_t AliPIDResponseInputHandler::Init(TTree *tree, Option_t *opt)
{
//
// Init(const char*path) is called for all mix input handlers.
// Create event pool if needed
//
   AliDebug(AliLog::kDebug + 5, Form("<- %p %s opt=%s", (void *) tree, tree->GetName(), opt));

   if (fParentHandler) {
      TString tmp = "";
      AliInputEventHandler *ih = 0;
      fMCurrentMutliIH = dynamic_cast<AliMultiInputEventHandler*>(fParentHandler);
      if (fMCurrentMutliIH) {
         ih = fMCurrentMutliIH->GetFirstInputEventHandler();
         if (ih) {
            //pid response object
            ih->CreatePIDResponse(fIsMC);
            fPIDResponse = ih->GetPIDResponse();
            if (!fPIDResponse) AliFatal("PIDResponse object was not created");
         }
      }
   }

   AliDebug(AliLog::kDebug + 5, Form("->"));
   return kTRUE;
}
//_____________________________________________________________________________
Bool_t AliPIDResponseInputHandler::Notify()
{
//
// Notify() is called for all mix input handlers
//
   AliDebug(AliLog::kDebug + 5, Form("<-"));
   AliDebug(AliLog::kDebug + 5, Form("->"));
   return kTRUE;
}

//_____________________________________________________________________________
Bool_t AliPIDResponseInputHandler::Notify(const char *path)
{
//
// Notify(const char*path) is called for all mix input handlers
//
   AliDebug(AliLog::kDebug + 5, Form("<- %s", path));
   AliDebug(AliLog::kDebug + 5, "->");
   return kTRUE;
}
//_____________________________________________________________________________
Bool_t AliPIDResponseInputHandler::BeginEvent(Long64_t entry)
{
//
// BeginEvent(Long64_t entry) is called for all mix input handlers
//
   AliDebug(AliLog::kDebug + 5, Form("<- %lld", entry));

   if (fParentHandler) {
      TString tmp = "";
      AliInputEventHandler *ih = 0;
      fMCurrentMutliIH = dynamic_cast<AliMultiInputEventHandler*>(fParentHandler);
      if (fMCurrentMutliIH) {
         ih = fMCurrentMutliIH->GetFirstInputEventHandler();
         if (ih) {
            //pid response object
            ih->CreatePIDResponse(fIsMC);
            fPIDResponse = ih->GetPIDResponse();
            if (!fPIDResponse) AliFatal("PIDResponse object was not created");

            AliVEvent *event = ih->GetEvent();
            if (!event) return kFALSE;
            fRun = event->GetRunNumber();

            if (fRun != fOldRun) {
              SetRecoInfo();
              fOldRun = fRun;
            }
           fPIDResponse->SetOADBPath(AliAnalysisManager::GetOADBPath());
           fPIDResponse->InitialiseEvent(event,fRecoPass);
         }
      }
   }
   AliDebug(AliLog::kDebug + 5, "->");
   return kTRUE;
}

//_____________________________________________________________________________
Bool_t AliPIDResponseInputHandler::GetEntry()
{
   AliDebug(AliLog::kDebug + 5, "<-");
   AliDebug(AliLog::kDebug + 5, "->");
   return kTRUE;
}

//_____________________________________________________________________________
Bool_t AliPIDResponseInputHandler::FinishEvent()
{
   //
   // FinishEvent() is called for all mix input handlers
   //
   AliDebug(AliLog::kDebug + 5, Form("<-"));
   AliDebug(AliLog::kDebug + 5, Form("->"));
   return kTRUE;
}

//_____________________________________________________________________________
void AliPIDResponseInputHandler::SetRecoInfo()
{
  //
  // Set reconstruction information
  //
  
  //reset information
  fRecoPass=0;
  
  //Get the current file to check the reconstruction pass (UGLY, but not stored in ESD... )
//   AliAnalysisManager *mgr=AliAnalysisManager::GetAnalysisManager();
  AliVEventHandler *inputHandler=fMCurrentMutliIH->GetFirstInputEventHandler();
  if (!inputHandler) return;
  
  TTree *tree= (TTree*)inputHandler->GetTree();
  TFile *file= (TFile*)tree->GetCurrentFile();
  
  if (!file) {
    AliError("Current file not found, cannot set reconstruction information");
    return;
  }
  
  //find pass from file name (UGLY, but not stored in ESD... )
  TString fileName(file->GetName());
  if (fileName.Contains("/pass1") || fileName.Contains(".pass1")) {
    fRecoPass=1;
  } else if (fileName.Contains("/pass2") || fileName.Contains(".pass2")) {
    fRecoPass=2;
  } else if (fileName.Contains("/pass3") || fileName.Contains(".pass3")) {
    fRecoPass=3;
  }

  fPIDResponse->SetCurrentFile(fileName.Data());
}
 AliPIDResponseInputHandler.cxx:1
 AliPIDResponseInputHandler.cxx:2
 AliPIDResponseInputHandler.cxx:3
 AliPIDResponseInputHandler.cxx:4
 AliPIDResponseInputHandler.cxx:5
 AliPIDResponseInputHandler.cxx:6
 AliPIDResponseInputHandler.cxx:7
 AliPIDResponseInputHandler.cxx:8
 AliPIDResponseInputHandler.cxx:9
 AliPIDResponseInputHandler.cxx:10
 AliPIDResponseInputHandler.cxx:11
 AliPIDResponseInputHandler.cxx:12
 AliPIDResponseInputHandler.cxx:13
 AliPIDResponseInputHandler.cxx:14
 AliPIDResponseInputHandler.cxx:15
 AliPIDResponseInputHandler.cxx:16
 AliPIDResponseInputHandler.cxx:17
 AliPIDResponseInputHandler.cxx:18
 AliPIDResponseInputHandler.cxx:19
 AliPIDResponseInputHandler.cxx:20
 AliPIDResponseInputHandler.cxx:21
 AliPIDResponseInputHandler.cxx:22
 AliPIDResponseInputHandler.cxx:23
 AliPIDResponseInputHandler.cxx:24
 AliPIDResponseInputHandler.cxx:25
 AliPIDResponseInputHandler.cxx:26
 AliPIDResponseInputHandler.cxx:27
 AliPIDResponseInputHandler.cxx:28
 AliPIDResponseInputHandler.cxx:29
 AliPIDResponseInputHandler.cxx:30
 AliPIDResponseInputHandler.cxx:31
 AliPIDResponseInputHandler.cxx:32
 AliPIDResponseInputHandler.cxx:33
 AliPIDResponseInputHandler.cxx:34
 AliPIDResponseInputHandler.cxx:35
 AliPIDResponseInputHandler.cxx:36
 AliPIDResponseInputHandler.cxx:37
 AliPIDResponseInputHandler.cxx:38
 AliPIDResponseInputHandler.cxx:39
 AliPIDResponseInputHandler.cxx:40
 AliPIDResponseInputHandler.cxx:41
 AliPIDResponseInputHandler.cxx:42
 AliPIDResponseInputHandler.cxx:43
 AliPIDResponseInputHandler.cxx:44
 AliPIDResponseInputHandler.cxx:45
 AliPIDResponseInputHandler.cxx:46
 AliPIDResponseInputHandler.cxx:47
 AliPIDResponseInputHandler.cxx:48
 AliPIDResponseInputHandler.cxx:49
 AliPIDResponseInputHandler.cxx:50
 AliPIDResponseInputHandler.cxx:51
 AliPIDResponseInputHandler.cxx:52
 AliPIDResponseInputHandler.cxx:53
 AliPIDResponseInputHandler.cxx:54
 AliPIDResponseInputHandler.cxx:55
 AliPIDResponseInputHandler.cxx:56
 AliPIDResponseInputHandler.cxx:57
 AliPIDResponseInputHandler.cxx:58
 AliPIDResponseInputHandler.cxx:59
 AliPIDResponseInputHandler.cxx:60
 AliPIDResponseInputHandler.cxx:61
 AliPIDResponseInputHandler.cxx:62
 AliPIDResponseInputHandler.cxx:63
 AliPIDResponseInputHandler.cxx:64
 AliPIDResponseInputHandler.cxx:65
 AliPIDResponseInputHandler.cxx:66
 AliPIDResponseInputHandler.cxx:67
 AliPIDResponseInputHandler.cxx:68
 AliPIDResponseInputHandler.cxx:69
 AliPIDResponseInputHandler.cxx:70
 AliPIDResponseInputHandler.cxx:71
 AliPIDResponseInputHandler.cxx:72
 AliPIDResponseInputHandler.cxx:73
 AliPIDResponseInputHandler.cxx:74
 AliPIDResponseInputHandler.cxx:75
 AliPIDResponseInputHandler.cxx:76
 AliPIDResponseInputHandler.cxx:77
 AliPIDResponseInputHandler.cxx:78
 AliPIDResponseInputHandler.cxx:79
 AliPIDResponseInputHandler.cxx:80
 AliPIDResponseInputHandler.cxx:81
 AliPIDResponseInputHandler.cxx:82
 AliPIDResponseInputHandler.cxx:83
 AliPIDResponseInputHandler.cxx:84
 AliPIDResponseInputHandler.cxx:85
 AliPIDResponseInputHandler.cxx:86
 AliPIDResponseInputHandler.cxx:87
 AliPIDResponseInputHandler.cxx:88
 AliPIDResponseInputHandler.cxx:89
 AliPIDResponseInputHandler.cxx:90
 AliPIDResponseInputHandler.cxx:91
 AliPIDResponseInputHandler.cxx:92
 AliPIDResponseInputHandler.cxx:93
 AliPIDResponseInputHandler.cxx:94
 AliPIDResponseInputHandler.cxx:95
 AliPIDResponseInputHandler.cxx:96
 AliPIDResponseInputHandler.cxx:97
 AliPIDResponseInputHandler.cxx:98
 AliPIDResponseInputHandler.cxx:99
 AliPIDResponseInputHandler.cxx:100
 AliPIDResponseInputHandler.cxx:101
 AliPIDResponseInputHandler.cxx:102
 AliPIDResponseInputHandler.cxx:103
 AliPIDResponseInputHandler.cxx:104
 AliPIDResponseInputHandler.cxx:105
 AliPIDResponseInputHandler.cxx:106
 AliPIDResponseInputHandler.cxx:107
 AliPIDResponseInputHandler.cxx:108
 AliPIDResponseInputHandler.cxx:109
 AliPIDResponseInputHandler.cxx:110
 AliPIDResponseInputHandler.cxx:111
 AliPIDResponseInputHandler.cxx:112
 AliPIDResponseInputHandler.cxx:113
 AliPIDResponseInputHandler.cxx:114
 AliPIDResponseInputHandler.cxx:115
 AliPIDResponseInputHandler.cxx:116
 AliPIDResponseInputHandler.cxx:117
 AliPIDResponseInputHandler.cxx:118
 AliPIDResponseInputHandler.cxx:119
 AliPIDResponseInputHandler.cxx:120
 AliPIDResponseInputHandler.cxx:121
 AliPIDResponseInputHandler.cxx:122
 AliPIDResponseInputHandler.cxx:123
 AliPIDResponseInputHandler.cxx:124
 AliPIDResponseInputHandler.cxx:125
 AliPIDResponseInputHandler.cxx:126
 AliPIDResponseInputHandler.cxx:127
 AliPIDResponseInputHandler.cxx:128
 AliPIDResponseInputHandler.cxx:129
 AliPIDResponseInputHandler.cxx:130
 AliPIDResponseInputHandler.cxx:131
 AliPIDResponseInputHandler.cxx:132
 AliPIDResponseInputHandler.cxx:133
 AliPIDResponseInputHandler.cxx:134
 AliPIDResponseInputHandler.cxx:135
 AliPIDResponseInputHandler.cxx:136
 AliPIDResponseInputHandler.cxx:137
 AliPIDResponseInputHandler.cxx:138
 AliPIDResponseInputHandler.cxx:139
 AliPIDResponseInputHandler.cxx:140
 AliPIDResponseInputHandler.cxx:141
 AliPIDResponseInputHandler.cxx:142
 AliPIDResponseInputHandler.cxx:143
 AliPIDResponseInputHandler.cxx:144
 AliPIDResponseInputHandler.cxx:145
 AliPIDResponseInputHandler.cxx:146
 AliPIDResponseInputHandler.cxx:147
 AliPIDResponseInputHandler.cxx:148
 AliPIDResponseInputHandler.cxx:149
 AliPIDResponseInputHandler.cxx:150
 AliPIDResponseInputHandler.cxx:151
 AliPIDResponseInputHandler.cxx:152
 AliPIDResponseInputHandler.cxx:153
 AliPIDResponseInputHandler.cxx:154
 AliPIDResponseInputHandler.cxx:155
 AliPIDResponseInputHandler.cxx:156
 AliPIDResponseInputHandler.cxx:157
 AliPIDResponseInputHandler.cxx:158
 AliPIDResponseInputHandler.cxx:159
 AliPIDResponseInputHandler.cxx:160
 AliPIDResponseInputHandler.cxx:161
 AliPIDResponseInputHandler.cxx:162
 AliPIDResponseInputHandler.cxx:163
 AliPIDResponseInputHandler.cxx:164
 AliPIDResponseInputHandler.cxx:165
 AliPIDResponseInputHandler.cxx:166
 AliPIDResponseInputHandler.cxx:167
 AliPIDResponseInputHandler.cxx:168
 AliPIDResponseInputHandler.cxx:169
 AliPIDResponseInputHandler.cxx:170
 AliPIDResponseInputHandler.cxx:171
 AliPIDResponseInputHandler.cxx:172
 AliPIDResponseInputHandler.cxx:173
 AliPIDResponseInputHandler.cxx:174
 AliPIDResponseInputHandler.cxx:175
 AliPIDResponseInputHandler.cxx:176
 AliPIDResponseInputHandler.cxx:177
 AliPIDResponseInputHandler.cxx:178
 AliPIDResponseInputHandler.cxx:179
 AliPIDResponseInputHandler.cxx:180
 AliPIDResponseInputHandler.cxx:181
 AliPIDResponseInputHandler.cxx:182
 AliPIDResponseInputHandler.cxx:183
 AliPIDResponseInputHandler.cxx:184
 AliPIDResponseInputHandler.cxx:185
 AliPIDResponseInputHandler.cxx:186
 AliPIDResponseInputHandler.cxx:187
 AliPIDResponseInputHandler.cxx:188
 AliPIDResponseInputHandler.cxx:189
 AliPIDResponseInputHandler.cxx:190
 AliPIDResponseInputHandler.cxx:191
 AliPIDResponseInputHandler.cxx:192
 AliPIDResponseInputHandler.cxx:193
 AliPIDResponseInputHandler.cxx:194
 AliPIDResponseInputHandler.cxx:195
 AliPIDResponseInputHandler.cxx:196
 AliPIDResponseInputHandler.cxx:197
 AliPIDResponseInputHandler.cxx:198
 AliPIDResponseInputHandler.cxx:199
 AliPIDResponseInputHandler.cxx:200
 AliPIDResponseInputHandler.cxx:201
 AliPIDResponseInputHandler.cxx:202
 AliPIDResponseInputHandler.cxx:203
 AliPIDResponseInputHandler.cxx:204
 AliPIDResponseInputHandler.cxx:205
 AliPIDResponseInputHandler.cxx:206
 AliPIDResponseInputHandler.cxx:207
 AliPIDResponseInputHandler.cxx:208
 AliPIDResponseInputHandler.cxx:209
 AliPIDResponseInputHandler.cxx:210
 AliPIDResponseInputHandler.cxx:211
 AliPIDResponseInputHandler.cxx:212
 AliPIDResponseInputHandler.cxx:213
 AliPIDResponseInputHandler.cxx:214
 AliPIDResponseInputHandler.cxx:215
 AliPIDResponseInputHandler.cxx:216
 AliPIDResponseInputHandler.cxx:217
 AliPIDResponseInputHandler.cxx:218
 AliPIDResponseInputHandler.cxx:219
 AliPIDResponseInputHandler.cxx:220