1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
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 //---------------------------------------------------------------------
26 #include <Riostream.h>
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"
38 ClassImp(AliJetFinder)
40 AliJetFinder::AliJetFinder():
54 ////////////////////////////////////////////////////////////////////////
55 AliJetFinder::~AliJetFinder()
64 ////////////////////////////////////////////////////////////////////////
65 void AliJetFinder::WriteRHeaderToFile()
67 // write reader header
68 AliJetReaderHeader *rh = fReader->GetReaderHeader();
73 ////////////////////////////////////////////////////////////////////////
74 void AliJetFinder::ConnectTree(TTree* tree, TObject* data)
76 // Connect the input file
77 fReader->ConnectTree(tree, data);
80 ////////////////////////////////////////////////////////////////////////
81 void AliJetFinder::WriteHeaders()
84 TFile* f = new TFile("jets_local.root", "recreate");
90 ////////////////////////////////////////////////////////////////////////
91 Bool_t AliJetFinder::ProcessEvent()
98 Bool_t ok = fReader->FillMomentumArray();
99 if (!ok) return kFALSE;
106 ////////////////////////////////////////////////////////////////////////
107 Bool_t AliJetFinder::ProcessEvent2()
111 // Charged only or charged+neutral jets
114 TRefArray* ref = new TRefArray();
115 Bool_t procid = kFALSE;
116 Bool_t ok = fReader->ExecTasks(procid,ref);
118 // Delete reference pointer
119 if (!ok) {delete ref; return kFALSE;}
123 Int_t nEntRef = ref->GetEntries();
125 for(Int_t i=0; i<nEntRef; i++)
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();
139 AliJetUnitArray* uA = (AliJetUnitArray*)ref->At(i);
140 uA->ResetBit(kIsReferenced);
144 // Delete the reference pointer
154 void AliJetFinder::AddJet(AliAODJet p)
156 // Add new jet to the list
157 new ((*fAODjets)[fNAODjets++]) AliAODJet(p);
160 void AliJetFinder::ConnectAOD(AliAODEvent* aod)
162 // Connect to the AOD
163 fAODjets = aod->GetJets();
164 fAODEvBkg = (AliAODJetEventBackground*)(aod->FindListObject(AliAODJetEventBackground::StdBranchName()));
167 ////////////////////////////////////////////////////////////////////////
168 void AliJetFinder::ConnectAODNonStd(AliAODEvent* aod,const char *bname)
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!!