]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - JETAN/FASTJETAN/AliFastJetFinder.cxx
Split: removed dirs now in AliPhysics
[u/mrichter/AliRoot.git] / JETAN / FASTJETAN / AliFastJetFinder.cxx
diff --git a/JETAN/FASTJETAN/AliFastJetFinder.cxx b/JETAN/FASTJETAN/AliFastJetFinder.cxx
deleted file mode 100644 (file)
index ddce477..0000000
+++ /dev/null
@@ -1,369 +0,0 @@
-/**************************************************************************
- * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- *                                                                        *
- * Author: The ALICE Off-line Project.                                    *
- * Contributors are mentioned in the code where appropriate.              *
- *                                                                        *
- * Permission to use, copy, modify and distribute this software and its   *
- * documentation strictly for non-commercial purposes is hereby granted   *
- * without fee, provided that the above copyright notice appears in all   *
- * copies and that both the copyright notice and this permission notice   *
- * appear in the supporting documentation. The authors make no claims     *
- * about the suitability of this software for any purpose. It is          *
- * provided "as is" without express or implied warranty.                  *
- **************************************************************************/
-/* $Id$ */
-
-//---------------------------------------------------------------------
-// FastJet v2.3.4 finder algorithm interface
-// Last modification: Neutral cell energy included in the jet reconstruction
-//
-// Authors: Rafael.Diaz.Valdes@cern.ch
-//          Magali.estienne@subatech.in2p3.fr (neutral part + bg subtraction option)
-//
-// ** 2011 magali.estienne@subatech.in2p3.fr &  alexandre.shabetai@cern.ch
-// new implementation of background subtraction
-// allowing to subtract bkg using a different algo than the one used for signal jets
-//---------------------------------------------------------------------
-
-#include <Riostream.h>
-
-#include "AliFastJetFinder.h"
-#include "AliFastJetHeaderV1.h"
-#include "AliFastJetInput.h"
-#include "AliFastJetBkg.h"
-#include "AliAODJetEventBackground.h"
-#include "AliAODJet.h"
-
-#include "fastjet/PseudoJet.hh"
-#include "fastjet/ClusterSequenceArea.hh"
-#include "fastjet/AreaDefinition.hh"
-#include "fastjet/JetDefinition.hh"
-
-#include<vector> 
-
-using namespace std;
-
-ClassImp(AliFastJetFinder)
-
-////////////////////////////////////////////////////////////////////////
-
-AliFastJetFinder::AliFastJetFinder():
-  AliJetFinder(),
-  fInputFJ(new AliFastJetInput()),
-  fJetBkg(new  AliFastJetBkg())
-{
-  // Constructor
-}
-
-//____________________________________________________________________________
-AliFastJetFinder::~AliFastJetFinder()
-{
-  // destructor
-  delete  fInputFJ;
-  delete  fJetBkg;
-
-}
-
-//______________________________________________________________________________
-void AliFastJetFinder::FindJets()
-{
-  // runs a FASTJET based algo
-
-  //pick up fastjet header
-  AliFastJetHeaderV1 *header = (AliFastJetHeaderV1*)fHeader;
-  Int_t  debug  = header->GetDebug();     // debug option
-  Bool_t bgMode = header->GetBGMode();    // choose to subtract BG or not
-  if(debug>0) cout<<"----------in AliFastJetFinder::FindJets() ------------------"<<endl;
-
-  // RUN ALGORITHM  
-  // read input particles -----------------------------
-
-  vector<fastjet::PseudoJet> inputParticles=fInputFJ->GetInputParticles();
-  if(inputParticles.size()==0){
-    if(debug>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();
-  double rBkgParam = header->GetRparamBkg();
-  fastjet::Strategy strategy = header->GetStrategy();
-  fastjet::RecombinationScheme recombScheme = header->GetRecombScheme();
-  fastjet::JetAlgorithm algorithm = header->GetAlgorithm(); 
-  fastjet::JetDefinition jetDef(algorithm, rParam, recombScheme, strategy);
-
-  // create an object that specifies how we to define the area
-  fastjet::AreaDefinition areaDef;
-  double ghostEtamax       = header->GetGhostEtaMax(); 
-  double ghostArea         = header->GetGhostArea(); 
-  int    activeAreaRepeats = header->GetActiveAreaRepeats(); 
-  
-  // now create the object that holds info about ghosts
-  fastjet::GhostedAreaSpec ghostSpec(ghostEtamax, activeAreaRepeats, ghostArea);
-  // and from that get an area definition
-  fastjet::AreaType areaType = header->GetAreaType();
-  areaDef = fastjet::AreaDefinition(areaType,ghostSpec);
-  
-  //***************************** JETS FINDING
-  // run the jet clustering with the above jet definition
-  fastjet::ClusterSequenceArea clust_seq(inputParticles, jetDef, areaDef);
-
-  vector<fastjet::PseudoJet> jets;
-
-  if(bgMode) // Do BG subtraction directly with the same algorithm (cambridge or kt) for jet signal and background
-    {
-      //***************************** JETS FINDING FOR RHO ESTIMATION
-      // run the jet clustering with the above jet definition
-      fastjet::JetAlgorithm algorithmBkg = header->GetBGAlgorithm();
-      fastjet::JetDefinition jetDefBkg(algorithmBkg, rBkgParam, recombScheme, strategy);
-      fastjet::ClusterSequenceArea clust_seq_bkg(inputParticles, jetDefBkg, areaDef);
-
-      // save a comment in the header
-      TString comment = "Running FastJet algorithm with the following setup. ";
-      comment+= "Jet definition: ";
-      comment+= TString(jetDef.description());
-      comment+= "Jet bckg definition: ";
-      comment+= TString(jetDefBkg.description());
-      comment+= ". Area definition: ";
-      comment+= TString(areaDef.description());
-      comment+= ". Strategy adopted by FastJet: ";
-      comment+= TString(clust_seq.strategy_string());
-      header->SetComment(comment);
-      if(debug>0){
-       cout << "--------------------------------------------------------" << endl;
-       cout << comment << endl;
-       cout << "--------------------------------------------------------" << endl;
-      }
-      
-      // extract the inclusive jets sorted by pt
-      double ptmin = header->GetPtMin(); 
-      vector<fastjet::PseudoJet> inclusiveJets = clust_seq.inclusive_jets();
-      
-      //subtract background // ===========================================
-      // set the rapididty , phi range within which to study the background 
-      double rapMax = header->GetRapMax(); 
-      double rapMin = header->GetRapMin();
-      double phiMax = header->GetPhiMax();
-      double phiMin = header->GetPhiMin();
-      fastjet::RangeDefinition range(rapMin, rapMax, phiMin, phiMax);
-     
-      // Extract rho and sigma
-      Double_t rho = 0.;
-      Double_t sigma = 0.;
-      Double_t meanarea = 0.;
-      Bool_t kUse4VectorArea = header->Use4VectorArea();
-      vector<fastjet::PseudoJet> bkgJets = clust_seq_bkg.inclusive_jets();
-      clust_seq_bkg.get_median_rho_and_sigma(bkgJets,range, kUse4VectorArea, rho, sigma, meanarea, false);
-
-      // subtract background and extract jets bkg subtracted
-      vector<fastjet::PseudoJet> subJets = clust_seq.subtracted_jets(rho,ptmin);
-      
-      // sort jets into increasing pt
-      jets = sorted_by_pt(subJets);  
-
-    }
-
-  else { // No BG subtraction!!!!!!!! Default header is bgmode=0.
-    
-    // save a comment in the header
-    TString comment = "Running FastJet algorithm with the following setup. ";
-    comment+= "Jet definition: ";
-    comment+= TString(jetDef.description());
-    comment+= ". Strategy adopted by FastJet: ";
-    comment+= TString(clust_seq.strategy_string());
-    header->SetComment(comment);
-    if(debug>0){
-      cout << "--------------------------------------------------------" << endl;
-      cout << comment << endl;
-      cout << "--------------------------------------------------------" << endl;
-    }
-  
-    // extract the inclusive jets with pt > ptmin, sorted by pt
-    double ptmin = header->GetPtMin(); 
-    vector<fastjet::PseudoJet> inclusiveJets = clust_seq.inclusive_jets(ptmin);
-    
-    jets = sorted_by_pt(inclusiveJets); 
-  
-  }
-   
-  for (size_t j = 0; j < jets.size(); j++) { // loop for jets     
-
-    double area      = clust_seq.area(jets[j]);
-    double areaError = clust_seq.area_error(jets[j]);
-
-    if(debug>0) printf("Jet found %5d %9.5f %8.5f %10.3f \n",(Int_t)j,jets[j].rap(),jets[j].phi(),jets[j].perp());
-
-    vector<fastjet::PseudoJet> constituents = clust_seq.constituents(jets[j]);
-    int nCon= constituents.size();
-    TArrayI ind(nCon);
-      
-    if ((jets[j].eta() > (header->GetJetEtaMax())) ||
-       (jets[j].eta() < (header->GetJetEtaMin())) ||
-       (jets[j].phi() > (header->GetJetPhiMax())) ||
-       (jets[j].phi() < (header->GetJetPhiMin())) ||
-       (jets[j].perp() < header->GetPtMin())) continue; // acceptance eta range and etmin
-
-    // go to write AOD  info
-    AliAODJet aodjet (jets[j].px(), jets[j].py(), jets[j].pz(), jets[j].E());
-    aodjet.SetEffArea(area,areaError);
-    //cout << "Printing jet " << endl;
-    if(debug>0) aodjet.Print("");
-      
-    for (int i=0; i < nCon; i++)
-      {
-       fastjet::PseudoJet mPart=constituents[i];
-       ind[i]=mPart.user_index();
-
-       // Jet constituents (charged tracks) added to the AliAODJet
-       AliJetCalTrkEvent* calEvt  = GetCalTrkEvent();
-       for(Int_t itrack=0; itrack<calEvt->GetNCalTrkTracks(); itrack++)
-         {
-           if(itrack==ind[i])
-             {
-               TObject *track = calEvt->GetCalTrkTrack(itrack)->GetTrackObject();
-               aodjet.AddTrack(track);
-             }
-         }
-      } // End loop on Constituents
-
-    AddJet(aodjet);
-           
-  } // end loop for jets
-
-}
-
-//____________________________________________________________________________
-void AliFastJetFinder::RunTest(const char* datafile)
-{
-  // This simple test run the kt algorithm for an ascii file testdata.dat
-
-  // read input particles -----------------------------
-  vector<fastjet::PseudoJet> inputParticles;
-  Float_t px,py,pz,en;
-  ifstream in;
-  Int_t nlines = 0;
-  // we assume a file basic.dat in the current directory
-  // this file has 3 columns of float data
-  in.open(datafile);
-  while (1) {
-    in >> px >> py >> pz >> en;
-    if (!in.good()) break;
-    //printf("px=%8f, py=%8f, pz=%8fn",px,py,pz);
-    nlines++;
-    inputParticles.push_back(fastjet::PseudoJet(px,py,pz,en)); 
-  }
-  //printf(" found %d pointsn",nlines);
-  in.close();
-  //////////////////////////////////////////////////
-  // create an object that represents your choice of jet algorithm, and 
-  // the associated parameters
-  double rParam = 1.0;
-  fastjet::Strategy strategy = fastjet::Best;
-  fastjet::RecombinationScheme recombScheme = fastjet::BIpt_scheme;
-  fastjet::JetDefinition jetDef(fastjet::kt_algorithm, rParam, recombScheme, strategy);
-  
-  // create an object that specifies how we to define the area
-  fastjet::AreaDefinition areaDef;
-  double ghostEtamax = 7.0;
-  double ghostArea    = 0.05;
-  int    activeAreaRepeats = 1;
-  
-  // now create the object that holds info about ghosts
-  fastjet::GhostedAreaSpec ghostSpec(ghostEtamax, activeAreaRepeats, ghostArea);
-  // and from that get an area definition
-  areaDef = fastjet::AreaDefinition(fastjet::active_area,ghostSpec);
-
-  // run the jet clustering with the above jet definition
-  fastjet::ClusterSequenceArea clust_seq(inputParticles, jetDef, areaDef);
-  
-  // tell the user what was done
-  cout << "--------------------------------------------------------" << endl;
-  cout << "Jet definition was: " << jetDef.description() << endl;
-  cout << "Area definition was: " << areaDef.description() << endl;
-  cout << "Strategy adopted by FastJet was "<< clust_seq.strategy_string()<<endl<<endl;
-  cout << "--------------------------------------------------------" << endl;
-  
-  // extract the inclusive jets with pt > 5 GeV, sorted by pt
-  double ptmin = 5.0;
-  vector<fastjet::PseudoJet> inclusiveJets = clust_seq.inclusive_jets(ptmin);
-  
-  cout << "Number of unclustered particles: " << clust_seq.unclustered_particles().size() << endl;
-  //subtract background // ===========================================
-  // set the rapididty range within which to study the background 
-  double rapMax = ghostEtamax - rParam;
-  fastjet::RangeDefinition range(rapMax);
-  // subtract background
-  vector<fastjet::PseudoJet> subJets =  clust_seq.subtracted_jets(range,ptmin);  
-  
-  // print them out //================================================
-  cout << "Printing inclusive jets  after background subtraction \n";
-  cout << "------------------------------------------------------\n";
-  // sort jets into increasing pt
-  vector<fastjet::PseudoJet> jets = sorted_by_pt(subJets);  
-
-  printf(" ijet   rap      phi        Pt         area  +-   err\n");
-  for (size_t j = 0; j < jets.size(); j++) {
-    double area      = clust_seq.area(jets[j]);
-    double areaError = clust_seq.area_error(jets[j]);
-    printf("%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);
-  }
-  cout << endl;
-  // ================================================================
-
-}
-
-//____________________________________________________________________________
-void AliFastJetFinder::WriteJHeaderToFile() const
-{
-  // Write Jet Header to file
-  fHeader->Write();
-
-}
-
-//____________________________________________________________________________
-Bool_t AliFastJetFinder::ProcessEvent()
-{
-  // Process one event
-  // Charged only or charged+neutral jets
-
-  fInputFJ->SetHeader(fHeader);
-  fInputFJ->SetCalTrkEvent(GetCalTrkEvent());
-  fInputFJ->FillInput();
-  
-  // Find Jets
-  FindJets(); 
-
-  // Background
-  if(fAODEvBkg){
-    AliFastJetHeaderV1 *header = (AliFastJetHeaderV1*)fHeader;
-
-    fJetBkg->SetHeader(fHeader);
-    fJetBkg->SetFastJetInput(fInputFJ);
-    
-     Int_t count = 0;  
-     if(header->GetBkgFastJetb()){
-        Double_t sigma1 = 0 , meanarea1= 0, bkg1 = 0;
-        fJetBkg->BkgFastJetb(bkg1,sigma1,meanarea1);
-        fAODEvBkg->SetBackground(count,bkg1,sigma1,meanarea1);
-        count++;
-     }
-
-     if(header->GetBkgFastJetWoHardest()){
-        Double_t sigma2 = 0 , meanarea2 = 0, bkg2 = 0;
-        fJetBkg->BkgFastJetWoHardest(bkg2,sigma2,meanarea2);
-        fAODEvBkg->SetBackground(count,bkg2,sigma2,meanarea2);
-        count++;
-     }
-
-  }  
-
-  Reset();  
-  return kTRUE;
-
-}