X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=JETAN%2FAliJetFinder.cxx;h=bdad6045e357270c5dfbf6fe4f551d44a080aeb7;hb=614839097a49575bbd24149f6c42304fd5cc55ef;hp=1e9769be3314e6eb42ed4271bbfe29b771ec7d72;hpb=52ff852a751ecfb27053b527301839c8e85f32f3;p=u%2Fmrichter%2FAliRoot.git diff --git a/JETAN/AliJetFinder.cxx b/JETAN/AliJetFinder.cxx index 1e9769be331..bdad6045e35 100644 --- a/JETAN/AliJetFinder.cxx +++ b/JETAN/AliJetFinder.cxx @@ -20,217 +20,156 @@ // manages the search for jets // Authors: jgcn@mda.cinvestav.mx // andreas.morsch@cern.ch +// magali.estienne@subatech.in2p3.fr //--------------------------------------------------------------------- #include #include + #include "AliJetFinder.h" -#include "AliJet.h" -#include "AliJetReader.h" +#include "AliAODJet.h" +#include "AliAODEvent.h" +#include "AliJetUnitArray.h" #include "AliJetReaderHeader.h" -#include "AliJetControlPlots.h" -#include "AliLeading.h" +#include "AliJetHeader.h" +#include "AliJetReader.h" +#include "AliAODJetEventBackground.h" ClassImp(AliJetFinder) AliJetFinder::AliJetFinder(): - fPlotMode(kFALSE), - fJets(0), - fGenJets(0), - fLeading(0), fReader(0x0), - fPlots(0x0), - fOut(0x0) - + fHeader(0x0), + fAODjets(0x0), + fNAODjets(0), + fAODEvBkg(0), + fDebug(0) { + // // Constructor - fJets = new AliJet(); - fGenJets = new AliJet(); - fLeading = new AliLeading(); + // + fAODjets = 0; } //////////////////////////////////////////////////////////////////////// - AliJetFinder::~AliJetFinder() { - // destructor - // here 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; + // + // Destructor + // } -//////////////////////////////////////////////////////////////////////// -void AliJetFinder::SetOutputFile(const char *name) -{ - // opens output file - fOut = new TFile(name,"recreate"); -} //////////////////////////////////////////////////////////////////////// - -void AliJetFinder::PrintJets() +void AliJetFinder::WriteRHeaderToFile() { - // Print jet information - cout << " Jets found with jet algorithm:" << endl; - fJets->PrintJets(); - cout << " Jets found by pythia:" << endl; - fGenJets->PrintJets(); + // write reader header + AliJetReaderHeader *rh = fReader->GetReaderHeader(); + rh->Write(); } -//////////////////////////////////////////////////////////////////////// -void AliJetFinder::SetPlotMode(Bool_t b) +//////////////////////////////////////////////////////////////////////// +void AliJetFinder::ConnectTree(TTree* tree, TObject* data) { - // Sets the plotting mode - fPlotMode=b; - if (b && !fPlots) fPlots = new AliJetControlPlots(); + // Connect the input file + fReader->ConnectTree(tree, data); } //////////////////////////////////////////////////////////////////////// - -void AliJetFinder::WriteJetsToFile(Int_t i) +void AliJetFinder::WriteHeaders() { - // Writes the jets to file - fOut->cd(); - char hname[30]; - sprintf(hname,"TreeJ%d",i); - TTree* jetT = new TTree(hname,"AliJet"); - jetT->Branch("FoundJet",&fJets,1000); - jetT->Branch("GenJet",&fGenJets,1000); - jetT->Branch("LeadingPart",&fLeading,1000); - jetT->Fill(); - jetT->Write(hname); - delete jetT; + // Write the Headers + TFile* f = new TFile("jets_local.root", "recreate"); + WriteRHeaderToFile(); + WriteJHeaderToFile(); + f->Close(); } //////////////////////////////////////////////////////////////////////// - -void AliJetFinder::WriteRHeaderToFile() +Bool_t AliJetFinder::ProcessEvent() { - // write reader header - fOut->cd(); - AliJetReaderHeader *rh = fReader->GetReaderHeader(); - rh->Write(); + // + // Process one event + // Charged only jets + // + + Bool_t ok = fReader->FillMomentumArray(); + if (!ok) return kFALSE; + // Jets + FindJets(); // V1 + Reset(); + return kTRUE; } //////////////////////////////////////////////////////////////////////// - - -void AliJetFinder::Run() +Bool_t AliJetFinder::ProcessEvent2() { - // 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;iFillMomentumArray(i); - fLeading->FindLeading(fReader); - fReader->GetGenJets(fGenJets); - - if (option == 0) { // TPC with fMomentumArray - if(debug > 1) - printf("In FindJetsTPC() routine: find jets with fMomentumArray !!!\n"); - FindJetsTPC(); - } else { - if(debug > 1) printf("In FindJets() routine: find jets with fUnitArray !!!\n"); - FindJets(); - } - if (fOut) WriteJetsToFile(i); - 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(); - } -} + // + // Process one event + // Charged only or charged+neutral jets + // + + TRefArray* ref = new TRefArray(); + Bool_t procid = kFALSE; + Bool_t ok = fReader->ExecTasks(procid,ref); + + // Delete reference pointer + if (!ok) {delete ref; return kFALSE;} + // Jets + FindJets(); + + Int_t nEntRef = ref->GetEntries(); + + for(Int_t i=0; iAt(i))->SetUnitTrackID(0); + ((AliJetUnitArray*)ref->At(i))->SetUnitEnergy(0.); + ((AliJetUnitArray*)ref->At(i))->SetUnitCutFlag(kPtSmaller); + ((AliJetUnitArray*)ref->At(i))->SetUnitCutFlag2(kPtSmaller); + ((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); + uA->ResetBit(kIsReferenced); + uA->SetUniqueID(0); + } + // Delete the reference pointer + ref->Delete(); + delete ref; -// -// The following methods have been added to allow for event steering from the outside -// + Reset(); -void AliJetFinder::ConnectTree(TTree* tree) -{ - // Connect the input file - fReader->ConnectTree(tree); + return kTRUE; } -void AliJetFinder::WriteHeaders() + +void AliJetFinder::AddJet(AliAODJet p) { - // Write the Headers - if (fOut) { - fOut->cd(); - WriteRHeaderToFile(); - WriteJHeaderToFile(); - } +// Add new jet to the list + new ((*fAODjets)[fNAODjets++]) AliAODJet(p); } - -Bool_t AliJetFinder::ProcessEvent(Long64_t entry) +void AliJetFinder::ConnectAOD(AliAODEvent* aod) { -// -// Process one event -// - printf("<<<<< Processing Event %5d >>>>> \n", (Int_t) entry); - Bool_t ok = fReader->FillMomentumArray(entry); - if (!ok) return kFALSE; - fLeading->FindLeading(fReader); - FindJets(); - if (fOut) WriteJetsToFile(entry); - if (fPlots) fPlots->FillHistos(fJets); - fLeading->Reset(); - fGenJets->ClearJets(); - Reset(); - return kTRUE; +// Connect to the AOD + fAODjets = aod->GetJets(); + fAODEvBkg = (AliAODJetEventBackground*)(aod->FindListObject(AliAODJetEventBackground::StdBranchName())); } -void AliJetFinder::FinishRun() +//////////////////////////////////////////////////////////////////////// +void AliJetFinder::ConnectAODNonStd(AliAODEvent* aod,const char *bname) { - // Finish a run - if (fPlots) { - fPlots->Normalize(); - fPlots->PlotHistos(); - if (fOut) { - fOut->cd(); - fPlots->Write(); - fOut->Close(); - } - } else { - if (fOut) fOut->Close(); - } + + fAODjets = dynamic_cast(aod->FindListObject(bname)); + fAODEvBkg = (AliAODJetEventBackground*)(aod->FindListObject(Form("%s_%s",AliAODJetEventBackground::StdBranchName(),bname))); + // how is this is reset? Cleared? -> by the UserExec!! }