]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - T0/AliT0Digitizer.cxx
temporary solution :cosmic DA instead of phys before real beam
[u/mrichter/AliRoot.git] / T0 / AliT0Digitizer.cxx
index a5604acdf9045802a8d0784a44720b9e96a57560..db45a34800d3c7cf7299c751c627af816dcc3ba3 100644 (file)
 
 /* $Id$ */
 
+/******************************************************************
+ *    Produde digits from hits
+ *       digits is TObject and includes
+ *     We are writing array if C & A  TDC
+ *     C & A  ADC (will need for slow simulation)
+ *     TOF first particle C & A
+ *     mean time and time difference (vertex position)
+ *
+ *      Alla.Maevskaya@cern.ch 
+ ****************************************************************/
+
+
 #include <TArrayI.h>
-#include <TDirectory.h>
-#include <TError.h>
 #include <TFile.h>
 #include <TGraph.h>
 #include <TH1F.h>
 #include "AliT0hit.h"
 #include "AliT0digit.h"
 #include "AliRunDigitizer.h"
-#include <AliDetector.h>
 #include "AliRun.h"
 #include <AliLoader.h>
 #include <AliRunLoader.h>
 #include <stdlib.h>
-#include <Riostream.h>
-#include <Riostream.h>
 #include "AliT0Parameters.h"
-#include "AliCDBLocal.h"
-#include "AliCDBStorage.h"
-#include "AliCDBManager.h"
-#include "AliCDBEntry.h"
 
 ClassImp(AliT0Digitizer)
 
@@ -85,6 +88,8 @@ AliT0Digitizer::AliT0Digitizer(AliRunDigitizer* manager)
   AliDebug(1,"processed");
   fParam = AliT0Parameters::Instance();
   fParam->Init();
+  Int_t index[25000];
+  Bool_t down=true;
 
   for (Int_t i=0; i<24; i++){
     TGraph* gr = fParam ->GetAmpLEDRec(i);
@@ -99,11 +104,19 @@ AliT0Digitizer::AliT0Digitizer(AliRunDigitizer* manager)
     }
     
     TGraph *grInverse = new TGraph(np,y1,x1);
-    delete [] x1;
-    delete [] y1;
     fAmpLED.AddAtAndExpand(grInverse,i);
+
+     TGraph* grw = fParam ->GetWalk(i);
+      Int_t npw = grw->GetN();
+     Double_t *yw = grw->GetY();
+    TMath::Sort(npw, yw, index,down);
+    fMaxValue[i]=Int_t(yw[index[0]]);
   }
+
+    //    delete [] x1;
+    //   delete [] y1;
 }
