]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ANALYSIS/AliAnalysisTaskPIDResponse.cxx
use eta-phi cuts instead of R-z cuts for track matching, add track momentum cut ...
[u/mrichter/AliRoot.git] / ANALYSIS / AliAnalysisTaskPIDResponse.cxx
1 /**************************************************************************
2  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3  *                                                                        *
4  * Author: The ALICE Off-line Project.                                    *
5  * Contributors are mentioned in the code where appropriate.              *
6  *                                                                        *
7  * Permission to use, copy, modify and distribute this software and its   *
8  * documentation strictly for non-commercial purposes is hereby granted   *
9  * without fee, provided that the above copyright notice appears in all   *
10  * copies and that both the copyright notice and this permission notice   *
11  * appear in the supporting documentation. The authors make no claims     *
12  * about the suitability of this software for any purpose. It is          *
13  * provided "as is" without express or implied warranty.                  *
14  **************************************************************************/
15
16 /* $Id: AliAnalysisTaskPIDResponse.cxx 43811 2010-09-23 14:13:31Z wiechula $ */
17 #include <TFile.h>
18 #include <TChain.h>
19
20 #include <AliAnalysisManager.h>
21 #include <AliInputEventHandler.h>
22 #include <AliVEventHandler.h>
23 #include <AliVEvent.h>
24 #include <AliVParticle.h>
25 #include <AliVTrack.h>
26 #include <AliLog.h>
27 #include <AliPIDResponse.h>
28
29 #include "AliAnalysisTaskPIDResponse.h"
30
31 ClassImp(AliAnalysisTaskPIDResponse)
32
33 //______________________________________________________________________________
34 AliAnalysisTaskPIDResponse::AliAnalysisTaskPIDResponse():
35 AliAnalysisTaskSE(),
36 fIsMC(kFALSE),
37 fPIDResponse(0x0),
38 fRun(0),
39 fOldRun(0),
40 fRecoPass(0)
41 {
42   //
43   // Dummy constructor
44   //
45 }
46
47 //______________________________________________________________________________
48 AliAnalysisTaskPIDResponse::AliAnalysisTaskPIDResponse(const char* name):
49 AliAnalysisTaskSE(name),
50 fIsMC(kFALSE),
51 fPIDResponse(0x0),
52 fRun(0),
53 fOldRun(0),
54 fRecoPass(0)
55 {
56   //
57   // Default constructor
58   //
59   DefineInput(0,TChain::Class());
60 }
61
62 //______________________________________________________________________________
63 AliAnalysisTaskPIDResponse::~AliAnalysisTaskPIDResponse()
64 {
65   //
66   // Destructor
67   //
68 }
69
70 //______________________________________________________________________________
71 void AliAnalysisTaskPIDResponse::UserCreateOutputObjects()
72 {
73   //
74   // Create the output QA objects
75   //
76   
77   AliLog::SetClassDebugLevel("AliAnalysisTaskPIDResponse",10);
78   
79   //input hander
80   AliAnalysisManager *man=AliAnalysisManager::GetAnalysisManager();
81   AliInputEventHandler *inputHandler=dynamic_cast<AliInputEventHandler*>(man->GetInputEventHandler());
82   if (!inputHandler) AliFatal("Input handler needed");
83   
84   //pid response object
85   inputHandler->CreatePIDResponse(fIsMC);
86   fPIDResponse=inputHandler->GetPIDResponse();
87   if (!fPIDResponse) AliFatal("PIDResponse object was not created");
88
89   fPIDResponse->SetOADBPath(AliAnalysisManager::GetOADBPath());
90 }
91
92 //______________________________________________________________________________
93 void AliAnalysisTaskPIDResponse::UserExec(Option_t */*option*/)
94 {
95   //
96   // Setup the PID response functions and fill the QA histograms
97   //
98   AliVEvent *event=InputEvent();
99   if (!event) return;
100   fRun=event->GetRunNumber();
101   
102   if (fRun!=fOldRun){
103     SetRecoInfo();
104     fOldRun=fRun;
105   }
106
107   fPIDResponse->InitialiseEvent(event,fRecoPass);
108 }
109
110 //______________________________________________________________________________
111 void AliAnalysisTaskPIDResponse::SetRecoInfo()
112 {
113   //
114   // Set reconstruction information
115   //
116   
117   //reset information
118   fRecoPass=0;
119   
120   //Get the current file to check the reconstruction pass (UGLY, but not stored in ESD... )
121   AliAnalysisManager *mgr=AliAnalysisManager::GetAnalysisManager();
122   AliVEventHandler *inputHandler=mgr->GetInputEventHandler();
123   if (!inputHandler) return;
124   
125   TTree *tree= (TTree*)inputHandler->GetTree();
126   TFile *file= (TFile*)tree->GetCurrentFile();
127   
128   if (!file) {
129     AliError("Current file not found, cannot set reconstruction information");
130     return;
131   }
132   
133   //find pass from file name (UGLY, but not stored in ESD... )
134   TString fileName(file->GetName());
135   if (fileName.Contains("/pass1")) {
136     fRecoPass=1;
137   } else if (fileName.Contains("/pass2")) {
138     fRecoPass=2;
139   } else if (fileName.Contains("/pass3")) {
140     fRecoPass=3;
141   }
142   
143 }