Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-05 08:12:56

0001 #include <fun4all/Fun4AllServer.h>
0002 
0003 #pragma GCC diagnostic push
0004 
0005 #pragma GCC diagnostic ignored "-Wundefined-internal"
0006 
0007 #include <kfparticle_sphenix/KFParticle_sPHENIX.h>
0008 
0009 #pragma GCC diagnostic pop
0010 
0011 R__LOAD_LIBRARY(libkfparticle_sphenix.so)
0012 
0013 namespace HeavyFlavorReco
0014 {
0015   // https://wiki.bnl.gov/sPHENIX/index.php/KFParticle
0016   string decayDescriptor = "[D0 -> K^- pi^+]cc";  //See twiki on how to set this
0017   string reconstructionName = "myD2KpiReco";         //Used for naming output folder, file and node
0018   string outputRecoFile;
0019   string outputHFEffFile;
0020   bool runTruthTrigger = false;  //Decay Finder
0021   bool runTrackEff = false;  //HF track efficiency
0022   bool getTruthInfo = false;      //Add truth matching to output file
0023   bool getCaloInfo = false;
0024   bool runTracking = false;  //Run tracking on DSTs
0025   bool buildTruthTable = false;
0026   bool runQA = false;        //Run QA, needs set up
0027   int VERBOSITY = 0;
0028 };  // namespace HeavyFlavorReco
0029 
0030 using namespace HeavyFlavorReco;
0031 
0032 void myHeavyFlavorReco()
0033 {
0034   Fun4AllServer *se = Fun4AllServer::instance();
0035 
0036   KFParticle_sPHENIX *kfparticle = new KFParticle_sPHENIX(reconstructionName);
0037   kfparticle->Verbosity(1);
0038 
0039   kfparticle->setDecayDescriptor(decayDescriptor);
0040 
0041   if (runTrackEff) kfparticle->setTrackMapNodeName("HFSelected_SvtxTrackMap");
0042 
0043   kfparticle->doTruthMatching(getTruthInfo);
0044   kfparticle->getDetectorInfo(false);
0045   kfparticle->getCaloInfo(getCaloInfo);
0046   kfparticle->getAllPVInfo(false);
0047   kfparticle->allowZeroMassTracks(true);
0048   kfparticle->saveDST(false);
0049   kfparticle->saveParticleContainer(false);
0050 
0051   bool fixToPV = false;
0052   bool useFakePV = true;
0053 
0054   if (useFakePV)
0055   {
0056     fixToPV = false;  //Constraining to a fake PV results in some gibberish variables
0057     kfparticle->useFakePrimaryVertex(true);
0058   }
0059 
0060   if (fixToPV)
0061   {
0062     kfparticle->constrainToPrimaryVertex(true);
0063     kfparticle->setMotherIPchi2(3);
0064     kfparticle->setFlightDistancechi2(-1.);
0065     kfparticle->setMinDIRA(0.90);
0066     kfparticle->setDecayLengthRange(-1*FLT_MAX, FLT_MAX);
0067   }
0068 
0069   //Track parameters
0070   kfparticle->setMinimumTrackPT(0.7);
0071   kfparticle->setMinimumTrackIPchi2(-1.);
0072   kfparticle->setMinimumTrackIP(-1.);
0073   kfparticle->setMaximumTrackchi2nDOF(3.);
0074 
0075   //Vertex parameters
0076   kfparticle->setMaximumVertexchi2nDOF(5);
0077   kfparticle->setMaximumDaughterDCA(0.005);
0078 
0079   //Parent parameters
0080   kfparticle->setMotherPT(0);
0081   kfparticle->setMinimumMass(1.50);
0082   kfparticle->setMaximumMass(2.20);
0083   kfparticle->setMaximumMotherVertexVolume(0.03);
0084 
0085   kfparticle->setOutputName(outputRecoFile);
0086 
0087   se->registerSubsystem(kfparticle);
0088 }
0089 
0090 void myDemoReco()
0091 {
0092   Fun4AllServer *se = Fun4AllServer::instance();
0093 
0094   KFParticle_sPHENIX *kfparticle = new KFParticle_sPHENIX(reconstructionName);
0095   kfparticle->Verbosity(1);
0096 
0097   kfparticle->setDecayDescriptor("[D+ -> {phi -> K^+ K^-} pi^+]cc");
0098   //kfparticle->setDecayDescriptor("B_s0 -> {J/psi -> e^+ e^-} {K_S0 -> pi^+ pi^-}");
0099   kfparticle->setTrackMapNodeName("HFSelected_SvtxTrackMap");
0100 
0101   kfparticle->doTruthMatching(true);
0102   kfparticle->getCaloInfo(false);
0103   kfparticle->allowZeroMassTracks(true);
0104   kfparticle->constrainToPrimaryVertex(true);
0105   kfparticle->useFakePrimaryVertex(false);
0106   kfparticle->setOutputName("Ds2KKpi.root");
0107 
0108   //Track parameters
0109   kfparticle->setMinimumTrackPT(0.);
0110   kfparticle->setMaximumTrackPTchi2(FLT_MAX);
0111   kfparticle->setMinimumTrackIPchi2(-1.);
0112   kfparticle->setMinimumTrackIP(-1.);
0113   kfparticle->setMaximumTrackchi2nDOF(100);
0114   kfparticle->setMinTPChits(0);
0115 
0116   //Vertex parameters
0117   kfparticle->setMaximumVertexchi2nDOF(100);
0118   kfparticle->setMaximumDaughterDCA(0.1);
0119 
0120   //Parent parameters
0121   kfparticle->setMotherPT(0);
0122   kfparticle->setMinimumMass(1.5);
0123   kfparticle->setMaximumMass(2.2);
0124   kfparticle->setMaximumMotherVertexVolume(0.1);
0125   kfparticle->setMotherIPchi2(FLT_MAX);
0126   kfparticle->setFlightDistancechi2(-1.);
0127   kfparticle->setMinDIRA(-1.1);
0128   kfparticle->setDecayLengthRange(-1, 100);
0129 
0130   //Intermediate parameters
0131   std::vector<std::pair<float, float>> intermediate_mass_range;
0132   intermediate_mass_range.push_back(make_pair(0.8, 1.2));
0133   //intermediate_mass_range.push_back(make_pair(0.4, 0.6));
0134   kfparticle->setIntermediateMassRange(intermediate_mass_range);
0135 
0136   std::vector<float> intermediate_min_pt = {0.0};//, 0.0};
0137   kfparticle->setIntermediateMinPT(intermediate_min_pt);
0138 
0139   std::vector<std::pair<float, float>> intermediate_IP_range;
0140   intermediate_IP_range.push_back(make_pair(-1., 5.));
0141   //intermediate_IP_range.push_back(make_pair(-1., 5.));
0142   kfparticle->setIntermediateIPRange(intermediate_IP_range);
0143 
0144   std::vector<std::pair<float, float>> intermediate_IPchi2_range;
0145   intermediate_IPchi2_range.push_back(make_pair(0., 400.));
0146   //intermediate_IPchi2_range.push_back(make_pair(0., 400.));
0147   kfparticle->setIntermediateIPchi2Range(intermediate_IPchi2_range);
0148 
0149   std::vector<float> intermediate_min_dira = {-1.1};//, -1.1};
0150   kfparticle->setIntermediateMinDIRA(intermediate_min_dira);
0151 
0152   std::vector<float> intermediate_min_FDchi2 = {-1.};//,, -1.};
0153   kfparticle->setIntermediateMinFDchi2(intermediate_min_FDchi2);
0154 
0155   std::vector<float> intermediate_max_vertex_vol = {1.1};//,, 0.9};
0156   kfparticle->setIntermediateMaxVertexVolume(intermediate_max_vertex_vol);
0157 
0158   se->registerSubsystem(kfparticle);
0159 }