#include <Riostream.h>
#include <TFile.h>
-#include <TClonesArray.h>
-#include <TProcessID.h>
#include "AliJetFinder.h"
-#include "AliJet.h"
#include "AliAODJet.h"
-#include "AliJetReader.h"
-#include "AliJetReaderHeader.h"
-#include "AliJetControlPlots.h"
-#include "AliLeading.h"
#include "AliAODEvent.h"
#include "AliJetUnitArray.h"
+#include "AliJetReaderHeader.h"
+#include "AliJetHeader.h"
+#include "AliJetReader.h"
+#include "AliAODJetEventBackground.h"
ClassImp(AliJetFinder)
AliJetFinder::AliJetFinder():
- fTreeJ(0),
- fPlotMode(kFALSE),
- fJets(0),
- fGenJets(0),
- fLeading(0),
fReader(0x0),
fHeader(0x0),
fAODjets(0x0),
fNAODjets(0),
- fPlots(0x0),
- fOut(0x0)
-
+ fAODEvBkg(0),
+ fDebug(0)
{
//
// Constructor
//
-
- fJets = new AliJet();
- fGenJets = new AliJet();
- fLeading = new AliLeading();
fAODjets = 0;
}
//
// Destructor
//
-
- // Reset and delete jets
- fJets->ClearJets();
- delete fJets;
- fGenJets->ClearJets();
- delete fGenJets;
- // close file
- if (fOut) {
- fOut->Close();
- fOut->Delete();
- }
- delete fOut;
- // reset and delete control plots
- if (fPlots) delete fPlots;
-}
-
-////////////////////////////////////////////////////////////////////////
-void AliJetFinder::SetOutputFile(const char */*name*/)
-{
- // opens output file
- // fOut = new TFile(name,"recreate");
}
-////////////////////////////////////////////////////////////////////////
-void AliJetFinder::PrintJets()
-{
- // Print jet information
- cout << " Jets found with jet algorithm:" << endl;
- fJets->PrintJets();
- cout << " Jets found by pythia:" << endl;
- fGenJets->PrintJets();
-}
-
-////////////////////////////////////////////////////////////////////////
-void AliJetFinder::SetPlotMode(Bool_t b)
-{
- // Sets the plotting mode
- fPlotMode=b;
- if (b && !fPlots) fPlots = new AliJetControlPlots();
-}
-////////////////////////////////////////////////////////////////////////
-TTree* AliJetFinder::MakeTreeJ(char* name)
-{
- // Create the tree for reconstructed jets
- fTreeJ = new TTree(name, "AliJet");
- fTreeJ->Branch("FoundJet", &fJets, 1000);
- fTreeJ->Branch("GenJet", &fGenJets,1000);
- fTreeJ->Branch("LeadingPart",&fLeading,1000);
- return fTreeJ;
-}
////////////////////////////////////////////////////////////////////////
void AliJetFinder::WriteRHeaderToFile()
rh->Write();
}
-////////////////////////////////////////////////////////////////////////
-void AliJetFinder::Run()
-{
- // Do some initialization
- Init();
- // connect files
- fReader->OpenInputFiles();
-
- // write headers
- WriteHeaders();
- // loop over events
- Int_t nFirst, nLast, option, debug, arrayInitialised;
- nFirst = fReader->GetReaderHeader()->GetFirstEvent();
- nLast = fReader->GetReaderHeader()->GetLastEvent();
-
- option = fReader->GetReaderHeader()->GetDetector();
- debug = fReader->GetReaderHeader()->GetDebug();
- arrayInitialised = fReader->GetArrayInitialised();
-
- // loop over events
- for (Int_t i=nFirst;i<nLast;i++) {
- fReader->FillMomentumArray();
- fLeading->FindLeading(fReader);
- fReader->GetGenJets(fGenJets);
-
- if (option == 0) { // TPC with fMomentumArray
- if(debug > 1)
- printf("In FindJetsC() routine: find jets with fMomentumArray !!!\n");
- FindJetsC();
- } else {
- if(debug > 1) printf("In FindJets() routine: find jets with fUnitArray !!!\n");
- FindJets();
- }
- if (fOut) {
- fOut->cd();
- }
-
- if (fPlots) fPlots->FillHistos(fJets);
- fLeading->Reset();
- fGenJets->ClearJets();
- Reset();
- }
-
- // write out
- if (fPlots) {
- fPlots->Normalize();
- fPlots->PlotHistos();
- }
- if (fOut) {
- fOut->cd();
- fPlots->Write();
- fOut->Close();
- }
-}
-
-
-//
-// The following methods have been added to allow for event steering from the outside
-//
////////////////////////////////////////////////////////////////////////
void AliJetFinder::ConnectTree(TTree* tree, TObject* data)
Bool_t ok = fReader->FillMomentumArray();
if (!ok) return kFALSE;
-
- // Leading particles
- fLeading->FindLeading(fReader);
// Jets
FindJets(); // V1
- // FindJetsC(); // V2
-
- if (fPlots) fPlots->FillHistos(fJets);
- fLeading->Reset();
- fGenJets->ClearJets();
Reset();
return kTRUE;
}
// Delete reference pointer
if (!ok) {delete ref; return kFALSE;}
-
- // Leading particles
- fLeading->FindLeading(fReader);
// Jets
FindJets();
- Int_t nEntRef = ref->GetEntries();
- vector<Float_t> vtmp;
+ Int_t nEntRef = ref->GetEntries();
for(Int_t i=0; i<nEntRef; i++)
{
((AliJetUnitArray*)ref->At(i))->SetUnitEnergy(0.);
((AliJetUnitArray*)ref->At(i))->SetUnitCutFlag(kPtSmaller);
((AliJetUnitArray*)ref->At(i))->SetUnitCutFlag2(kPtSmaller);
- ((AliJetUnitArray*)ref->At(i))->SetUnitPxPyPz(kTRUE,vtmp);
((AliJetUnitArray*)ref->At(i))->SetUnitSignalFlag(kBad);
+ ((AliJetUnitArray*)ref->At(i))->SetUnitSignalFlagC(kTRUE,kBad);
((AliJetUnitArray*)ref->At(i))->SetUnitDetectorFlag(kTpc);
((AliJetUnitArray*)ref->At(i))->SetUnitFlag(kOutJet);
+ ((AliJetUnitArray*)ref->At(i))->ClearUnitTrackRef();
// Reset process ID
AliJetUnitArray* uA = (AliJetUnitArray*)ref->At(i);
ref->Delete();
delete ref;
- if (fPlots) fPlots->FillHistos(fJets);
- fLeading->Reset();
- fGenJets->ClearJets();
Reset();
return kTRUE;
}
-////////////////////////////////////////////////////////////////////////
-void AliJetFinder::FinishRun()
-{
- // Finish a run
- if (fPlots) {
- fPlots->Normalize();
- fPlots->PlotHistos();
- }
-
- if (fOut) {
- fOut->cd();
- if (fPlots) {
- fPlots->Write();
- }
- fOut->Close();
- }
-}
-////////////////////////////////////////////////////////////////////////
void AliJetFinder::AddJet(AliAODJet p)
{
// Add new jet to the list
new ((*fAODjets)[fNAODjets++]) AliAODJet(p);
}
-////////////////////////////////////////////////////////////////////////
void AliJetFinder::ConnectAOD(AliAODEvent* aod)
{
// Connect to the AOD
fAODjets = aod->GetJets();
+ fAODEvBkg = (AliAODJetEventBackground*)(aod->FindListObject(AliAODJetEventBackground::StdBranchName()));
}
////////////////////////////////////////////////////////////////////////
{
fAODjets = dynamic_cast<TClonesArray*>(aod->FindListObject(bname));
- // how is this is reset? Cleared?
+ fAODEvBkg = (AliAODJetEventBackground*)(aod->FindListObject(Form("%s_%s",AliAODJetEventBackground::StdBranchName(),bname)));
+ // how is this is reset? Cleared? -> by the UserExec!!
}