- Timestamp:
- Sep 11, 2008, 1:41:12 PM (16 years ago)
- Location:
- trunk/modules
- Files:
-
- 4 added
- 2 deleted
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/modules/MadGraphPartonSelector.cc
r2 r11 33 33 34 34 void InsertParticleID(Int_t pid); 35 void InsertAncestorID(Int_t pid); 35 void InsertExclAncestorID(Int_t pid); 36 void InsertInclAncestorID(Int_t pid); 36 37 37 38 private: 38 39 39 40 Bool_t hasBadAncestor(ExRootGenParticle *object); 41 Bool_t hasGoodAncestor(ExRootGenParticle *object); 40 42 41 43 TClonesArray *fBranchParticle; 42 44 43 45 set< Int_t > fParticleIDSet; 44 set< Int_t > fAncestorIDSet; 46 set< Int_t > fExclAncestorIDSet; 47 set< Int_t > fInclAncestorIDSet; 45 48 }; 46 49 … … 61 64 //------------------------------------------------------------------------------ 62 65 63 void MadGraphPartonClassifier::InsertAncestorID(Int_t pid) 64 { 65 fAncestorIDSet.insert(pid); 66 void MadGraphPartonClassifier::InsertExclAncestorID(Int_t pid) 67 { 68 fExclAncestorIDSet.insert(pid); 69 } 70 71 //------------------------------------------------------------------------------ 72 73 void MadGraphPartonClassifier::InsertInclAncestorID(Int_t pid) 74 { 75 fInclAncestorIDSet.insert(pid); 66 76 } 67 77 … … 76 86 set< Int_t >::const_iterator itParticleIDSet; 77 87 88 // keep all particles if there is no pid in the list 89 if(fExclAncestorIDSet.empty()) 90 { 91 return kFALSE; 92 } 93 78 94 for(i = 0; i < kMaxAncestors; ++i) 79 95 { … … 90 106 91 107 // skip particles with pid included in list 92 itAncestorIDSet = fAncestorIDSet.find(pidAbs); 93 94 if(itAncestorIDSet != fAncestorIDSet.end()) return kTRUE; 108 itAncestorIDSet = fExclAncestorIDSet.find(pidAbs); 109 110 if(itAncestorIDSet != fExclAncestorIDSet.end()) return kTRUE; 111 } 112 113 return kFALSE; 114 } 115 116 //------------------------------------------------------------------------------ 117 118 Bool_t MadGraphPartonClassifier::hasGoodAncestor(ExRootGenParticle *object) 119 { 120 const int kMaxAncestors = 10; 121 Int_t i, pidAbs; 122 ExRootGenParticle *particle = object; 123 set< Int_t >::const_iterator itAncestorIDSet; 124 set< Int_t >::const_iterator itParticleIDSet; 125 126 // keep all particles if there is no pid in the list 127 if(fInclAncestorIDSet.empty()) 128 { 129 return kTRUE; 130 } 131 132 for(i = 0; i < kMaxAncestors; ++i) 133 { 134 135 if(particle->M1 < 0 || particle->M2 > -1) return kFALSE; 136 137 // if(particle->PID == 21) return kFALSE; 138 139 particle = static_cast<ExRootGenParticle*>(fBranchParticle->At(particle->M1)); 140 141 if(particle->PID == 21) return kFALSE; 142 143 pidAbs = TMath::Abs(particle->PID); 144 145 // keep particles with pid included in list 146 itAncestorIDSet = fInclAncestorIDSet.find(pidAbs); 147 148 if(itAncestorIDSet != fInclAncestorIDSet.end()) return kTRUE; 95 149 } 96 150 … … 145 199 if(hasBadAncestor(particle)) return -1; 146 200 201 if(!hasGoodAncestor(particle)) return -1; 202 147 203 return 0; 148 204 } … … 197 253 { 198 254 pid = param[i].GetInt(); 199 fClassifier->InsertAncestorID(pid); 255 fClassifier->InsertExclAncestorID(pid); 256 } 257 258 // read ancestor IDs from configuration file and setup classifier 259 260 param = GetParam("IncludedAncestorIDs"); 261 sizeParam = param.GetSize(); 262 263 for(i = 0; i < sizeParam; ++i) 264 { 265 pid = param[i].GetInt(); 266 fClassifier->InsertInclAncestorID(pid); 200 267 } 201 268 … … 209 276 210 277 void MadGraphPartonSelector::Finish() 211 { 278 { 212 279 if(fFilter) delete fFilter; 213 280 if(fClassifier) delete fClassifier; -
trunk/modules/MadGraphShowerPartonSelector.cc
r2 r11 35 35 void SetEtaMax(Double_t eta); 36 36 void InsertParticleID(Int_t pid); 37 void InsertAncestorID(Int_t pid); 37 void InsertExclAncestorID(Int_t pid); 38 void InsertInclAncestorID(Int_t pid); 38 39 void SetHadronizationInfo(Bool_t info); 39 40 … … 41 42 42 43 Bool_t hasBadAncestor(ExRootGenParticle *object); 44 Bool_t hasGoodAncestor(ExRootGenParticle *object); 43 45 44 46 Double_t fEtaMax; … … 47 49 48 50 set< Int_t > fParticleIDSet; 49 set< Int_t > fAncestorIDSet; 51 set< Int_t > fExclAncestorIDSet; 52 set< Int_t > fInclAncestorIDSet; 50 53 }; 51 54 … … 73 76 //------------------------------------------------------------------------------ 74 77 75 void MadGraphShowerPartonClassifier::InsertAncestorID(Int_t pid) 76 { 77 fAncestorIDSet.insert(pid); 78 void MadGraphShowerPartonClassifier::InsertExclAncestorID(Int_t pid) 79 { 80 fExclAncestorIDSet.insert(pid); 81 } 82 83 //------------------------------------------------------------------------------ 84 85 void MadGraphShowerPartonClassifier::InsertInclAncestorID(Int_t pid) 86 { 87 fInclAncestorIDSet.insert(pid); 78 88 } 79 89 … … 96 106 if(particle->PID == 21) return kFALSE; 97 107 108 // keep all particles if there is no pid in the list 109 if(fExclAncestorIDSet.empty()) 110 { 111 return kFALSE; 112 } 113 98 114 pidAbs = TMath::Abs(particle->PID); 99 115 100 116 // skip particles with pid included in list 101 itAncestorIDSet = f AncestorIDSet.find(pidAbs);102 103 if(itAncestorIDSet != f AncestorIDSet.end()) return kTRUE;117 itAncestorIDSet = fExclAncestorIDSet.find(pidAbs); 118 119 if(itAncestorIDSet != fExclAncestorIDSet.end()) return kTRUE; 104 120 if(particle->M2 > -1) return kFALSE; 105 121 … … 115 131 116 132 // skip particles with pid included in list 117 itAncestorIDSet = fAncestorIDSet.find(pidAbs); 118 119 if(itAncestorIDSet != fAncestorIDSet.end()) return kTRUE; 133 itAncestorIDSet = fExclAncestorIDSet.find(pidAbs); 134 135 if(itAncestorIDSet != fExclAncestorIDSet.end()) return kTRUE; 136 if(particle->M2 > -1) return kFALSE; 137 } 138 139 return kFALSE; 140 } 141 142 //------------------------------------------------------------------------------ 143 144 Bool_t MadGraphShowerPartonClassifier::hasGoodAncestor(ExRootGenParticle *object) 145 { 146 const int kMaxAncestors = 10; 147 Int_t i, pidAbs; 148 ExRootGenParticle *particle = object; 149 set< Int_t >::const_iterator itAncestorIDSet; 150 151 for(i = 0; i < kMaxAncestors && particle->Status != 3; ++i) 152 { 153 if(particle->M1 < 0) return kFALSE; 154 155 particle = static_cast<ExRootGenParticle*>(fBranchParticle->At(particle->M1)); 156 } 157 158 if(particle->PID == 21) return kFALSE; 159 160 // keep all particles if there is no pid in the list 161 if(fInclAncestorIDSet.empty()) 162 { 163 return kTRUE; 164 } 165 166 pidAbs = TMath::Abs(particle->PID); 167 168 // keep particles with pid included in list 169 itAncestorIDSet = fInclAncestorIDSet.find(pidAbs); 170 171 if(itAncestorIDSet != fInclAncestorIDSet.end()) return kTRUE; 172 if(particle->M2 > -1) return kFALSE; 173 174 for(i = 0; i < kMaxAncestors; ++i) 175 { 176 if(particle->M1 < 0) return kFALSE; 177 178 if(particle->PID == 21) return kFALSE; 179 180 particle = static_cast<ExRootGenParticle*>(fBranchParticle->At(particle->M1)); 181 182 pidAbs = TMath::Abs(particle->PID); 183 184 // keep particles with pid included in list 185 itAncestorIDSet = fInclAncestorIDSet.find(pidAbs); 186 187 if(itAncestorIDSet != fInclAncestorIDSet.end()) return kTRUE; 120 188 if(particle->M2 > -1) return kFALSE; 121 189 } … … 159 227 if(hasBadAncestor(particle)) return -1; 160 228 229 if(!hasGoodAncestor(particle)) return -1; 230 161 231 return 0; 162 232 } … … 214 284 { 215 285 pid = param[i].GetInt(); 216 fClassifier->InsertAncestorID(pid); 286 fClassifier->InsertExclAncestorID(pid); 287 } 288 289 // read ancestor IDs from configuration file and setup classifier 290 291 param = GetParam("IncludedAncestorIDs"); 292 sizeParam = param.GetSize(); 293 294 for(i = 0; i < sizeParam; ++i) 295 { 296 pid = param[i].GetInt(); 297 fClassifier->InsertInclAncestorID(pid); 217 298 } 218 299 -
trunk/modules/ModulesLinkDef.h
r2 r11 7 7 #include "modules/MadGraphMatchingTreeWriter.h" 8 8 #include "modules/MadGraphKtJetFinder.h" 9 #include "modules/MadGraphConeJetFinder.h" 9 #include "modules/MadGraphCDFConeJetFinder.h" 10 #include "modules/MadGraphSISConeJetFinder.h" 10 11 #include "modules/MadGraphIsolatedLeptonFinder.h" 11 12 #include "modules/PythiaFix.h" … … 29 30 #pragma link C++ class MadGraphMatchingTreeWriter+; 30 31 #pragma link C++ class MadGraphKtJetFinder+; 31 #pragma link C++ class MadGraphConeJetFinder+; 32 #pragma link C++ class MadGraphCDFConeJetFinder+; 33 #pragma link C++ class MadGraphSISConeJetFinder+; 32 34 #pragma link C++ class MadGraphIsolatedLeptonFinder+; 33 35 #pragma link C++ class PythiaFix+;
Note:
See TracChangeset
for help on using the changeset viewer.