X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=JETAN%2FAliFastJetFinder.cxx;h=c61d90ad1d0354ed0df32ded1fae50fddfecbde9;hb=e36a3f229e62a74f64da011aed64fe003535eaa8;hp=ae5967dc970a020f227ef6093149b05a54c3edbf;hpb=42b0ac89952e9e351590efd64f2ebce04b8abca0;p=u%2Fmrichter%2FAliRoot.git diff --git a/JETAN/AliFastJetFinder.cxx b/JETAN/AliFastJetFinder.cxx index ae5967dc970..c61d90ad1d0 100644 --- a/JETAN/AliFastJetFinder.cxx +++ b/JETAN/AliFastJetFinder.cxx @@ -30,7 +30,6 @@ #include #include #include -#include #include #include "AliFastJetFinder.h" @@ -38,6 +37,10 @@ #include "AliJetReaderHeader.h" #include "AliJetReader.h" #include "AliJetUnitArray.h" +#include "AliFastJetInput.h" +#include "AliJetBkg.h" +#include "AliAODJetEventBackground.h" +#include "AliAODTrack.h" #include "fastjet/PseudoJet.hh" #include "fastjet/ClusterSequenceArea.hh" @@ -63,7 +66,9 @@ ClassImp(AliFastJetFinder) //____________________________________________________________________________ AliFastJetFinder::AliFastJetFinder(): - AliJetFinder() + AliJetFinder(), + fInputFJ(new AliFastJetInput()), + fJetBkg(new AliJetBkg()) { // Constructor } @@ -73,17 +78,18 @@ AliFastJetFinder::AliFastJetFinder(): AliFastJetFinder::~AliFastJetFinder() { // destructor + delete fInputFJ; fInputFJ = 0; + delete fJetBkg; fJetBkg = 0; } //______________________________________________________________________________ void AliFastJetFinder::FindJets() { - + cout<<"----------in AliFastJetFinder::FindJets() ------------------"<GetDebug(); // debug option Bool_t bgMode = header->GetBGMode(); // choose to subtract BG or not - Int_t fOpt = fReader->GetReaderHeader()->GetDetector(); // check if we are reading AOD jets TRefArray *refs = 0; @@ -92,68 +98,20 @@ void AliFastJetFinder::FindJets() // RUN ALGORITHM // read input particles ----------------------------- - vector inputParticles; - if(fOpt==0) - { - TClonesArray *lvArray = fReader->GetMomentumArray(); - if(lvArray == 0) { cout << "Could not get the momentum array" << endl; return; } - Int_t nIn = lvArray->GetEntries(); - if(nIn == 0) { if (debug) cout << "entries = 0 ; Event empty !!!" << endl ; return; } - Float_t px,py,pz,en; - // load input vectors - for(Int_t i = 0; i < nIn; i++){ // loop for all input particles - TLorentzVector *lv = (TLorentzVector*) lvArray->At(i); - px = lv->Px(); - py = lv->Py(); - pz = lv->Pz(); - en = lv->Energy(); - - fastjet::PseudoJet inputPart(px,py,pz,en); // create PseudoJet object - inputPart.set_user_index(i); //label the particle into Fastjet algortihm - inputParticles.push_back(inputPart); // back of the inputParticles vector - } // end loop - } - else { - TClonesArray* fUnit = fReader->GetUnitArray(); - if(fUnit == 0) { cout << "Could not get the momentum array" << endl; return; } - Int_t nIn = fUnit->GetEntries(); - if(nIn == 0) { if (debug) cout << "entries = 0 ; Event empty !!!" << endl ; return; } - // Information extracted from fUnitArray - // load input vectors and calculate total energy in array - Float_t pt,eta,phi,theta,px,py,pz,en; - Int_t ipart = 0; - for(Int_t i=0; iAt(i); - - if(uArray->GetUnitEnergy()>0.){ - - // It is not necessary anymore to cut on particle pt - pt = uArray->GetUnitEnergy(); - eta = uArray->GetUnitEta(); - phi = uArray->GetUnitPhi(); - theta = EtaToTheta(eta); - en = (TMath::Abs(TMath::Sin(theta)) == 0) ? pt : pt/TMath::Abs(TMath::Sin(theta)); - px = TMath::Cos(phi)*pt; - py = TMath::Sin(phi)*pt; - pz = en*TMath::TanH(eta); - if(debug) cout << "pt: " << pt << ", eta: " << eta << ", phi: " << phi << ", en: " << en << ", px: " << px << ", py: " << py << ", pz: " << pz << endl; - - fastjet::PseudoJet inputPart(px,py,pz,en); // create PseudoJet object - inputPart.set_user_index(ipart); //label the particle into Fastjet algortihm - inputParticles.push_back(inputPart); // back of the inputParticles vector - ipart++; - } - } // End loop on UnitArray + + vector inputParticles=fInputFJ->GetInputParticles(); + if(inputParticles.size()==0){ + Printf("%s:%d No input particles found, skipping event",(char*)__FILE__,__LINE__); + return; } - + // create an object that represents your choice of jet algorithm, and // the associated parameters double rParam = header->GetRparam(); fastjet::Strategy strategy = header->GetStrategy(); fastjet::RecombinationScheme recombScheme = header->GetRecombScheme(); fastjet::JetAlgorithm algorithm = header->GetAlgorithm(); - fastjet::JetDefinition jet_def(algorithm, rParam, recombScheme, strategy); + fastjet::JetDefinition jetDef(algorithm, rParam, recombScheme, strategy); // create an object that specifies how we to define the area fastjet::AreaDefinition areaDef; @@ -162,22 +120,26 @@ void AliFastJetFinder::FindJets() int activeAreaRepeats = header->GetActiveAreaRepeats(); // now create the object that holds info about ghosts - fastjet::GhostedAreaSpec ghost_spec(ghostEtamax, activeAreaRepeats, ghostArea); + fastjet::GhostedAreaSpec ghostSpec(ghostEtamax, activeAreaRepeats, ghostArea); // and from that get an area definition fastjet::AreaType areaType = header->GetAreaType(); - areaDef = fastjet::AreaDefinition(areaType,ghost_spec); + areaDef = fastjet::AreaDefinition(areaType,ghostSpec); - if(bgMode) // BG subtraction + + + + + if(bgMode) // BG subtraction!!!!!!!!!! Not entering here { //***************************** JETS FINDING AND EXTRACTION // run the jet clustering with the above jet definition - fastjet::ClusterSequenceArea clust_seq(inputParticles, jet_def, areaDef); + fastjet::ClusterSequenceArea clust_seq(inputParticles, jetDef, areaDef); // save a comment in the header TString comment = "Running FastJet algorithm with the following setup. "; comment+= "Jet definition: "; - comment+= TString(jet_def.description()); + comment+= TString(jetDef.description()); comment+= ". Area definition: "; comment+= TString(areaDef.description()); comment+= ". Strategy adopted by FastJet: "; @@ -222,7 +184,7 @@ void AliFastJetFinder::FindJets() double area = clust_seq.area(jets[j]); double areaError = clust_seq.area_error(jets[j]); - printf("Jet found %5d %9.5f %8.5f %10.3f %8.3f +- %6.3f\n", (Int_t)j,jets[j].rap(),jets[j].phi(),jets[j].perp(), area, areaError); + if(debug) printf("Jet found %5d %9.5f %8.5f %10.3f %8.3f +- %6.3f\n", (Int_t)j,jets[j].rap(),jets[j].phi(),jets[j].perp(), area, areaError); // go to write AOD info AliAODJet aodjet (jets[j].px(), jets[j].py(), jets[j].pz(), jets[j].E()); @@ -234,15 +196,27 @@ void AliFastJetFinder::FindJets() } } - else { // No BG subtraction - fastjet::ClusterSequence clust_seq(inputParticles, jet_def); + + + + + else { // No BG subtraction!!!!!!!! Default header is bgmode=0. + + TClonesArray* fUnit = fReader->GetUnitArray(); //Big mmentum array + if(fUnit == 0) { cout << "Could not get the momentum array" << endl; return; } + Int_t nIn = fUnit->GetEntries(); + + + //fastjet::ClusterSequence clust_seq(inputParticles, jetDef); + fastjet::ClusterSequenceArea clust_seq(inputParticles, jetDef, areaDef); + // save a comment in the header TString comment = "Running FastJet algorithm with the following setup. "; comment+= "Jet definition: "; - comment+= TString(jet_def.description()); + comment+= TString(jetDef.description()); comment+= ". Strategy adopted by FastJet: "; comment+= TString(clust_seq.strategy_string()); header->SetComment(comment); @@ -262,16 +236,51 @@ void AliFastJetFinder::FindJets() vector jets = sorted_by_pt(inclusiveJets); // Added by me for (size_t j = 0; j < jets.size(); j++) { // loop for jets // Added by me - printf("Jet found %5d %9.5f %8.5f %10.3f \n",(Int_t)j,jets[j].rap(),jets[j].phi(),jets[j].perp()); - + if(debug) printf("Jet found %5d %9.5f %8.5f %10.3f \n",(Int_t)j,jets[j].rap(),jets[j].phi(),jets[j].perp()); + + vector constituents = clust_seq.constituents(jets[j]); + int nCon= constituents.size(); + TArrayI ind(nCon); + Double_t area=clust_seq.area(jets[j]); // go to write AOD info AliAODJet aodjet (jets[j].px(), jets[j].py(), jets[j].pz(), jets[j].E()); + aodjet.SetEffArea(area,0); //cout << "Printing jet " << endl; if(debug) aodjet.Print(""); - //cout << "Adding jet ... " ; + Int_t count=0; + for (int i=0; i < nCon; i++) + { + fastjet::PseudoJet mPart=constituents[i]; + ind[i]=mPart.user_index(); + // cout<CreateTasks(tree); } + + +Bool_t AliFastJetFinder::ProcessEvent() +{ + // + // Process one event + // from meomntum array + + Bool_t ok = fReader->FillMomentumArray(); + + if (!ok) return kFALSE; + fInputFJ->SetHeader(fHeader); + fInputFJ->SetReader(fReader); + fInputFJ->FillInput(); + // Jets + FindJets(); + + fJetBkg->SetHeader(fHeader); + fJetBkg->SetReader(fReader); + /* + fJetBkg->SetFastJetInput(fInputFJ); + Double_t bkg1=fJetBkg->BkgFastJet(); + Double_t bkg2=fJetBkg->BkgChargedFastJet(); + Double_t bkg3=fJetBkg->BkgFastJetCone(fAODjets); + Double_t bkg4=fJetBkg->BkgRemoveJetLeading(fAODjets); + + fAODEvBkg->SetBackground(0,bkg1); + fAODEvBkg->SetBackground(1,bkg2); + fAODEvBkg->SetBackground(2,bkg3); + fAODEvBkg->SetBackground(3,bkg4); + */ + Reset(); + return kTRUE; + +} + +Bool_t AliFastJetFinder::ProcessEvent2() +{ + // + // 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;} + + // Leading particles + fInputFJ->SetHeader(fHeader); + fInputFJ->SetReader(fReader); + fInputFJ->FillInput(); + + // Jets + FindJets(); + + fJetBkg->SetHeader(fHeader); + fJetBkg->SetReader(fReader); + fJetBkg->SetFastJetInput(fInputFJ); + Double_t bkg1=fJetBkg->BkgFastJet(); + Double_t bkg2=fJetBkg->BkgChargedFastJet(); + Double_t bkg3=fJetBkg->BkgFastJetCone(fAODjets); + Double_t bkg4=fJetBkg->BkgRemoveJetLeading(fAODjets); + + fAODEvBkg->SetBackground(0,bkg1); + fAODEvBkg->SetBackground(1,bkg2); + fAODEvBkg->SetBackground(2,bkg3); + fAODEvBkg->SetBackground(3,bkg4); + + 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; + + Reset(); + + return kTRUE; +}