]> 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 f8891e67130a5f42b688744cfec9bc2c51a454c3..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)
        {
@@ -325,8 +322,9 @@ void AliPMDDigitizer::Hits2SDigits(Int_t ievt)
                  statusOld   = -1;
                }
              Int_t igstatus = 0;
-             Int_t trnotemp = trackno;
              //------------------modified by Mriganka ----------------------
+             Int_t trnotemp = trackno;
+             
              if(ks==1||(imo = mparticle->GetFirstMother())<0 ){
                vx = mparticle->Vx();
                vy = mparticle->Vy();
@@ -335,11 +333,9 @@ 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) )
-             {
+               {
                  mparticle =  gAlice->GetMCApp()->Particle(imo);
                  trackpid = mparticle->GetPdgCode();
                  ks = mparticle->GetStatusCode();
@@ -348,24 +344,23 @@ void AliPMDDigitizer::Hits2SDigits(Int_t ievt)
                  vz = mparticle->Vz();
                  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;
+                   }
+               }
              
+             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();
@@ -401,7 +396,7 @@ void AliPMDDigitizer::Hits2SDigits(Int_t ievt)
                }
 
              AliDebug(2,Form("Zposition = %f Edeposition = %f",zPos,edep));
-
+             //Float_t zposition = TMath::Abs(zPos);
              if (zPos < fZPos)
                {
                  // CPV
@@ -533,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)
@@ -560,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();
@@ -579,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;
@@ -708,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);
@@ -786,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.)
          {
@@ -801,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);
@@ -902,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);
@@ -1389,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;