3 //**************************************************************************
4 //* This file is property of and copyright by the ALICE HLT Project *
5 //* ALICE Experiment at CERN, All rights reserved. *
7 //* Primary Authors: Jacek Otwinowski <Jacek.Otwinowski@gsi.de> *
8 //* for The ALICE HLT Project. *
10 //* Permission to use, copy, modify and distribute this software and its *
11 //* documentation strictly for non-commercial purposes is hereby granted *
12 //* without fee, provided that the above copyright notice appears in all *
13 //* copies and that both the copyright notice and this permission notice *
14 //* appear in the supporting documentation. The authors make no claims *
15 //* about the suitability of this software for any purpose. It is *
16 //* provided "as is" without express or implied warranty. *
17 //**************************************************************************
19 /** @file AliHLTGlobalTrackMergerComponent.cxx
20 @author Jacek Otwinowski
22 @brief HLT global track merger component.
31 #include "AliESDEvent.h"
32 #include "AliTracker.h"
33 #include "AliHLTGlobalTrackMerger.h"
34 #include "AliHLTGlobalTrackMergerComponent.h"
36 /** ROOT macro for the implementation of ROOT specific class methods */
37 ClassImp(AliHLTGlobalTrackMergerComponent)
39 //_____________________________________________________________________________
40 AliHLTGlobalTrackMergerComponent::AliHLTGlobalTrackMergerComponent() : AliHLTGlobalEsdConverterComponent(),
45 //_____________________________________________________________________________
46 AliHLTGlobalTrackMergerComponent::~AliHLTGlobalTrackMergerComponent()
48 // see header file for class documentation
51 //_____________________________________________________________________________
52 const char* AliHLTGlobalTrackMergerComponent::GetComponentID()
54 // see header file for class documentation
55 return "GlobalTrackMerger";
58 //_____________________________________________________________________________
59 void AliHLTGlobalTrackMergerComponent::GetInputDataTypes(AliHLTComponentDataTypeList& list)
61 // see header file for class documentation
62 list.push_back( kAliHLTDataTypeTrack );
65 //_____________________________________________________________________________
66 // AliHLTComponentDataType AliHLTGlobalTrackMergerComponent::GetOutputDataType()
68 // // see header file for class documentation
69 // return kAliHLTDataTypeESDObject|kAliHLTDataOriginTPC;
72 //_____________________________________________________________________________
73 // void AliHLTGlobalTrackMergerComponent::GetOutputDataSize( unsigned long& constBase, double& inputMultiplier )
75 // // see header file for class documentation
76 // // XXX TODO: Find more realistic values.
78 // inputMultiplier = 1.0;
81 //_____________________________________________________________________________
82 AliHLTComponent* AliHLTGlobalTrackMergerComponent::Spawn()
84 // see header file for class documentation
85 return new AliHLTGlobalTrackMergerComponent;
88 //_____________________________________________________________________________
89 void AliHLTGlobalTrackMergerComponent::SetMergerParameters(Double_t maxy,Double_t maxz,Double_t maxkappa,Double_t maxpsi,Double_t maxtgl)
91 // see header file for class documentation
92 fGlobalTrackMerger->SetParameter( maxy, maxz, maxkappa, maxpsi, maxtgl );
95 //_____________________________________________________________________________
96 int AliHLTGlobalTrackMergerComponent::DoInit( int /*argc*/, const char** /*argv*/ )
98 // see header file for class documentation
99 const char* argv = "-notree";
100 AliHLTGlobalEsdConverterComponent::DoInit(1,&argv);
105 fGlobalTrackMerger = new AliHLTGlobalTrackMerger();
107 if (!fGlobalTrackMerger ) {
108 HLTError("failed creating internal objects");
113 SetMergerParameters();
118 //_____________________________________________________________________________
119 int AliHLTGlobalTrackMergerComponent::DoDeinit()
121 // see header file for class documentation
122 if(fGlobalTrackMerger) delete fGlobalTrackMerger; fGlobalTrackMerger =0;
123 AliHLTGlobalEsdConverterComponent::DoDeinit();
127 //_____________________________________________________________________________
128 int AliHLTGlobalTrackMergerComponent::DoEvent(const AliHLTComponentEventData& /*evtData*/,
129 AliHLTComponentTriggerData& /*trigData*/)
132 // global track merger function
133 // takes TRD and TPC tracks and merges them
135 HLTInfo("DoEvent processing data");
137 // see header file for class documentation
140 if(!fGlobalTrackMerger || !fESD) {
141 HLTError("component not initialized");
147 fESD->SetMagneticField(fSolenoidBz);
148 //fESD->SetMagneticField(AliTracker::GetBz());
150 if ((iResult=ProcessBlocks(NULL, fESD))<0) return iResult;
151 if(!fESD->GetNumberOfTracks()>0) return iResult;
154 Bool_t isMerged = fGlobalTrackMerger->Merge(fESD);
156 HLTInfo("No merged tracks");
159 // try to propagate all tracks to DCA to primary vertex
160 fGlobalTrackMerger->PropagateTracksToDCA(fESD);
162 // calculate specification
163 // AliHLTUInt32_t iSpecification = AliHLTTPCDefinitions::EncodeDataSpecification( minSlice, maxSlice, 0, 5 );
164 // HLTInfo("minSlice %d, maxSlice %d", minSlice, maxSlice);
167 //PushBack(fESD, kAliHLTDataTypeESDObject|kAliHLTDataOriginTPC, iSpecification);
168 PushBack(fESD, kAliHLTDataTypeESDObject|kAliHLTDataOriginOut);
170 // clean ESD event content