]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - JETAN/AliJetFinder.cxx
Getting keyword substitution to work.
[u/mrichter/AliRoot.git] / JETAN / AliJetFinder.cxx
... / ...
CommitLineData
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//---------------------------------------------------------------------
19// Jet finder base class
20// manages the search for jets
21// Authors: jgcn@mda.cinvestav.mx
22// andreas.morsch@cern.ch
23// magali.estienne@subatech.in2p3.fr
24//---------------------------------------------------------------------
25
26#include <Riostream.h>
27#include <TFile.h>
28
29#include "AliJetFinder.h"
30#include "AliAODJet.h"
31#include "AliAODEvent.h"
32#include "AliJetUnitArray.h"
33#include "AliJetReaderHeader.h"
34#include "AliJetHeader.h"
35#include "AliJetReader.h"
36#include "AliAODJetEventBackground.h"
37
38ClassImp(AliJetFinder)
39
40AliJetFinder::AliJetFinder():
41 fReader(0x0),
42 fHeader(0x0),
43 fAODjets(0x0),
44 fNAODjets(0),
45 fAODEvBkg(0),
46 fDebug(0)
47{
48 //
49 // Constructor
50 //
51 fAODjets = 0;
52}
53
54////////////////////////////////////////////////////////////////////////
55AliJetFinder::~AliJetFinder()
56{
57 //
58 // Destructor
59 //
60}
61
62
63
64////////////////////////////////////////////////////////////////////////
65void AliJetFinder::WriteRHeaderToFile()
66{
67 // write reader header
68 AliJetReaderHeader *rh = fReader->GetReaderHeader();
69 rh->Write();
70}
71
72
73////////////////////////////////////////////////////////////////////////
74void AliJetFinder::ConnectTree(TTree* tree, TObject* data)
75{
76 // Connect the input file
77 fReader->ConnectTree(tree, data);
78}
79
80////////////////////////////////////////////////////////////////////////
81void AliJetFinder::WriteHeaders()
82{
83 // Write the Headers
84 TFile* f = new TFile("jets_local.root", "recreate");
85 WriteRHeaderToFile();
86 WriteJHeaderToFile();
87 f->Close();
88}
89
90////////////////////////////////////////////////////////////////////////
91Bool_t AliJetFinder::ProcessEvent()
92{
93 //
94 // Process one event
95 // Charged only jets
96 //
97
98 Bool_t ok = fReader->FillMomentumArray();
99 if (!ok) return kFALSE;
100 // Jets
101 FindJets(); // V1
102 Reset();
103 return kTRUE;
104}
105
106////////////////////////////////////////////////////////////////////////
107Bool_t AliJetFinder::ProcessEvent2()
108{
109 //
110 // Process one event
111 // Charged only or charged+neutral jets
112 //
113
114 TRefArray* ref = new TRefArray();
115 Bool_t procid = kFALSE;
116 Bool_t ok = fReader->ExecTasks(procid,ref);
117
118 // Delete reference pointer
119 if (!ok) {delete ref; return kFALSE;}
120 // Jets
121 FindJets();
122
123 Int_t nEntRef = ref->GetEntries();
124
125 for(Int_t i=0; i<nEntRef; i++)
126 {
127 // Reset the UnitArray content which were referenced
128 ((AliJetUnitArray*)ref->At(i))->SetUnitTrackID(0);
129 ((AliJetUnitArray*)ref->At(i))->SetUnitEnergy(0.);
130 ((AliJetUnitArray*)ref->At(i))->SetUnitCutFlag(kPtSmaller);
131 ((AliJetUnitArray*)ref->At(i))->SetUnitCutFlag2(kPtSmaller);
132 ((AliJetUnitArray*)ref->At(i))->SetUnitSignalFlag(kBad);
133 ((AliJetUnitArray*)ref->At(i))->SetUnitSignalFlagC(kTRUE,kBad);
134 ((AliJetUnitArray*)ref->At(i))->SetUnitDetectorFlag(kTpc);
135 ((AliJetUnitArray*)ref->At(i))->SetUnitFlag(kOutJet);
136 ((AliJetUnitArray*)ref->At(i))->ClearUnitTrackRef();
137
138 // Reset process ID
139 AliJetUnitArray* uA = (AliJetUnitArray*)ref->At(i);
140 uA->ResetBit(kIsReferenced);
141 uA->SetUniqueID(0);
142 }
143
144 // Delete the reference pointer
145 ref->Delete();
146 delete ref;
147
148 Reset();
149
150 return kTRUE;
151}
152
153
154void AliJetFinder::AddJet(AliAODJet p)
155{
156// Add new jet to the list
157 new ((*fAODjets)[fNAODjets++]) AliAODJet(p);
158}
159
160void AliJetFinder::ConnectAOD(const AliAODEvent* aod)
161{
162// Connect to the AOD
163 fAODjets = aod->GetJets();
164 fAODEvBkg = (AliAODJetEventBackground*)(aod->FindListObject(AliAODJetEventBackground::StdBranchName()));
165}
166
167////////////////////////////////////////////////////////////////////////
168void AliJetFinder::ConnectAODNonStd(AliAODEvent* aod,const char *bname)
169{
170
171 fAODjets = dynamic_cast<TClonesArray*>(aod->FindListObject(bname));
172 fAODEvBkg = (AliAODJetEventBackground*)(aod->FindListObject(Form("%s_%s",AliAODJetEventBackground::StdBranchName(),bname)));
173 // how is this is reset? Cleared? -> by the UserExec!!
174}
175