]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - EVGEN/AliGenPythia.cxx
Typo corrected.
[u/mrichter/AliRoot.git] / EVGEN / AliGenPythia.cxx
index 426112426961d6dbca43455af932393f977a8389..d07532495d2511650fad2aa5a12a168e1a2194f6 100644 (file)
 
 /*
 $Log$
+Revision 1.59  2002/07/19 14:35:36  morsch
+Count total number of trials. Print mean Q, x1, x2.
+
+Revision 1.58  2002/07/17 10:04:09  morsch
+SetYHard method added.
+
+Revision 1.57  2002/05/22 13:22:53  morsch
+Process kPyMbNonDiffr added.
+
+Revision 1.56  2002/04/26 10:30:01  morsch
+Option kPyBeautyPbMNR added. (N. Carrer).
+
+Revision 1.55  2002/04/17 10:23:56  morsch
+Coding Rule violations corrected.
+
 Revision 1.54  2002/03/28 11:49:10  morsch
 Pass status code in SetTrack.
 
@@ -209,6 +224,7 @@ AliGenPythia::AliGenPythia(Int_t npart)
     SetStrucFunc();
     SetForceDecay();
     SetPtHard();
+    SetYHard();
     SetEnergyCMS();
     fDecayer = new AliDecayerPythia();
     // Set random number generator 
@@ -263,7 +279,10 @@ void AliGenPythia::Init()
 
 
     fPythia->SetCKIN(3,fPtHardMin);
-    fPythia->SetCKIN(4,fPtHardMax);    
+    fPythia->SetCKIN(4,fPtHardMax);
+    fPythia->SetCKIN(7,fYHardMin);
+    fPythia->SetCKIN(8,fYHardMax);
+    
     if (fNucA1 > 0 && fNucA2 > 0) fPythia->SetNuclei(fNucA1, fNucA2);  
     // Fragmentation?
     if (fFragmentation) {
@@ -290,9 +309,10 @@ void AliGenPythia::Init()
        break;
     case kPyD0PbMNR:
        fParentSelect[0] =   421;
-       fFlavorSelect    =  4;  
+       fFlavorSelect    =   4; 
        break;
     case kPyBeauty:
+    case kPyBeautyPbMNR:
        fParentSelect[0]=  511;
        fParentSelect[1]=  521;
        fParentSelect[2]=  531;
@@ -317,10 +337,19 @@ void AliGenPythia::Init()
        fParentSelect[0] = 443;
        break;
     case kPyMb:
+    case kPyMbNonDiffr:
     case kPyJets:
     case kPyDirectGamma:
        break;
     }
+//
+//  This counts the total number of calls to Pyevnt() per run.
+    fTrialsRun = 0;
+    fQ         = 0.;
+    fX1        = 0.;
+    fX2        = 0.;    
+    fNev       = 0 ;
+//    
     AliGenMC::Init();
 }
 
@@ -383,11 +412,12 @@ void AliGenPythia::Generate()
            pSelected[i] =  0;
            trackIt[i]   =  0;
        }
-       // printf("\n **************************************************%d\n",np);
+
        Int_t nc = 0;        // Total n. of selected particles
        Int_t nParents = 0;  // Selected parents
        Int_t nTkbles = 0;   // Trackable particles
-       if (fProcess != kPyMb && fProcess != kPyJets && fProcess != kPyDirectGamma) {
+       if (fProcess != kPyMb && fProcess != kPyJets && fProcess != kPyDirectGamma &&
+           fProcess != kPyMbNonDiffr) {
            
            for (i = 0; i<np; i++) {
                iparticle = (TParticle *) fParticles->At(i);
@@ -414,7 +444,6 @@ void AliGenPythia::Generate()
                    TParticle *  mother = (TParticle *) fParticles->At(ipa);
                    kfMo = TMath::Abs(mother->GetPdgCode());
                }
-//             printf("\n particle (all)  %d %d %d", i, pSelected[i], kf);
                // What to keep in Stack?
                Bool_t flavorOK = kFALSE;
                Bool_t selectOK = kFALSE;
@@ -548,6 +577,12 @@ void AliGenPythia::Generate()
            if (jev >= fNpart || fNpart == -1) {
                fKineBias=Float_t(fNpart)/Float_t(fTrials);
                printf("\n Trials: %i %i %i\n",fTrials, fNpart, jev);
+
+               fQ  += fPythia->GetVINT(51);
+               fX1 += fPythia->GetVINT(41);
+               fX2 += fPythia->GetVINT(42);
+               fTrialsRun += fTrials;
+               fNev++;
                MakeHeader();
                break;
            }
@@ -588,17 +623,15 @@ Int_t  AliGenPythia::GenerateMB()
        kf = CheckPDGCode(iparticle->GetPdgCode());
        Int_t ks = iparticle->GetStatusCode();
        Int_t km = iparticle->GetFirstMother();
-//     printf("\n Particle: %d %d %d", i, kf, ks);
-       
        if ((ks == 1  && kf!=0 && KinematicSelection(iparticle, 0)) ||
            (ks != 1) ||
            (fProcess == kPyJets && ks == 21 && km == 0 && i>1)) {
            nc++;
            if (ks == 1) trackIt = 1;
            Int_t ipa = iparticle->GetFirstMother()-1;
-
+           
            iparent = (ipa > -1) ? pParent[ipa] : -1;
-
+           
 //
 // store track information
            p[0] = iparticle->Px();
@@ -609,7 +642,7 @@ Int_t  AliGenPythia::GenerateMB()
            origin[2] = fOrigin[2]+iparticle->Vz()/10.;
            Float_t tof=kconv*iparticle->T();
            SetTrack(fTrackIt*trackIt, iparent, kf, p, origin, polar,
-                        tof, kPPrimary, nt, 1., ks);
+                    tof, kPPrimary, nt, 1., ks);
            KeepTrack(nt);
            pParent[i] = nt;
        } // select particle
@@ -626,6 +659,13 @@ void AliGenPythia::FinishRun()
 {
 // Print x-section summary
     fPythia->Pystat(1);
+    fQ  /= fNev;
+    fX1 /= fNev;
+    fX2 /= fNev;    
+    printf("\nTotal number of Pyevnt() calls %d\n", fTrialsRun);
+    printf("\nMean Q, x1, x2: %f %f %f\n", fQ, fX1, fX2);
+    
+
 }
 
 void AliGenPythia::AdjustWeights()