Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-05 08:14: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 #include <resonancejettagging/ResonanceJetTagging.h>
0009 #include <fun4all/Fun4AllReturnCodes.h>
0010 
0011 #pragma GCC diagnostic pop
0012 
0013 R__LOAD_LIBRARY(libkfparticle_sphenix.so)
0014 
0015 namespace HFjets
0016 {
0017 namespace Enable
0018 {
0019   bool KFPARTICLE_SAVE_NTUPLE = false;
0020   bool KFPARTICLE_APPEND_TO_DST = true;
0021   bool KFPARTICLE_TRUTH_MATCH = true;
0022   bool KFPARTICLE_DETECTOR_INFO = false;
0023   bool KFPARTICLE_CALO_INFO = false;
0024   bool KFPARTICLE_ALL_PV_INFO = false;
0025   int KFPARTICLE_VERBOSITY = INT_MAX;
0026   bool runTracking = false;
0027   bool runTruthTrigger = true;
0028   string reconstructionName = "myTestReco";         //Used for naming output folder, file and nodes
0029 }  // namespace Enable
0030 
0031 
0032   
0033 
0034 namespace KFPARTICLE
0035 {
0036   bool runQA = false;
0037 
0038   std::string D0Name = "D0";
0039   std::string D0toK3piName = "D0TOK3PI";
0040   std::pair<float, float> D0MassRange(1.7, 2.0);
0041   bool D0Trigger = false;
0042   bool runD0toKpiReco = false;
0043   std::string D0toKpiDecayDescriptor = "[" + D0Name + " -> K^- pi^+]cc";
0044   bool runD0toK3piReco = false;
0045   std::string D0toK3piDecayDescriptor = "[" + D0Name + " -> K^- pi^- pi^+ pi^+]cc";
0046 
0047   std::string DplusName = "Dplus";
0048   std::pair<float, float> DplusMassRange(1.7, 2.00);
0049   bool DplusTrigger = false;
0050   bool runDplustoK2piReco = false;
0051   std::string DplustoK2piDecayDescriptor = "[" + DplusName + " -> K^- pi^+ pi^+]cc";
0052 
0053   std::string LambdacName = "Lambdac";
0054   std::pair<float, float> LambdacMassRange(2.15, 2.45);
0055   bool LambdacTrigger = false;
0056   bool runLambdactopKpiReco = false;
0057   std::string LambdacDecayDescriptor = "[" + LambdacName + " -> proton^+ K^- pi^+]cc";
0058 }
0059 
0060 namespace KFParticleBaseCut
0061 {
0062   bool KFPARTICLE_ALLOW_ZERO_MASS_TRACKS = true;
0063   bool constrainToPV = true;
0064   float minTrackPT = 0.7; // GeV
0065   float maxTrackchi2nDoF = 5; // An 3
0066   float minTrackIPchi2 = 0; // IP = DCA of track with vertex AuAu 9, An 9
0067   float minTrackIP = 0.0025; // cm, An 0 AuAu 0.008
0068   float maxVertexchi2nDoF = 5;
0069   float maxTrackTrackDCA = 0.008; // cm An 0.03
0070   float minMotherPT = 1.5; // GeV  An 0
0071 }  // namespace KFParticleBaseCut
0072 
0073 
0074 int KFParticle_Set_Reco(ResonanceJetTagging::TAG tag)
0075 {
0076 
0077   Fun4AllServer *se = Fun4AllServer::instance();
0078 
0079   std::string particle_name;
0080   switch (tag) {
0081     case ResonanceJetTagging::TAG::D0:
0082       particle_name = KFPARTICLE::D0Name;
0083       break;
0084     case ResonanceJetTagging::TAG::D0TOK3PI:
0085       particle_name = KFPARTICLE::D0toK3piName;
0086       break;
0087     case ResonanceJetTagging::TAG::DPLUS:
0088       particle_name = KFPARTICLE::DplusName;
0089       break;
0090     case ResonanceJetTagging::TAG::LAMBDAC:
0091       particle_name = KFPARTICLE::LambdacName;
0092       break;
0093     default:
0094       std::cout<<"ERROR:decay parameters not set, ABORTING!";
0095       return Fun4AllReturnCodes::ABORTRUN;
0096       break;
0097 
0098   }
0099 
0100   KFParticle_sPHENIX *kfparticle = new KFParticle_sPHENIX("KFParticle_" + particle_name + "_Reco");
0101   
0102   switch (tag) {
0103     case ResonanceJetTagging::TAG::D0:
0104       kfparticle->setDecayDescriptor(KFPARTICLE::D0toKpiDecayDescriptor);
0105       kfparticle->setContainerName(KFPARTICLE::D0Name);
0106       kfparticle->setOutputName("KFParticleOutput_" + KFPARTICLE::D0Name + "_reconstruction.root");
0107       break;
0108     case ResonanceJetTagging::TAG::D0TOK3PI:
0109       kfparticle->setDecayDescriptor(KFPARTICLE::D0toK3piDecayDescriptor);
0110       kfparticle->setContainerName(KFPARTICLE::D0toK3piName);
0111       kfparticle->setOutputName("KFParticleOutput_" + KFPARTICLE::D0toK3piName + "_reconstruction.root");
0112       break;
0113     case ResonanceJetTagging::TAG::DPLUS:
0114       kfparticle->setDecayDescriptor(KFPARTICLE::DplustoK2piDecayDescriptor);
0115       kfparticle->setContainerName(KFPARTICLE::DplusName);
0116       kfparticle->setOutputName("KFParticleOutput_" + KFPARTICLE::DplusName + "_reconstruction.root");
0117       break;
0118     case ResonanceJetTagging::TAG::LAMBDAC:
0119       kfparticle->setDecayDescriptor(KFPARTICLE::LambdacDecayDescriptor);
0120       kfparticle->setContainerName(KFPARTICLE::LambdacName);
0121       kfparticle->setOutputName("KFParticleOutput_" + KFPARTICLE::LambdacName + "_reconstruction.root");
0122       break;
0123     default:
0124       std::cout<<"ERROR:decay parameters not set, ABORTING!";
0125       return Fun4AllReturnCodes::ABORTRUN;
0126       break;
0127   }
0128 
0129   kfparticle->Verbosity(Enable::KFPARTICLE_VERBOSITY);
0130   kfparticle->saveDST(Enable::KFPARTICLE_APPEND_TO_DST);
0131   kfparticle->saveOutput(Enable::KFPARTICLE_SAVE_NTUPLE);
0132   kfparticle->doTruthMatching(Enable::KFPARTICLE_TRUTH_MATCH);
0133   kfparticle->getDetectorInfo(Enable::KFPARTICLE_DETECTOR_INFO);
0134   kfparticle->getCaloInfo(Enable::KFPARTICLE_CALO_INFO);
0135   kfparticle->getAllPVInfo(Enable::KFPARTICLE_ALL_PV_INFO);
0136   
0137 
0138   //Track parameters
0139   kfparticle->setMinimumTrackPT(KFParticleBaseCut::minTrackPT);
0140   kfparticle->setMaximumTrackchi2nDOF(KFParticleBaseCut::maxTrackchi2nDoF);
0141   kfparticle->setMinimumTrackIPchi2(KFParticleBaseCut::minTrackIPchi2);
0142   kfparticle->setMinimumTrackIP(KFParticleBaseCut::minTrackIP);
0143   kfparticle->allowZeroMassTracks(KFParticleBaseCut::KFPARTICLE_ALLOW_ZERO_MASS_TRACKS);
0144 
0145   //Vertex parameters
0146   kfparticle->setMaximumVertexchi2nDOF(KFParticleBaseCut::maxVertexchi2nDoF);
0147   kfparticle->setMaximumDaughterDCA(KFParticleBaseCut::maxTrackTrackDCA);
0148   kfparticle->constrainToPrimaryVertex(KFParticleBaseCut::constrainToPV);
0149 
0150   //Parent param
0151   kfparticle->setMotherPT(KFParticleBaseCut::minMotherPT);
0152 
0153   switch (tag) {
0154     case ResonanceJetTagging::TAG::D0:
0155       kfparticle->setMinimumMass(KFPARTICLE::D0MassRange.first);
0156       kfparticle->setMaximumMass(KFPARTICLE::D0MassRange.second);
0157       kfparticle->setMinDIRA(0.9); //AuAu 0.98 An 0.98
0158       kfparticle->setMotherIPchi2(3); 
0159       kfparticle->setFlightDistancechi2(0);
0160      // kfparticle->setNumberOfTracks(2);
0161       kfparticle->setMaximumDaughterDCA(KFParticleBaseCut::maxTrackTrackDCA); //AuAu 0.005 An 0.03
0162       break;
0163     case ResonanceJetTagging::TAG::D0TOK3PI:
0164       kfparticle->setMinimumMass(KFPARTICLE::D0MassRange.first);
0165       kfparticle->setMaximumMass(KFPARTICLE::D0MassRange.second);
0166       kfparticle->setMinDIRA(0.95);
0167       kfparticle->setMotherIPchi2(15); 
0168       kfparticle->setFlightDistancechi2(0);
0169      // kfparticle->setNumberOfTracks(4);
0170       kfparticle->setMaximumDaughterDCA(KFParticleBaseCut::maxTrackTrackDCA);
0171       break;
0172     case ResonanceJetTagging::TAG::DPLUS:
0173       kfparticle->setMinimumMass(KFPARTICLE::DplusMassRange.first);
0174       kfparticle->setMaximumMass(KFPARTICLE::DplusMassRange.second);
0175       std::cout<<"ERROR: TAG::DPLUS decay parameters not set, ABORTING!";
0176       return Fun4AllReturnCodes::ABORTRUN;
0177       break;
0178     case ResonanceJetTagging::TAG::LAMBDAC:
0179       kfparticle->setMinimumMass(KFPARTICLE::LambdacMassRange.first);
0180       kfparticle->setMaximumMass(KFPARTICLE::LambdacMassRange.second);
0181       std::cout<<"ERROR: TAG::Lambdac decay parameters not set, ABORTING!";
0182       return Fun4AllReturnCodes::ABORTRUN;
0183       break;
0184     default:
0185       std::cout<<"ERROR:decay parameters not set, ABORTING!";
0186       return Fun4AllReturnCodes::ABORTRUN;
0187       break;
0188   }
0189 
0190   se->registerSubsystem(kfparticle);
0191 
0192   //KFPARTICLE::runD0Reco = true;
0193 
0194   return 0;
0195 }
0196 } // namespace HFjets
0197