Correction in EMFCUT SDUM=PROD-CUT
[u/mrichter/AliRoot.git] / TFluka / TFlukaConfigOption.cxx
index fd85b313e79b35593beb15e4034219df22ebac9b..5f2fb095f909761ba9292ed3070792132bfdf7c0 100644 (file)
@@ -97,7 +97,22 @@ void TFlukaConfigOption::WriteFlukaInputCards()
     //
     //
     if (fMedium > -1) {
-       fprintf(fgFile,"*\n*Material specific process and cut settings for #%8d \n", fMedium);
+       TFluka* fluka = (TFluka*) gMC;
+       TObjArray *matList = fluka->GetFlukaMaterials();
+       Int_t nmaterial =  matList->GetEntriesFast();
+       TGeoMaterial* material = 0;
+       for (Int_t im = 0; im < nmaterial; im++)
+       {
+           material = dynamic_cast<TGeoMaterial*> (matList->At(im));
+           Int_t idmat = material->GetIndex();
+           if (idmat == fMedium) break;            
+       }
+       
+       
+//
+// Check if global option
+
+       fprintf(fgFile,"*\n*Material specific process and cut settings for #%8d %s\n", fMedium, material->GetName());
        fCMatMin = fMedium;
        fCMatMax = fMedium;
     } else {
@@ -505,6 +520,7 @@ void TFlukaConfigOption::ProcessCUTGAM()
     if (fMedium == -1) {
        fprintf(fgFile,"EMFCUT    %10.4g%10.4g%10.1f%10.1f%10.1f%10.1f\n", 
                0., fCutValue[kCUTGAM], 0., 0., Float_t(fgGeom->NofVolumes()), 1.);
+
     } else {
        Int_t nreg, *reglist;
        Float_t ireg;
@@ -515,6 +531,8 @@ void TFlukaConfigOption::ProcessCUTGAM()
            fprintf(fgFile,"EMFCUT    %10.4g%10.4g%10.1f%10.1f%10.1f%10.1f\n", 0.,fCutValue[kCUTGAM], 0., ireg, ireg, 1.);
        }
     }
+    fprintf(fgFile,"EMFCUT    %10.4g%10.4g%10.1f%10.1f%10.1f%10.1fPROD-CUT\n", 
+           0., fCutValue[kCUTGAM], 0., fCMatMin, fCMatMax, 1.);
 }
 
 void TFlukaConfigOption::ProcessCUTELE()
@@ -535,6 +553,8 @@ void TFlukaConfigOption::ProcessCUTELE()
            fprintf(fgFile,"EMFCUT    %10.4g%10.4g%10.1f%10.1f%10.1f%10.1f\n", -fCutValue[kCUTELE], 0., 0., ireg, ireg, 1.);
        }
     }
+    fprintf(fgFile,"EMFCUT    %10.4g%10.4g%10.1f%10.1f%10.1f%10.1fPROD-CUT\n", 
+           -fCutValue[kCUTELE], 0., 0., fCMatMin, fCMatMax, 1.);
 }
 
 void TFlukaConfigOption::ProcessCUTNEU()
@@ -553,7 +573,7 @@ void TFlukaConfigOption::ProcessCUTNEU()
        Float_t neutronCut = cut;
        if (neutronCut < 0.0196) {
            neutronCut = 0.0196;
-           printf("Cut on neutron lower than upper limit if first energy group.\n");
+           printf("Cut on neutron lower than upper limit of first energy group.\n");
            printf("Cut reset to 19.6 MeV !\n");
        }
        fprintf(fgFile,"PART-THR  %10.4g%10.1f%10.1f\n", -neutronCut,  8.0,  9.0);