Redeclaration corrected.
[u/mrichter/AliRoot.git] / ANALYSIS / AliAnalysisTaskSE.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$ */
17  
18 #include <TROOT.h>
19 #include <TSystem.h>
20 #include <TInterpreter.h>
21 #include <TChain.h>
22 #include <TFile.h>
23 #include <TList.h>
24
25 #include "AliAnalysisTaskSE.h"
26 #include "AliAnalysisManager.h"
27 #include "AliESDEvent.h"
28 #include "AliESD.h"
29 #include "AliAODEvent.h"
30 #include "AliVEvent.h"
31 #include "AliAODHandler.h"
32 #include "AliMCEventHandler.h"
33 #include "AliInputEventHandler.h"
34 #include "AliMCEvent.h"
35 #include "AliStack.h"
36 #include "AliLog.h"
37
38
39 ClassImp(AliAnalysisTaskSE)
40
41 ////////////////////////////////////////////////////////////////////////
42
43 AliAnalysisTaskSE::AliAnalysisTaskSE():
44     AliAnalysisTask(),
45     fDebug(0),
46     fEntry(0),
47     fInputEvent(0x0),
48     fInputHandler(0x0),
49     fOutputAOD(0x0),
50     fMCEvent(0x0),
51     fTreeA(0x0)
52 {
53   // Default constructor
54 }
55
56 AliAnalysisTaskSE::AliAnalysisTaskSE(const char* name):
57     AliAnalysisTask(name, "AnalysisTaskSE"),
58     fDebug(0),
59     fEntry(0),
60     fInputEvent(0x0),
61     fInputHandler(0x0),
62     fOutputAOD(0x0),
63     fMCEvent(0x0),
64     fTreeA(0x0)
65 {
66   // Default constructor
67     DefineInput (0, TChain::Class());
68     DefineOutput(0,  TTree::Class());
69 }
70
71 AliAnalysisTaskSE::AliAnalysisTaskSE(const AliAnalysisTaskSE& obj):
72     AliAnalysisTask(obj),
73     fDebug(0),
74     fEntry(0),
75     fInputEvent(0x0),
76     fInputHandler(0x0),
77     fOutputAOD(0x0),
78     fMCEvent(0x0),
79     fTreeA(0x0)
80 {
81 // Copy constructor
82     fDebug        = obj.fDebug;
83     fEntry        = obj.fEntry;
84     fInputEvent   = obj.fInputEvent;
85     fInputHandler = obj.fInputHandler;
86     fOutputAOD    = obj.fOutputAOD;
87     fMCEvent      = obj.fMCEvent;
88     fTreeA        = obj.fTreeA;    
89     printf("Constructor (3) \n");
90 }
91
92
93 AliAnalysisTaskSE& AliAnalysisTaskSE::operator=(const AliAnalysisTaskSE& other)
94 {
95 // Assignment
96     AliAnalysisTask::operator=(other);
97     fDebug        = other.fDebug;
98     fEntry        = other.fEntry;
99     fInputEvent   = other.fInputEvent;
100     fInputHandler = other.fInputHandler;
101     fOutputAOD    = other.fOutputAOD;
102     fMCEvent      = other.fMCEvent;
103     fTreeA        = other.fTreeA;    
104     return *this;
105 }
106
107
108 void AliAnalysisTaskSE::ConnectInputData(Option_t* /*option*/)
109 {
110 // Connect the input data
111     if (fDebug > 1) printf("AnalysisTaskSE::ConnectInputData() \n");
112 //
113 //  ESD
114 //
115     fInputHandler = (AliInputEventHandler*) 
116         ((AliAnalysisManager::GetAnalysisManager())->GetInputEventHandler());
117     if (fInputHandler) {
118         fInputEvent = fInputHandler->GetEvent();
119     } else {
120         AliError("No Input Event Handler connected") ; 
121         return ; 
122     }
123 //
124 //  Monte Carlo
125 //
126     AliMCEventHandler*    mcH = 0;
127     mcH = (AliMCEventHandler*) ((AliAnalysisManager::GetAnalysisManager())->GetMCtruthEventHandler());
128     if (mcH) fMCEvent = mcH->MCEvent();
129 }
130
131 void AliAnalysisTaskSE::CreateOutputObjects()
132 {
133 // Create the output container
134 //
135 //  Default AOD
136     if (fDebug > 1) printf("AnalysisTaskSE::CreateOutPutData() \n");
137
138     AliAODHandler* handler = (AliAODHandler*) 
139         ((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler());
140     
141     fOutputAOD   = handler->GetAOD();
142     fTreeA = handler->GetTree();
143     UserCreateOutputObjects();
144 }
145
146 void AliAnalysisTaskSE::Exec(Option_t* option)
147 {
148 //
149 // Exec analysis of one event
150     if (fDebug > 1) printf("AliAnalysisTaskSE::Exec() \n");
151     fEntry = fInputHandler->GetReadEntry();
152     if ( !((Entry()-1)%100) && fDebug > 0) 
153         AliInfo(Form("%s ----> Processing event # %lld", CurrentFileName(), Entry()));
154 // Call the user analysis    
155     UserExec(option);
156 }
157
158 const char* AliAnalysisTaskSE::CurrentFileName()
159 {
160 // Returns the current file name    
161     return fInputHandler->GetTree()->GetCurrentFile()->GetName();
162 }
163