+
 //------------------------------------------------------------------------
 AliT0Digitizer::~AliT0Digitizer()
 {
@@ -160,12 +173,10 @@ void AliT0Digitizer::Exec(Option_t* /*option*/)
   Int_t threshold =50; //photoelectrons
   Float_t zdetA, zdetC;
   Int_t sumMultCoeff = 100;
-  TH1F *hr;
-
-
-  
+  Int_t refpoint=0;
+   
   Int_t ph2Mip = fParam->GetPh2Mip();     
-  Int_t channelWidth = fParam->GetChannelWidth() ;  
+  Float_t channelWidth = fParam->GetChannelWidth() ;  
   Float_t delayVertex = fParam->GetTimeDelayTVD();
    
   zdetC = TMath::Abs(fParam->GetZPosition("T0/C/PMT1"));
@@ -202,11 +213,11 @@ void AliT0Digitizer::Exec(Option_t* /*option*/)
     AliRunLoader * inRL = AliRunLoader::GetRunLoader(fManager->GetInputFolderName(inputFile));
     AliLoader * pInStartLoader = inRL->GetLoader("T0Loader");
     if (!inRL->GetAliRun()) inRL->LoadgAlice();
-    AliT0 *fT0  = (AliT0*)inRL ->GetAliRun()->GetDetector("T0");
+    fT0  = (AliT0*)inRL ->GetAliRun()->GetDetector("T0");
 
        //read Hits 
     pInStartLoader->LoadHits("READ");//probably it is necessary to load them before
-    TClonesArray *fHits = fT0->Hits ();
+    fHits = fT0->Hits ();
     TTree *th = pInStartLoader->TreeH();
     brHits = th->GetBranch("T0");
     if (brHits) {
@@ -268,7 +279,7 @@ void AliT0Digitizer::Exec(Option_t* /*option*/)
     }
 
     timeDelayCFD[0] = fParam->GetTimeDelayCFD(0);
-
     for (Int_t i=0; i<24; i++)
       {
                Float_t  al = countE[i]; 
@@ -281,12 +292,12 @@ void AliT0Digitizer::Exec(Option_t* /*option*/)
          qt= 50.*al/ph2Mip;  // 50mv/Mip amp in mV 
          //  fill TDC
          timeDelayCFD[i] = fParam->GetTimeDelayCFD(i);
-         trCFD = Int_t (timeGaus[i]/channelWidth + (timeDelayCFD[i]-timeDelayCFD[0])); 
+         trCFD = Int_t (timeGaus[i]/channelWidth + timeDelayCFD[i]); 
          TGraph* gr = ((TGraph*)fAmpLED.At(i));
          sl = gr->Eval(qt);
 
          trLED = Int_t(( timeGaus[i] + 1000*sl )/channelWidth);
-         qtCh=Int_t (1000.*TMath::Log(qt)) / channelWidth;
+         qtCh=Int_t (1000.*TMath::Log(qt) / channelWidth);
          fADC0->AddAt(0,i);
          fADC->AddAt(qtCh,i);
          ftimeLED->AddAt(trLED,i); 
@@ -296,12 +307,11 @@ void AliT0Digitizer::Exec(Option_t* /*option*/)
          // put slewing 
          TGraph *fu=(TGraph*) fParam ->GetWalk(i) ;
          Float_t slew=fu->Eval(Float_t(qtCh));
-         hr=fu->GetHistogram();
-         Float_t maxValue=hr->GetMaximum(50);
-         trCFD=trCFD-Int_t((maxValue-slew)/channelWidth);
+
+         //      trCFD=trCFD-Int_t(fMaxValue[i]-slew);
+         trCFD = trCFD-Int_t(fMaxValue[i]-slew) + 2000; //for the same channel as cosmic
          ftimeCFD->AddAt(Int_t (trCFD),i);
-         AliDebug(10,Form("  pmt %i : time in ns %f time in channels %i   ",
-                          i, timeGaus[i],trCFD ));
+         AliDebug(10,Form("  pmt %i : time in ns %f time in channels %i  LEd %i  ",  i, timeGaus[i],trCFD, trLED ));
          AliDebug(10,Form(" qt in mV %f qt in ns %f qt in channels %i   ",qt, 
                           TMath::Log(qt), qtCh));
 
@@ -321,9 +331,7 @@ void AliT0Digitizer::Exec(Option_t* /*option*/)
       {
        timeDiff=Int_t (((besttimeC-besttimeA)+1000*delayVertex)
                        /channelWidth);
-       meanTime=Int_t (((besttimeC+timeDelayCFD[pmtBestC]+
-                         besttimeA+timeDelayCFD[pmtBestA])/2.)
-                       /channelWidth);
+       meanTime=Int_t (((besttimeC+besttimeA)/2. )/channelWidth);
       }
        AliDebug(10,Form(" time A& C %i %i  time diff && mean time in channels %i %i",bestATDC,bestCTDC, timeDiff, meanTime));
 
@@ -334,10 +342,11 @@ void AliT0Digitizer::Exec(Option_t* /*option*/)
                      sumMult, fSumMult, fSumMult*channelWidth));
     }
 
-      fT0->AddDigit(bestATDC,bestCTDC,meanTime,timeDiff,fSumMult,
+    fT0->AddDigit(bestATDC,bestCTDC,meanTime,timeDiff,fSumMult, refpoint,
                       ftimeCFD,fADC0,ftimeLED,fADC);
      
-      AliDebug(10,Form(" Digits wrote bestATDC %i bestCTDC %i  meanTime %i  timeDiff %i fSumMult %i ", bestATDC,bestCTDC,meanTime,timeDiff,fSumMult ));
+    
+      AliDebug(10,Form(" Digits wrote refpoint %i bestATDC %i bestCTDC %i  meanTime %i  timeDiff %i fSumMult %i ",refpoint ,bestATDC,bestCTDC,meanTime,timeDiff,fSumMult ));
     pOutStartLoader->UnloadHits();
   } //input streams loop