4 //**************************************************************************
5 //* This file is property of and copyright by the ALICE HLT Project *
6 //* ALICE Experiment at CERN, All rights reserved. *
8 //* Primary Authors: Jochen Thaeder <thaeder@kip.uni-heidelberg.de> *
9 //* for The ALICE HLT Project. *
11 //* Permission to use, copy, modify and distribute this software and its *
12 //* documentation strictly for non-commercial purposes is hereby granted *
13 //* without fee, provided that the above copyright notice appears in all *
14 //* copies and that both the copyright notice and this permission notice *
15 //* appear in the supporting documentation. The authors make no claims *
16 //* about the suitability of this software for any purpose. It is *
17 //* provided "as is" without express or implied warranty. *
18 //**************************************************************************
20 /** @file AliHLTJETFastJetComponent.cxx
21 @author Jochen Thaeder <thaeder@kip.uni-heidelberg.de>
23 @brief Component to run the FastJet jetfinder
34 #include "AliHLTJETFastJetComponent.h"
37 #include "TObjString.h"
39 /** ROOT macro for the implementation of ROOT specific class methods */
40 ClassImp(AliHLTJETFastJetComponent)
43 * ---------------------------------------------------------------------------------
44 * Constructor / Destructor
45 * ---------------------------------------------------------------------------------
48 // #################################################################################
49 AliHLTJETFastJetComponent::AliHLTJETFastJetComponent()
54 fJetReaderHeader(NULL),
56 // see header file for class documentation
58 // refer to README to build package
60 // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
63 // #################################################################################
64 AliHLTJETFastJetComponent::~AliHLTJETFastJetComponent() {
65 // see header file for class documentation
69 * ---------------------------------------------------------------------------------
70 * Public functions to implement AliHLTComponent's interface.
71 * These functions are required for the registration process
72 * ---------------------------------------------------------------------------------
75 // #################################################################################
76 const Char_t* AliHLTJETFastJetComponent::GetComponentID() {
77 // see header file for class documentation
78 return "JETFastJetFinder";
81 // #################################################################################
82 void AliHLTJETFastJetComponent::GetInputDataTypes( vector<AliHLTComponentDataType>& list) {
83 // see header file for class documentation
85 list.push_back( kAliHLTDataTypeMCObject|kAliHLTDataOriginOffline );
86 list.push_back( kAliHLTDataTypeMCObject|kAliHLTDataOriginHLT );
87 list.push_back( kAliHLTDataTypeESDObject|kAliHLTDataOriginOffline );
88 list.push_back( kAliHLTDataTypeESDObject|kAliHLTDataOriginHLT );
91 // #################################################################################
92 AliHLTComponentDataType AliHLTJETFastJetComponent::GetOutputDataType() {
93 // see header file for class documentation
94 return (kAliHLTDataTypeESDObject| kAliHLTDataOriginHLT);
97 // #################################################################################
98 void AliHLTJETFastJetComponent::GetOutputDataSize( ULong_t& constBase, Double_t& inputMultiplier ) {
99 // see header file for class documentation
102 inputMultiplier = 0.3;
105 // #################################################################################
106 AliHLTComponent* AliHLTJETFastJetComponent::Spawn() {
107 // see header file for class documentation
108 return new AliHLTJETFastJetComponent();
112 * ---------------------------------------------------------------------------------
113 * Protected functions to implement AliHLTComponent's interface.
114 * These functions provide initialization as well as the actual processing
115 * capabilities of the component.
116 * ---------------------------------------------------------------------------------
119 // #################################################################################
120 Int_t AliHLTJETFastJetComponent::DoInit( Int_t /*argc*/, const Char_t** /*argv*/ ) {
121 // see header file for class documentation
123 if ( fJetFinder || fJetHeader || fJetReader || fJetReader || fJetTrackCuts)
127 // -------------------------------------------
128 if ( ! (fJetTrackCuts = new AliHLTJETTrackCuts()) ) {
129 HLTError("Error initializing Track Cuts");
133 // fJetTrackCuts->Set ...
135 // -- Jet Reader Header
136 // -------------------------------------------
137 if ( ! (fJetReaderHeader = new AliHLTJETReaderHeader()) ) {
138 HLTError("Error initializing Jet Reader Header");
142 fJetReaderHeader->SetAnalysisCuts( dynamic_cast<AliAnalysisCuts*>(fJetTrackCuts) );
145 // -------------------------------------------
146 if ( ! (fJetReader = new AliHLTJETReader()) ) {
147 HLTError("Error initializing Jet Reader");
151 fJetReader->SetReaderHeader(fJetReaderHeader);
154 // -------------------------------------------
155 if ( ! (fJetHeader = new AliFastJetHeader()) ) {
156 HLTError("Error initializing Jet Header");
160 fJetHeader->SetRparam(0.7);
163 // -------------------------------------------
164 if ( ! (fJetFinder = new AliFastJetFinder()) ) {
165 HLTError("Error initializing Jet Finder");
169 fJetFinder->SetJetHeader(fJetHeader);
170 fJetFinder->SetJetReader(fJetReader);
171 fJetFinder->SetOutputFile("jets.root");
173 // -- Initialize Jet Finder
174 // -------------------------------------------
180 // #################################################################################
181 Int_t AliHLTJETFastJetComponent::DoDeinit() {
182 // see header file for class documentation
196 if ( fJetReaderHeader )
197 delete fJetReaderHeader;
198 fJetReaderHeader = NULL;
201 delete fJetTrackCuts;
202 fJetTrackCuts = NULL;
209 // #################################################################################
210 Int_t AliHLTJETFastJetComponent::DoEvent( const AliHLTComponentEventData& /*evtData*/,
211 AliHLTComponentTriggerData& /*trigData*/ ) {
212 // see header file for class documentation
216 const TObject* iter = NULL;
220 if ( GetFirstInputObject(kAliHLTDataTypeSOR) && !iResult ) {
221 HLTInfo("On-line SOR Event");
224 // -- ADD MC Object -- Off-line
225 // ------------------------------
226 for ( iter=GetFirstInputObject(kAliHLTDataTypeMCObject|kAliHLTDataOriginOffline); iter != NULL && !iResult; iter=GetNextInputObject() ) {
227 HLTInfo("Off-line MC Event");
229 // -- ADD MC Object -- On-line
230 // ------------------------------
231 for ( iter=GetFirstInputObject(kAliHLTDataTypeMCObject|kAliHLTDataOriginHLT); iter != NULL && !iResult; iter=GetNextInputObject() ) {
232 HLTInfo("On-line MC Event");
234 // -- Set input event
235 fJetReader->SetInputEvent( NULL, NULL, const_cast<TObject*>(iter) );
237 // -- Process one event
238 if ( ! (fJetFinder->ProcessEvent()) )
242 // -- ADD ESD Object -- Off-line
243 // -------------------------------
244 for ( iter=GetFirstInputObject(kAliHLTDataTypeESDObject|kAliHLTDataOriginOffline); iter != NULL && !iResult; iter=GetNextInputObject() ) {
245 HLTInfo("Off-line ESD Event");
248 // -- ADD ESD Object -- On-line
249 // ------------------------------
250 for ( iter=GetFirstInputObject(kAliHLTDataTypeESDObject|kAliHLTDataOriginHLT); iter != NULL && !iResult; iter=GetNextInputObject() ) {
251 HLTInfo("On-line ESD Event");
256 if ( GetFirstInputObject(kAliHLTDataTypeEOR) && !iResult ) {
257 HLTInfo("On-line EOR Event");
260 // fJetFinder->FinishRun();