]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - THijing/AliGenHijing.cxx
Gain calibration file
[u/mrichter/AliRoot.git] / THijing / AliGenHijing.cxx
index 017cda2003011b3624761316dac54e41223d1723..fb09ce87e3fd2c9d9dd0a621447bc29b71edca1f 100644 (file)
@@ -76,6 +76,8 @@ AliGenHijing::AliGenHijing(Int_t npart)
     //
     SetSimpleJets();
     SetNoGammas();
+    SetRandomPz();
+    SwitchOffHeavyQuarks(kFALSE);
 //
     fParticles = new TClonesArray("TParticle",10000);    
 //
@@ -151,6 +153,15 @@ void AliGenHijing::Init()
        fHijing->SetHIPR1(11, 2.5);
     }
     
+//
+// Heavy quarks
+//    
+    if (fNoHeavyQuarks) {
+       fHijing->SetIHPR2(49, 1);
+    } else {
+       fHijing->SetIHPR2(49, 0);
+    }
+    
     
     AliGenMC::Init();
     
@@ -190,12 +201,16 @@ void AliGenHijing::Generate()
       for (j=0; j < 3; j++) origin0[j] = fVertex[j];
   } 
 
+
+  Float_t sign = (fRandomPz && (Rndm() < 0.5))? -1. : 1.;
   while(1)
   {
 //    Generate one event
 // --------------------------------------------------------------------------
-      fSpecn   = 0;  
-      fSpecp   = 0;
+      fProjectileSpecn    = 0;  
+      fProjectileSpecp    = 0;
+      fTargetSpecn        = 0;  
+      fTargetSpecp        = 0;
 // --------------------------------------------------------------------------
       fHijing->GenerateEvent();
       fTrials++;
@@ -271,9 +286,13 @@ void AliGenHijing::Generate()
          
 // --------------------------------------------------------------------------
 // Count spectator neutrons and protons
-         if(ks == 0 || ks == 1 || ks == 10 || ks == 11){
-             if(kf == kNeutron) fSpecn += 1;
-             if(kf == kProton)  fSpecp += 1;
+         if(ks == 0 || ks == 1){
+             if(kf == kNeutron) fProjectileSpecn += 1;
+             if(kf == kProton)  fProjectileSpecp += 1;
+         }
+         else if(ks == 10 || ks == 11){
+             if(kf == kNeutron) fTargetSpecn += 1;
+             if(kf == kProton)  fTargetSpecp += 1;
          }
 // --------------------------------------------------------------------------
 //         
@@ -297,13 +316,12 @@ void AliGenHijing::Generate()
          TParticle *  iparticle = (TParticle *) fParticles->At(i);
          Bool_t  hasMother   = (iparticle->GetFirstMother()     >=0);
          Bool_t  hasDaughter = (iparticle->GetFirstDaughter()   >=0);
-
          if (pSelected[i]) {
              kf   = iparticle->GetPdgCode();
              ks   = iparticle->GetStatusCode();
              p[0] = iparticle->Px();
              p[1] = iparticle->Py();
-             p[2] = iparticle->Pz();
+             p[2] = iparticle->Pz() * sign;
              origin[0] = origin0[0]+iparticle->Vx()/10;
              origin[1] = origin0[1]+iparticle->Vy()/10;
              origin[2] = origin0[2]+iparticle->Vz()/10;
@@ -313,11 +331,13 @@ void AliGenHijing::Generate()
              if (hasMother) {
                  imo = iparticle->GetFirstMother();
                  mother = (TParticle *) fParticles->At(imo);
-                 imo = (mother->GetPdgCode() != 92) ? imo = newPos[imo] : -1;
+                 imo = (mother->GetPdgCode() != 92) ? newPos[imo] : -1;
              } // if has mother   
              Bool_t tFlag = (fTrackIt && !hasDaughter);
              PushTrack(tFlag,imo,kf,p,origin,polar,
                       tof,kPNoProcess,nt, 1., ks);
+
+             
              KeepTrack(nt);
              newPos[i] = nt;
          } // if selected
@@ -490,7 +510,11 @@ void AliGenHijing::MakeHeader()
                                                       fHijing->GetN01(),
                                                       fHijing->GetN10(),
                                                       fHijing->GetN11());
-    ((AliGenHijingEventHeader*) header)->SetSpectators(fSpecn, fSpecp);
+    ((AliGenHijingEventHeader*) header)->SetSpectators(fProjectileSpecn, fProjectileSpecp,
+                                                      fTargetSpecn,fTargetSpecp);
+    ((AliGenHijingEventHeader*) header)->SetReactionPlaneAngle(fHijing->GetHINT1(20));
+    
+
 
 // 4-momentum vectors of the triggered jets.
 //
@@ -519,10 +543,21 @@ void AliGenHijing::MakeHeader()
     ((AliGenHijingEventHeader*) header)->SetTrials(fTrials);
 // Event Vertex
     header->SetPrimaryVertex(fVertex);
-    if (gAlice) gAlice->SetGenEventHeader(header);   
+    AddHeader(header);
     fCollisionGeometry = (AliGenHijingEventHeader*)  header;
 }
 
+void AliGenHijing::AddHeader(AliGenEventHeader* header)
+{
+    // Passes header either to the container or to gAlice
+    if (fContainer) {
+       fContainer->AddHeader(header);
+    } else {
+       gAlice->SetGenEventHeader(header);      
+    }
+}
+
+
 Bool_t AliGenHijing::CheckTrigger()
 {
 // Check the kinematic trigger condition