Main Page | Packages | Class Hierarchy | Class List | Directories | File List | Class Members | Related Pages

Pythia.java

Go to the documentation of this file.
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