]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PMD/AliPMDDigitizer.cxx
Possibility to specify user defined OCDB path for
[u/mrichter/AliRoot.git] / PMD / AliPMDDigitizer.cxx
index 0e2a9fd839d56037e6eaeedae07046f640c14b79..3bb052adfb398b76828c3b90c625fde0dfd52405 100644 (file)
 //-----------------------------------------------------//
 
 #include <Riostream.h>
-#include <TBRIK.h>
-#include <TNode.h>
 #include <TTree.h>
-#include <TGeometry.h>
 #include <TObjArray.h>
 #include <TClonesArray.h>
 #include <TFile.h>
@@ -301,7 +298,7 @@ void AliPMDDigitizer::Hits2SDigits(Int_t ievt)
 
   for (Int_t track=0; track<ntracks;track++)
     {
-      gAlice->ResetHits();
+      gAlice->GetMCApp()->ResetHits();
       treeH->GetEvent(track);
       if (fPMD)
        {
@@ -326,6 +323,8 @@ void AliPMDDigitizer::Hits2SDigits(Int_t ievt)
                }
              Int_t igstatus = 0;
              //------------------modified by Mriganka ----------------------
+             Int_t trnotemp = trackno;
+             
              if(ks==1||(imo = mparticle->GetFirstMother())<0 ){
                vx = mparticle->Vx();
                vy = mparticle->Vy();
@@ -334,8 +333,6 @@ void AliPMDDigitizer::Hits2SDigits(Int_t ievt)
                if(trackpid==kGamma||trackpid==11||trackpid==-11||
                   trackpid==kPi0)igstatus=1;
              }
-             
-             
              while(((imo = mparticle->GetFirstMother()) >= 0)&& 
                    (ks = mparticle->GetStatusCode() <1) )
                {
@@ -345,19 +342,25 @@ void AliPMDDigitizer::Hits2SDigits(Int_t ievt)
                  vx = mparticle->Vx();
                  vy = mparticle->Vy();
                  vz = mparticle->Vz();
-                 
-                 trackno=imo;
-                               
+                 trnotemp = trackno;
+                  if(trackpid == 111)
+                   {
+                     trackno = trnotemp;
                    }
-        
+                  if(trackpid != 111)
+                   {
+                     trackno = imo;
+                   }
+               }
+             
              if(trackpid==kGamma||trackpid==11||trackpid==-11||
                 trackpid==kPi0)igstatus=1;
              mtrackpid=trackpid;
              mtrackno=trackno;
              trackpid=trackpidOld;
              trackno=tracknoOld;
-             
              //-----------------end of modification----------------
+             
              xPos = fPMDHit->X();
              yPos = fPMDHit->Y();
              zPos = fPMDHit->Z();
@@ -525,7 +528,7 @@ void AliPMDDigitizer::Hits2Digits(Int_t ievt)
 
   for (Int_t track=0; track<ntracks;track++)
     {
-      gAlice->ResetHits();
+      gAlice->GetMCApp()->ResetHits();
       treeH->GetEvent(track);
       
       if (fPMD)
@@ -552,6 +555,7 @@ void AliPMDDigitizer::Hits2Digits(Int_t ievt)
 
              Int_t igstatus = 0;
              //-----------------------modified by Mriganka ------------------
+             Int_t trnotemp = trackno;
              if(ks==1||(imo = mparticle->GetFirstMother())<0 ){
                vx = mparticle->Vx();
                vy = mparticle->Vy();
@@ -571,10 +575,16 @@ void AliPMDDigitizer::Hits2Digits(Int_t ievt)
                  vx = mparticle->Vx();
                  vy = mparticle->Vy();
                  vz = mparticle->Vz();
-                 
-                 trackno=imo;
-                               
+                 trnotemp = trackno;
+                  if(trackpid == 111)
+                   {
+                     trackno = trnotemp;
                    }
+                  if(trackpid != 111)
+                   {
+                     trackno = imo;
+                   }
+               }
         
              if(trackpid==kGamma||trackpid==11||trackpid==-11||trackpid==kPi0)
                igstatus=1;
@@ -700,11 +710,10 @@ void AliPMDDigitizer::Hits2Digits(Int_t ievt)
                      // Pedestal Decalibration
                      Int_t   pedmeanrms = 
                          fCalibPed->GetPedMeanRms(idet,ism,jrow,kcol);
-                     Int_t   pedrms1    = (Int_t) pedmeanrms%1000;
+                     Int_t   pedrms1    = (Int_t) pedmeanrms%100;
                      Float_t pedrms     = (Float_t)pedrms1/10.;
                      Float_t pedmean    = 
                          (Float_t) (pedmeanrms - pedrms1)/1000.0;
-                     //printf("%f %f\n",pedmean, pedrms);
                      if (adc > 0.)
                      {
                          adc += (pedmean + 3.0*pedrms);
@@ -778,14 +787,13 @@ void AliPMDDigitizer::SDigits2Digits(Int_t ievt)
 
          MeV2ADC(edep,adc);
 
-         
          // To decalibrte the adc values
          //
          Float_t gain1 = Gain(det,smn,irow,icol);
          if (gain1 != 0.)
          {
-             Int_t adcDecalib = (Int_t)(adc/gain1);
-             adc = (Float_t) adcDecalib;
+           Int_t adcDecalib = (Int_t)(adc/gain1);
+           adc = (Float_t) adcDecalib;
          }
          else if(gain1 == 0.)
          {
@@ -793,10 +801,9 @@ void AliPMDDigitizer::SDigits2Digits(Int_t ievt)
          }
          // Pedestal Decalibration
          Int_t   pedmeanrms = fCalibPed->GetPedMeanRms(det,smn,irow,icol);
-         Int_t   pedrms1    = (Int_t) pedmeanrms%1000;
+         Int_t   pedrms1    = (Int_t) pedmeanrms%100;
          Float_t pedrms     = (Float_t)pedrms1/10.;
          Float_t pedmean    = (Float_t) (pedmeanrms - pedrms1)/1000.0;
-         //printf("%f %f\n",pedmean, pedrms);
          if(adc > 0.)
          {
              adc += (pedmean + 3.0*pedrms);
@@ -894,11 +901,10 @@ void AliPMDDigitizer::Exec(Option_t *option)
                      // Pedestal Decalibration
                      Int_t   pedmeanrms = 
                          fCalibPed->GetPedMeanRms(idet,ism,jrow,kcol);
-                     Int_t   pedrms1    = (Int_t) pedmeanrms%1000;
+                     Int_t   pedrms1    = (Int_t) pedmeanrms%100;
                      Float_t pedrms     = (Float_t)pedrms1/10.;
                      Float_t pedmean    = 
                          (Float_t) (pedmeanrms - pedrms1)/1000.0;
-                     //printf("%f %f\n",pedmean, pedrms);
                      if (adc > 0.)
                      {
                          adc += (pedmean + 3.0*pedrms);
@@ -1381,16 +1387,18 @@ void AliPMDDigitizer::MeV2ADC(Float_t mev, Float_t & adc) const
   //PS Test in September 2003 and 2006
   // KeV - ADC conversion for 12bit ADC
   // Modified by Ajay
-  const Float_t kConstant   = 9.0809;
-  const Float_t kErConstant = 1.6763;
-  const Float_t kSlope      = 128.348;
-  const Float_t kErSlope    = 0.4703;
+  const Float_t kConstant   =  0.07;
+  const Float_t kErConstant =  0.1;
+  const Float_t kSlope      = 76.0;
+  const Float_t kErSlope    =  5.0;
   
   Float_t cons   = gRandom->Gaus(kConstant,kErConstant);
   Float_t slop   = gRandom->Gaus(kSlope,kErSlope);
   
   Float_t adc12bit = slop*mev*0.001 + cons;
   
+                          
   if(adc12bit < 1600.0)
     {
       adc = (Float_t) adc12bit;