]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TPC/AliTPC.cxx
Adding switch - usage of maximal or total charge for dEdx
[u/mrichter/AliRoot.git] / TPC / AliTPC.cxx
index 683909d727d26231dfdb5ab291e455a27d810032..1820b73555fe7f6b99796f4781d6da56491d8adc 100644 (file)
 #include <Riostream.h>
 #include <stdlib.h>
 
+#include <TF2.h>
 #include <TFile.h>  
-#include <TGeometry.h>
+#include <TGeoGlobalMagField.h>
 #include <TInterpreter.h>
 #include <TMath.h>
 #include <TMatrixF.h>
-#include <TVector.h>
-#include <TNode.h>
 #include <TObjectTable.h>
 #include <TParticle.h>
 #include <TROOT.h>
 #include <TRandom.h>
+#include <TStopwatch.h>
+#include <TString.h>
 #include <TSystem.h>     
-#include <TTUBS.h>
 #include <TTree.h>
+#include <TVector.h>
 #include <TVirtualMC.h>
-#include <TString.h>
-#include <TF2.h>
-#include <TStopwatch.h>
 
 #include "AliDigits.h"
 #include "AliMagF.h"
@@ -67,7 +65,6 @@
 #include "AliTPCPRF2D.h"
 #include "AliTPCParamSR.h"
 #include "AliTPCRF1D.h"
-//#include "AliTPCTrackHits.h"
 #include "AliTPCTrackHitsV2.h"
 #include "AliTrackReference.h"
 #include "AliMC.h"
@@ -233,8 +230,8 @@ void AliTPC::CreateMaterials()
   // Origin: Marek Kowalski  IFJ, Krakow, Marek.Kowalski@ifj.edu.pl
   //-----------------------------------------------------------------
 
-   Int_t iSXFLD=gAlice->Field()->Integ();
-  Float_t sXMGMX=gAlice->Field()->Max();
+   Int_t iSXFLD=((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Integ();
+  Float_t sXMGMX=((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Max();
 
   Float_t amat[5]; // atomic numbers
   Float_t zmat[5]; // z
@@ -1415,11 +1412,7 @@ void AliTPC::Hits2DigitsSector(Int_t isec)
 
   Stat_t ntracks = tH->GetEntries();
 
-  if( ntracks > 0){
 
-  //------------------------------------------- 
-  //  Only if there are any tracks...
-  //-------------------------------------------
 
     TObjArray **row;
     
@@ -1468,7 +1461,6 @@ void AliTPC::Hits2DigitsSector(Int_t isec)
       
     delete [] row; // delete the array of pointers to TObjArray-s
         
-  } // ntracks >0
 
 } // end of Hits2DigitsSector
 
@@ -1487,6 +1479,11 @@ void AliTPC::DigitizeRow(Int_t irow,Int_t isec,TObjArray **rows)
   //-----------------------------------------------------------------
  
   Float_t zerosup = fTPCParam->GetZeroSup();
+  AliTPCCalPad * gainTPC = AliTPCcalibDB::Instance()->GetDedxGainFactor(); 
+  AliTPCCalPad * noiseTPC = AliTPCcalibDB::Instance()->GetPadNoise(); 
+  AliTPCCalROC * gainROC = gainTPC->GetCalROC(isec);  // pad gains per given sector
+  AliTPCCalROC * noiseROC = noiseTPC->GetCalROC(isec);  // noise per given sector
+
 
   fCurrentIndex[1]= isec;
   
@@ -1540,8 +1537,12 @@ void AliTPC::DigitizeRow(Int_t irow,Int_t isec,TObjArray **rows)
     for(Int_t ip=0;ip<nofPads;ip++){
       gi++;
       Float_t q=total(ip,it);      
-      if(fDigitsSwitch == 0){
-       q+=GetNoise();
+      if(fDigitsSwitch == 0){  
+       Float_t gain = gainROC->GetValue(irow,ip);  // get gain for given - pad-row pad 
+       Float_t noisePad = noiseROC->GetValue(irow,ip); 
+       //
+       q*=gain;
+       q+=GetNoise()*noisePad;
         if(q <=fzerosup) continue; // do not fill zeros
         q = TMath::Nint(q);
         if(q >= fTPCParam->GetADCSat()) q = fTPCParam->GetADCSat() - 1;  // saturation
@@ -1578,7 +1579,14 @@ void AliTPC::DigitizeRow(Int_t irow,Int_t isec,TObjArray **rows)
     
     } // end of loop over time buckets
   }  // end of lop over pads 
+  //
+  // test
+  //
+  //
 
+  // glitch filters if normal simulated digits
+  //
+  if(!fDigitsSwitch) ((AliSimDigits*)dig)->GlitchFilter();
   //
   //  This row has been digitized, delete nonused stuff
   //
@@ -1793,7 +1801,7 @@ void AliTPC::MakeSector(Int_t isec,Int_t nrows,TTree *TH,
   //-----------------------------------------------------------------
   AliTPCcalibDB* const calib=AliTPCcalibDB::Instance();
   if (gAlice){ // Set correctly the magnetic field in the ExB calculation
-    AliMagF * field = gAlice->Field();
+    AliMagF * field = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField());
     if (field) {
       calib->SetExBField(field->SolenoidField());
     }
@@ -2169,7 +2177,7 @@ AliTPChit::AliTPChit(Int_t shunt, Int_t track, Int_t *vol, Float_t *hits)
 //________________________________________________________________________
 // Additional code because of the AliTPCTrackHitsV2
 
-void AliTPC::MakeBranch2(Option_t *option,const char */*file*/)
+void AliTPC::MakeBranch(Option_t *option)
 {
   //
   // Create a new branch in the current Root Tree
@@ -2250,7 +2258,8 @@ void AliTPC::FinishPrimary()
 void AliTPC::AddHit2(Int_t track, Int_t *vol, Float_t *hits)
 { 
   //
-  // add hit to the list  
+  // add hit to the list
+
   Int_t rtrack;
   if (fIshunt) {
     int primary = gAlice->GetMCApp()->GetPrimary(track);
@@ -2309,7 +2318,7 @@ AliHit* AliTPC::FirstHit2(Int_t track)
   // track is returned
   // 
   if(track>=0) {
-    gAlice->ResetHits();
+    gAlice->GetMCApp()->ResetHits();
     fLoader->TreeH()->GetEvent(track);
   }
   //