00001 package cedar.jetweb.generator; 00002 00003 import java.util.HashMap; 00004 import java.util.Map; 00005 import java.util.Vector; 00006 import java.util.Map.Entry; 00007 import java.util.Iterator; 00008 00009 import java.io.BufferedWriter; 00010 import java.io.IOException; 00011 00012 import cedar.jetweb.JetWebException; 00013 00014 import cedar.jetweb.model.MCProcessType; 00015 import cedar.jetweb.model.Model; 00016 import cedar.jetweb.db.DBGeneratorManager; 00017 import cedar.jetweb.job.Cut; 00018 import cedar.jetweb.job.CutCollection; 00019 00023 public class Pythia extends Generator { 00024 00025 private static boolean particleNameMapInit_ = true; 00026 private static HashMap<String, String> particleNameMap_ = 00027 new HashMap<String, String>(); 00028 00029 private boolean processNamesInit_ = true; 00030 00031 private static HashMap<Integer, String> processNameMap_ = null; 00032 private static HashMap<String, Vector<Integer>> 00033 processSelectorMap_ = null; 00034 private static HashMap<String, Integer> MSTPMap_ = null; 00035 00036 private static HashMap<String, Vector<Object>> 00037 allowedCuts_ = new HashMap<String, Vector<Object>>(); 00038 private static boolean allowedCutsInit_ = true; 00039 00044 protected Pythia(String version) { 00045 generatorName = "pythia"; 00046 generatorVersion = version; 00047 00048 // Here we should read the default parameters from the DB. 00049 00050 } 00051 00058 public String getProcessSelector(MCProcessType proc) { 00059 00060 StringBuffer sel = new StringBuffer(""); 00061 00062 if(processNamesInit_) initProcessNames(); 00063 00064 Vector<Integer> PIds = proc.getCompatibleProcesses(); 00065 00066 System.out.println("getProcessSelector: PIds = "+ 00067 PIds); 00068 00069 Vector<Integer> MSTP14 = new Vector<Integer>(PIds.size()); 00070 00071 boolean found = false; 00072 00073 for(Integer Id: PIds){ 00074 00075 MCProcessType subProc = new MCProcessType(Id); 00076 Vector<Integer> msubs = 00077 processSelectorMap_.get(subProc.getMCProcessName()); 00078 00079 Integer mstp = MSTPMap_.get(subProc.getMCProcessName()); 00080 if(mstp!=null && 00081 !MSTP14.contains(mstp)){ 00082 MSTP14.add(mstp); 00083 } 00084 if(msubs!=null){ 00085 found = true; 00086 for(Integer msub: msubs){ 00087 sel.append("MSUB " + msub + " = 1\n"); 00088 } 00089 sel.append("C \n"); 00090 } 00091 } 00092 if(proc.isPhotoproduction()){ 00093 if(MSTP14.size()!=0){ 00094 sel.append("HZMSTP14 "); 00095 00096 for(Integer mstp: MSTP14){ 00097 sel.append(mstp+" "); 00098 } 00099 sel.append("\n"); 00100 sel.append("C\n"); 00101 } 00102 return sel.toString(); 00103 } 00104 boolean charm = proc.getMCProcessName().equals(MCProcessType.CHARM); 00105 boolean beauty = proc.getMCProcessName().equals(MCProcessType.BEAUTY); 00106 00107 if(charm ||beauty){ 00108 00109 int kfCode = charm? 4: 5; 00110 int antiKFCode = -kfCode; 00111 int jj=0; 00112 for(int ii=-40; ii!=antiKFCode; ++ii){ 00113 jj = ii+41; 00114 sel.append("KFIN2 " + jj + " = 0\n"); 00115 } 00116 jj = antiKFCode + 41; 00117 sel.append("KFIN2 "+ jj + " = 1\n"); 00118 for(int ii=antiKFCode + 1; ii!=kfCode; ++ii){ 00119 jj = ii + 41; 00120 sel.append("KFIN2 " + jj +" =0\n"); 00121 } 00122 jj = kfCode + 41; 00123 sel.append("KFIN2 " + jj + " = 1\n"); 00124 for(int ii=kfCode +1; ii!=41; ++ii){ 00125 jj = ii+41; 00126 sel.append("KFIN2 " + jj +" =0\n"); 00127 } 00128 } 00129 00130 if (proc.getMCProcessName().equals(MCProcessType.MINBIAS)){ 00131 if (proc.isPP()){ 00132 //StringBuffer sel = new StringBuffer("MSEL 1\n"); 00133 return sel.toString(); 00134 } else if (proc.isGammaGamma()){ 00135 //StringBuffer sel = new StringBuffer("MSEL 1\n"); 00136 sel.append("HZMSTP14 0 4 1\n"); 00137 return sel.toString(); 00138 } else { 00139 return "C Unknown process type"; 00140 } 00141 00142 } else if (proc.getMCProcessName().equals(MCProcessType.HIGHET)|| 00143 proc.getMCProcessName().equals(MCProcessType.CHARM)|| 00144 proc.getMCProcessName().equals(MCProcessType.BEAUTY)){ 00145 00146 if (proc.isPhotoproduction()){ 00147 //StringBuffer sel = new StringBuffer("HZMSTP14 0 1\n"); 00148 00149 //don't think we need hzmstp now because 00150 //direct and resolved in 2 separate runs 00151 00152 //sel.append("HZMSTP14 0 1\n"); 00153 //sel.append("MSEL 1\n"); 00154 return sel.toString(); 00155 } else if (proc.isPP()){ 00156 //StringBuffer sel = new StringBuffer("MSEL 1\n"); 00157 00158 return sel.toString(); 00159 } else if (proc.isGammaGamma()){ 00160 //StringBuffer sel = new StringBuffer("MSEL 1\n"); 00161 sel.append("HZMSTP14 0 4 1\n"); 00162 return sel.toString(); 00163 } else if(!found){ 00164 return "C Unknown process type"; 00165 } 00166 } else if(!found){ 00167 return "C Unknown process type"; 00168 }else{ 00169 return sel.toString(); 00170 } 00171 00172 return(sel.toString()); 00173 } 00174 00178 // public String getMCProcessName(HashMap<String,HashMap<Integer,Integer>> parameters) 00179 public String getMCProcessName(HashMap<String, Object> parameters) 00180 throws JetWebException{ 00181 00182 //System.out.println("Calling Pythia.getMCProcessName"); 00183 00184 00185 if (processNamesInit_) initProcessNames(); 00186 00187 // System.out.println("parameters = "+parameters); 00188 00189 00190 //Integer msel = intParameters.get("MSEL"); 00191 HashMap<Integer, Integer> msub = 00192 (HashMap<Integer, Integer>)parameters.get("MSUB"); 00193 HashMap<Integer, HashMap<Integer, Integer>> kfin = 00194 (HashMap<Integer, HashMap<Integer, Integer>>) 00195 parameters.get("KFIN"); 00196 HashMap<Integer, Integer> mstp = 00197 (HashMap<Integer, Integer>) parameters.get("MSTP"); 00198 00199 // System.out.println("kfin = "+kfin); 00200 00201 if(msub==null|| 00202 //kfin==null|| 00203 mstp==null){ 00204 throw new JetWebException 00205 ("MSUB and/or KFIN not present in realParameterArrays", 00206 "cedar.jetweb.generator.pythia: getMCProcessType()"); 00207 } 00208 00209 Vector<Integer> isubs = new Vector<Integer>(); 00210 00211 Iterator it = msub.entrySet().iterator(); 00212 00213 while(it.hasNext()){ 00214 Entry ent = (Entry)it.next(); 00215 Integer val = (Integer)ent.getValue(); 00216 if(val!=0){ 00217 Integer isub = (Integer)ent.getKey(); 00218 isubs.add(isub); 00219 } 00220 00221 } 00222 00223 boolean cOnly = false; 00224 boolean bOnly = false; 00225 boolean anythingElse = false; 00226 00227 it = kfin.entrySet().iterator(); 00228 00229 while(it.hasNext()){ 00230 Entry ent = (Entry)it.next(); 00231 00232 Integer key = (Integer) ent.getKey(); 00233 00234 if(key.equals(2)){ 00235 Iterator row = 00236 ((HashMap<Integer, Integer>) ent.getValue()).entrySet().iterator(); 00237 while(row.hasNext()){ 00238 Entry rowEnt = (Entry)row.next(); 00239 Integer col = (Integer)rowEnt.getKey(); 00240 Integer val = (Integer)rowEnt.getValue(); 00241 00242 if(col.equals(4) || col.equals(-4)){ 00243 if(!val.equals(0)) cOnly = true; 00244 }else if(col.equals(5) || col.equals(-5)){ 00245 if(!val.equals(0)) bOnly = true; 00246 }else{ 00247 if(!val.equals(0)) anythingElse = true; 00248 } 00249 00250 } 00251 } 00252 } 00253 00254 anythingElse = anythingElse || (cOnly && bOnly); 00255 cOnly = cOnly && !anythingElse; 00256 bOnly = bOnly && !anythingElse; 00257 00258 String processName = processNameMap_.get(isubs.get(0)); 00259 00260 System.out.println("Pythia: found process type "+ 00261 processName); 00262 00263 for(Integer ii=1; ii!= isubs.size(); ++ii){ 00264 if(!processNameMap_.get(isubs.get(ii)).equals(processName)){ 00265 throw new JetWebException 00266 ("More than one process type present", 00267 "cedar.jetweb.generator.Pythia: getMCProcessType()"); 00268 } 00269 } 00270 00271 if(cOnly){ 00272 processName = "Charm "+processName; 00273 }else if(bOnly){ 00274 processName = "Beauty "+processName; 00275 } 00276 00277 if(processName.equals(MCProcessType.HIGHET)){ 00278 if(cOnly){ 00279 processName = MCProcessType.CHARM; 00280 }else if(bOnly){ 00281 processName = MCProcessType.BEAUTY; 00282 } 00283 }else if(processName.equals(MCProcessType.DIS)){ 00284 if(cOnly){ 00285 processName = MCProcessType.CHARMDIS; 00286 }else if(bOnly){ 00287 processName = MCProcessType.BEAUTYDIS; 00288 } 00289 } 00290 return processName; 00291 00292 } 00293 00294 private void initAllowedCuts(){ 00295 00296 // Initialises the names of the allowed cuts and maps them onto the 00297 // equivalent Pythia parameters 00298 // Only PTMin for the moment 00299 00300 if(!allowedCutsInit_) return; 00301 allowedCutsInit_ = false; 00302 00303 Vector<Object> tmp = new Vector<Object>(2); 00304 tmp.add(new String("CKIN")); 00305 tmp.add(new Integer(3)); 00306 00307 allowedCuts_.put("PTMin", tmp); 00308 00309 return; 00310 } 00311 00312 private void initProcessNames(){ 00313 00314 if(!processNamesInit_) return; 00315 processNamesInit_ = false; 00316 00317 processSelectorMap_ = new HashMap<String, Vector<Integer>>(); 00318 MSTPMap_ = new HashMap<String, Integer>(); 00319 00320 Vector<Integer> PIds = new Vector<Integer>(); 00321 00322 PIds.add(11); 00323 PIds.add(12); 00324 PIds.add(13); 00325 PIds.add(28); 00326 PIds.add(53); 00327 PIds.add(68); 00328 00329 //processSelectorMap_.put(MCProcessType.HIGHET, PIds); 00330 processSelectorMap_.put(MCProcessType.PARTONPARTON, PIds); 00331 processSelectorMap_.put(MCProcessType.CHARMPARTONPARTON, PIds); 00332 processSelectorMap_.put(MCProcessType.BEAUTYPARTONPARTON, PIds); 00333 MSTPMap_.put(MCProcessType.PARTONPARTON, 1); 00334 MSTPMap_.put(MCProcessType.CHARMPARTONPARTON, 1); 00335 00336 PIds = new Vector<Integer>(); 00337 00338 PIds.add(33); 00339 PIds.add(34); 00340 PIds.add(54); 00341 //PIds.add(58); 00342 PIds.add(80); 00343 PIds.add(84); 00344 //PIds.add(85); 00345 00346 processSelectorMap_.put(MCProcessType.PHOTONPARTON, PIds); 00347 processSelectorMap_.put(MCProcessType.CHARMPHOTONPARTON, PIds); 00348 processSelectorMap_.put(MCProcessType.BEAUTYPHOTONPARTON, PIds); 00349 MSTPMap_.put(MCProcessType.PHOTONPARTON, 0); 00350 MSTPMap_.put(MCProcessType.CHARMPHOTONPARTON, 0); 00351 MSTPMap_.put(MCProcessType.BEAUTYPHOTONPARTON, 0); 00352 00353 PIds = new Vector<Integer>(); 00354 PIds.add(58); 00355 PIds.add(85); 00356 processSelectorMap_.put(MCProcessType.PHOTONPHOTON, PIds); 00357 processSelectorMap_.put(MCProcessType.CHARMPHOTONPHOTON, PIds); 00358 processSelectorMap_.put(MCProcessType.BEAUTYPHOTONPHOTON, PIds); 00359 MSTPMap_.put(MCProcessType.PHOTONPHOTON, 4); 00360 MSTPMap_.put(MCProcessType.CHARMPHOTONPHOTON, 4); 00361 MSTPMap_.put(MCProcessType.BEAUTYPHOTONPHOTON, 4); 00362 00363 PIds = new Vector<Integer>(); 00364 00365 PIds.add(10); 00366 PIds.add(83); 00367 PIds.add(99); 00368 00369 for(Integer ii=131; ii!= 137; ++ii){ 00370 PIds.add(ii); 00371 } 00372 00373 processSelectorMap_.put(MCProcessType.DIS, PIds); 00374 00375 PIds = new Vector<Integer>(); 00376 for(Integer ii=91; ii!=96; ++ii){ 00377 PIds.add(ii); 00378 } 00379 00380 processSelectorMap_.put(MCProcessType.MINBIAS, PIds); 00381 MSTPMap_.put(MCProcessType.MINBIAS, 1); 00382 // PIds = new Vector<Integer>(); 00383 00384 processNameMap_ = new HashMap<Integer, String>(); 00385 00386 for(Map.Entry entry: processSelectorMap_.entrySet()){ 00387 String procName = (String)entry.getKey(); 00388 if(!procName.startsWith("Charm") && 00389 !procName.startsWith("Beauty")){ 00390 PIds = (Vector<Integer>)entry.getValue(); 00391 for(Integer Id: PIds){ 00392 processNameMap_.put(Id, procName); 00393 } 00394 } 00395 00396 } 00397 /* 00398 processNameMap_.put(11, MCProcessType.HIGHET); 00399 processNameMap_.put(12, MCProcessType.HIGHET); 00400 processNameMap_.put(13, MCProcessType.HIGHET); 00401 processNameMap_.put(28, MCProcessType.HIGHET); 00402 processNameMap_.put(53, MCProcessType.HIGHET); 00403 processNameMap_.put(68, MCProcessType.HIGHET); 00404 00405 processNameMap_.put(33, MCProcessType.DIRECT); 00406 processNameMap_.put(34, MCProcessType.DIRECT); 00407 processNameMap_.put(54, MCProcessType.DIRECT); 00408 processNameMap_.put(58, MCProcessType.DIRECT); 00409 processNameMap_.put(80, MCProcessType.DIRECT); 00410 processNameMap_.put(84, MCProcessType.DIRECT); 00411 processNameMap_.put(85, MCProcessType.DIRECT); 00412 00413 processNameMap_.put(10, MCProcessType.DIS); 00414 processNameMap_.put(83, MCProcessType.DIS); 00415 processNameMap_.put(99, MCProcessType.DIS); 00416 00417 for(Integer ii=131; ii !=137; ++ii){ 00418 processNameMap_.put(ii, MCProcessType.DIS); 00419 } 00420 00421 processNameMap_.put(91, MCProcessType.MINBIAS); 00422 processNameMap_.put(95, MCProcessType.MINBIAS); 00423 */ 00424 return; 00425 } 00426 00427 00428 00429 public boolean checkParameters(){ 00430 return true; 00431 } 00432 00433 protected String getParticleName(String pName){ 00434 if(particleNameMapInit_) initParticleNames(); 00435 00436 String name = particleNameMap_.get(pName); 00437 00438 if(name==null) return pName; 00439 00440 return name; 00441 } 00442 00443 private static void initParticleNames(){ 00444 00445 particleNameMapInit_ = false; 00446 00447 particleNameMap_.put("e+","gamma/e+"); 00448 particleNameMap_.put("e","gamma/e"); 00449 00450 return; 00451 } 00452 00453 public void writeSteering(BufferedWriter ofile, Model model, 00454 MCProcessType proc) 00455 throws JetWebException { 00456 00457 try { 00458 // Common, except PDFs 00459 writeCommonFFKey(ofile,proc); 00460 // Turn on the appropriate HZTool routines 00461 writePapersFFKey(ofile,proc); 00462 // PDFs 00463 writePDFFFKey(ofile,model,proc); 00464 // All the other parameters 00465 writeGenFFKey(ofile,proc); 00466 00467 00468 } catch (IOException io) { 00469 throw new JetWebException(io,"Pythia.writeSteering failed in write to "+ofile); 00470 } 00471 00472 } 00473 00474 00478 public boolean inModel(String pName){ 00479 if (pName.equalsIgnoreCase("MSUB")) return false; 00480 if (pName.equalsIgnoreCase("KFIN")) return false; 00481 if (pName.equalsIgnoreCase("MSEL")) return false; 00482 if (pName.equalsIgnoreCase("CKIN")) return false; 00483 return true; 00484 } 00485 00486 public boolean inModel(String aName, Integer index){ 00487 00488 if(!inModel(aName)) return false; 00489 00490 //MSTP(14) controls photon structure (resolved/direct). 00491 //Jetweb steers this by the process type selected e.g. 00492 //in photoproduction does 2 runs with MSTP(14)=0, 1 00493 //Therefore need to exclude it from the model 00494 00495 if(aName.equalsIgnoreCase("MSTP") && index==14)return false; 00496 00497 //MSTP(51-56) control PDFs. Jetweb steers those itself via 00498 //lhapdf. We therefore exclude these from the model as well 00499 00500 if(aName.equalsIgnoreCase("MSTP")){ 00501 if(index>50 && index <57) return false; 00502 } 00503 00504 return true; 00505 } 00506 00511 public boolean inProcessType(String pName){ 00512 if (pName.equalsIgnoreCase("MSUB")) return true; 00513 if (pName.equalsIgnoreCase("KFIN")) return true; 00514 if (pName.equalsIgnoreCase("MSTP")) return true; 00515 if (pName.equalsIgnoreCase("MSEL")) return true; 00516 return false; 00517 } 00518 00524 public boolean inCuts(String pName){ 00525 if(allowedCutsInit_) initAllowedCuts(); 00526 for(Map.Entry entry: allowedCuts_.entrySet()){ 00527 Vector<Object> name = (Vector<Object>)entry.getValue(); 00528 if(((String)name.get(0)).equalsIgnoreCase(pName)){ 00529 return true; 00530 } 00531 } 00532 00533 return false; 00534 } 00535 00544 public Pythia addCut(Cut cut){ 00545 if(allowedCutsInit_) initAllowedCuts(); 00546 00547 if(cuts_==null) cuts_ = new CutCollection(); 00548 00549 Vector<Object> cutName = allowedCuts_.get(cut.getName()); 00550 //if cut not known by Pythia then return 00551 00552 if(cutName==null) return this; 00553 00554 // if existing cut in the collection supersedes this one 00555 // then don't do anything 00556 if(!cuts_.addCut(cut)) return this; 00557 00558 String arName = (String) cutName.get(0); 00559 Integer arIndex = (Integer) cutName.get(1); 00560 HashMap<Integer, Double> array = realParameterArrays.get(arName); 00561 if(array==null){ 00562 array = new HashMap<Integer, Double>(); 00563 realParameterArrays.put(arName, array); 00564 } 00565 00566 //RealParameterArrays().get(arName).put(arIndex, cut.getValue()); 00567 00568 array.put(arIndex, cut.getValue()); 00569 00570 return this; 00571 } 00572 00573 public CutCollection getCutCollection(){ 00574 00575 if(!dirtyCuts_) return cuts_; 00576 dirtyCuts_ = false; 00577 00578 cuts_ = new CutCollection(); 00579 00580 if(allowedCutsInit_) initAllowedCuts(); 00581 00582 for(Map.Entry entry: allowedCuts_.entrySet()){ 00583 Vector<Object> param = (Vector<Object>)entry.getValue(); 00584 String name = (String)entry.getKey(); 00585 String arName = (String)param.get(0); 00586 Integer arIndex = (Integer)param.get(1); 00587 00588 Double value = realParameterArrays.get(arName).get(arIndex); 00589 00590 Cut tmp = new Cut(name, value); 00591 cuts_.addCut(tmp); 00592 } 00593 return cuts_; 00594 } 00595 00596 public Double getPthat(){ 00597 00598 HashMap<Integer,Double> ckin = realParameterArrays.get("CKIN"); 00599 00600 return ckin.get(new Integer(3)); 00601 00602 } 00603 00607 /* 00608 public boolean isRelevant(MCProcessType proc, String pName, 00609 Integer aIndex) 00610 throws JetWebException { 00611 00612 if (proc.hasPhoton()){ 00613 if (DBGeneratorManager.checkPhotonRelevance(this,pName,aIndex)){ 00614 return true; 00615 } 00616 } 00617 if (proc.hasProton()){ 00618 if (DBGeneratorManager.checkProtonRelevance(this,pName,aIndex)){ 00619 return true; 00620 } 00621 } 00622 return false; 00623 } 00624 */ 00625 00626 00627 /* 00628 if (getGenerator().equalsIgnoreCase("pythia")){ 00629 00630 // If the energy dependence on the ptmin is turned of, 00631 // parp(89) is irrelevant, so set it to the default. 00632 Double edepend = (Double)(getRunSeries().getParp().get(new Integer(90))); 00633 if (edepend.doubleValue() == 0.0) { 00634 getRunSeries().getParp().remove(new Integer(89)); 00635 getRunSeries().getParp().put(new Integer(89),new Double(1000.0)); 00636 } 00637 00638 } 00639 */ 00640 00641 00650 public static void init(){ 00651 00652 /* 00653 // 00654 // MSTP 00655 // 00656 eeIrrelevantMstp = new Vector(); 00657 epIrrelevantMstp = new Vector(); 00658 ppIrrelevantMstp = new Vector(); 00659 00660 // Irrelevant for e+e- 00661 eeIrrelevantMstp.add(new Integer(14)); 00662 eeIrrelevantMstp.add(new Integer(51)); 00663 eeIrrelevantMstp.add(new Integer(52)); 00664 eeIrrelevantMstp.add(new Integer(142)); 00665 eeIrrelevantMstp.add(new Integer(191)); 00666 00667 // Irrelevant for ep 00668 epIrrelevantMstp.add(new Integer(14)); 00669 epIrrelevantMstp.add(new Integer(48)); 00670 epIrrelevantMstp.add(new Integer(142)); 00671 epIrrelevantMstp.add(new Integer(191)); 00672 00673 // Irrelevant for proton beams 00674 ppIrrelevantMstp.add(new Integer(11)); 00675 ppIrrelevantMstp.add(new Integer(12)); 00676 ppIrrelevantMstp.add(new Integer(13)); 00677 ppIrrelevantMstp.add(new Integer(14)); 00678 ppIrrelevantMstp.add(new Integer(15)); 00679 ppIrrelevantMstp.add(new Integer(16)); 00680 ppIrrelevantMstp.add(new Integer(17)); 00681 ppIrrelevantMstp.add(new Integer(18)); 00682 ppIrrelevantMstp.add(new Integer(19)); 00683 ppIrrelevantMstp.add(new Integer(20)); 00684 ppIrrelevantMstp.add(new Integer(22)); 00685 ppIrrelevantMstp.add(new Integer(23)); 00686 ppIrrelevantMstp.add(new Integer(48)); 00687 ppIrrelevantMstp.add(new Integer(55)); 00688 ppIrrelevantMstp.add(new Integer(56)); 00689 ppIrrelevantMstp.add(new Integer(59)); 00690 ppIrrelevantMstp.add(new Integer(60)); 00691 ppIrrelevantMstp.add(new Integer(66)); 00692 ppIrrelevantMstp.add(new Integer(142)); 00693 ppIrrelevantMstp.add(new Integer(191)); 00694 00695 // 00696 // PARP 00697 // 00698 epIrrelevantParp = new Vector(); 00699 eeIrrelevantParp = new Vector(); 00700 ppIrrelevantParp = new Vector(); 00701 00702 // Irrelevant for all 00703 // none 00704 00705 // Irrelevant for e+e- 00706 eeIrrelevantParp.add(new Integer(91)); 00707 eeIrrelevantParp.add(new Integer(92)); 00708 eeIrrelevantParp.add(new Integer(93)); 00709 00710 00711 // Irrelevant for ep 00712 00713 // Irrelevant for pp 00714 ppIrrelevantParp.add(new Integer(13)); 00715 ppIrrelevantParp.add(new Integer(15)); 00716 ppIrrelevantParp.add(new Integer(16)); 00717 ppIrrelevantParp.add(new Integer(17)); 00718 ppIrrelevantParp.add(new Integer(18)); 00719 ppIrrelevantParp.add(new Integer(99)); 00720 ppIrrelevantParp.add(new Integer(100)); 00721 00722 00723 // 00724 // MSTJ ??? Are any parameters irrelevant? 00725 // 00726 eeIrrelevantMstj = new Vector(); 00727 epIrrelevantMstj = new Vector(); 00728 ppIrrelevantMstj = new Vector(); 00729 00730 // 00731 // PARJ ??? Are any parameters irrelevant? 00732 // 00733 eeIrrelevantParj = new Vector(); 00734 epIrrelevantParj = new Vector(); 00735 ppIrrelevantParj = new Vector(); 00736 */ 00737 } 00738 /* 00739 00740 00741 // Everything below is PYTHIA specific and belong in the eventual 00742 // PYTHIA class. 00743 00744 00745 private static Vector epIrrelevantMstp; 00746 private static Vector eeIrrelevantMstp; 00747 private static Vector ppIrrelevantMstp; 00748 private static Vector epIrrelevantParp; 00749 private static Vector eeIrrelevantParp; 00750 private static Vector ppIrrelevantParp; 00751 private static Vector epIrrelevantMstj; 00752 private static Vector eeIrrelevantMstj; 00753 private static Vector ppIrrelevantMstj; 00754 private static Vector epIrrelevantParj; 00755 private static Vector eeIrrelevantParj; 00756 private static Vector ppIrrelevantParj; 00757 00758 00759 00874 01080
Generated Wed Jan 17 09:14:27 GMT 2007