]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - START/AliSTARTDigitizer.cxx
Delete the run loader before creating a new getter
[u/mrichter/AliRoot.git] / START / AliSTARTDigitizer.cxx
index 9c3ae72d0b64cb0f0b2bde687e4096393b2475fc..18dbd7836dec8a2f2a4efc02fbdd0ec27ca93b35 100644 (file)
@@ -23,6 +23,7 @@
 #include <TRandom.h>
 #include <TArrayI.h>
 #include <TH1.h>
+#include <TError.h>
 
 
 #include "AliSTARTDigitizer.h"
@@ -37,6 +38,7 @@
 #include "AliPDG.h"
 #include "AliLoader.h"
 #include "AliRunLoader.h"
+#include "AliSTARTLoader.h"
 
 #include <stdlib.h>
 #include <Riostream.h>
@@ -83,7 +85,7 @@ Bool_t AliSTARTDigitizer::Init()
 
 //---------------------------------------------------------------------
 
-void AliSTARTDigitizer::Exec(Option_t* option)
+void AliSTARTDigitizer::Exec(Option_t* /*option*/)
 {
 
 
@@ -117,13 +119,15 @@ void AliSTARTDigitizer::Exec(Option_t* option)
   fRightADC = new TArrayI(12); 
   fLeftADC = new TArrayI(12); 
   
-
-  fHits = new TClonesArray ("AliSTARThit", 1000);
+  inRL = AliRunLoader::GetRunLoader(fManager->GetInputFolderName(0));
+  inRL->LoadgAlice();
+  
+  //  fHits = new TClonesArray ("AliSTARThit", 1000);
   fPhotons = new TClonesArray ("AliSTARThitPhoton", 10000);                    //!!!
   AliSTART *START  = (AliSTART*) gAlice->GetDetector("START");
-
   AliSTARThit  *startHit;
-  AliSTARThitPhoton  *startHitPhoton;                                          //!!!
+  //use if Cherenkov photons
+  //  AliSTARThitPhoton  *startHitPhoton;                                              //!!!
   TBranch *brHits=0;
   TBranch *brHitPhoton=0;
   fdigits= new AliSTARTdigit();
@@ -131,8 +135,6 @@ void AliSTARTDigitizer::Exec(Option_t* option)
   Int_t nFiles=fManager->GetNinputs();
   for (Int_t inputFile=0; inputFile<nFiles;  inputFile++) {
 
-
     besttimeright=9999.;
     besttimeleft=9999.;
     Int_t timeDiff=0;
@@ -143,15 +145,17 @@ void AliSTARTDigitizer::Exec(Option_t* option)
        timeright[i0]=0; timeleft[i0]=0;
        CountEr[i0]=0;   CountEl[i0]=0;
       }
-    TClonesArray *STARThits = START->Hits ();
 
     inRL = AliRunLoader::GetRunLoader(fManager->GetInputFolderName(inputFile));
     ingime = inRL->GetLoader("STARTLoader");
     ingime->LoadHits("READ");//probably it is necessary to load them before
-    TClonesArray *STARThitsPhotons = START->Photons ();
-
+    outgime->LoadDigits("UPDATE");//probably it is necessary to load them before
+    //use if Cherenkov photons
+    //  TClonesArray *STARThitsPhotons = START->Photons ();
+    TClonesArray *fHits = START->Hits ();
+    //    cout<<" Load  "<<AliSTARTLoader::LoadDigits()<<endl;
 
-   TTree *th = ingime->TreeH();
+    TTree *th = ingime->TreeH();
     brHits = th->GetBranch("START");
     brHitPhoton = th->GetBranch("STARThitPhoton");
     if (brHits) {
@@ -165,7 +169,9 @@ void AliSTARTDigitizer::Exec(Option_t* option)
     if (ntracks<=0) return;
     // Start loop on tracks in the photon hits containers 
     // for amplitude
+    /*
     if(brHitPhoton) {
+      cout<<"brHitPhoton "<<endl; 
       for (Int_t track=0; track<ntracks;track++) {
        brHitPhoton -> GetEntry(track);;
        nhits = STARThitsPhotons->GetEntriesFast();
@@ -182,17 +188,22 @@ void AliSTARTDigitizer::Exec(Option_t* option)
        } //hit photons
       } //track photons
     } // was photons
-
+    */
     // Start loop on tracks in the hits containers
     for (Int_t track=0; track<ntracks;track++) {
       brHits->GetEntry(track);
-      nhits = STARThits->GetEntriesFast();
+      nhits = fHits->GetEntriesFast();
+      //  cout<<" brHits hits "<<nhits<<endl;
       for (hit=0;hit<nhits;hit++) {
-       startHit   = (AliSTARThit*) STARThits->UncheckedAt(hit);
-       pmt=startHit->fPmt;
-       volume = startHit->fVolume;
+       startHit   = (AliSTARThit*) fHits->UncheckedAt(hit);
+       if (!startHit) {
+         ::Error("Exec","The unchecked hit doesn't exist");
+         break;
+       }
+       pmt=startHit->Pmt();
+       volume = startHit->Volume();
        if(volume==1){
-         timeright[pmt] = startHit->fTime;
+         timeright[pmt] = startHit->Time();
          if(timeright[pmt]<besttimeright)
            //&&CountEr[pmt-1]>thresholdAmpl)
            {
@@ -200,7 +211,7 @@ void AliSTARTDigitizer::Exec(Option_t* option)
          } //timeright
        }//time for right shoulder
        if(volume==2){            
-         timeleft[pmt] = startHit->fTime;
+         timeleft[pmt] = startHit->Time();
          if(timeleft[pmt]<besttimeleft)
            //&&CountEl[pmt-1]>thresholdAmpl) 
            {
@@ -210,24 +221,24 @@ void AliSTARTDigitizer::Exec(Option_t* option)
        }//time for left shoulder
       } //hit loop
     } //track loop
+  
     // z position
     cout<<" right time  "<<besttimeright<<
       " right distance "<<besttimeright*30<<endl;;
     cout<<" left time  "<<besttimeleft<<
-      " right distance "<<besttimeleft*30<<endl;;
+      " left distance "<<besttimeleft*30<<endl;;
   
 
     //folding with experimental time distribution
     
-    besttimerightGaus=gRandom->Gaus(besttimeright,0.05);
-    //    cout<<" besttimerightGaus "<<besttimerightGaus<<endl;
-    bestRightADC=Int_t (besttimerightGaus*1000/channelWidth);
+    besttimeleftGaus=gRandom->Gaus(besttimeright,0.05);
+    cout<<" besttimeleftGaus "<<besttimeleftGaus<<endl;
+    bestLeftADC=Int_t (besttimeleftGaus*1000/channelWidth);
     Float_t koef=69.7/350.;
-    besttimeleft=koef*besttimeleft;
-    besttimeleftGaus=gRandom->Gaus(besttimeleft,0.05);
+    besttimeright=koef*besttimeleft;
+    besttimerightGaus=gRandom->Gaus(besttimeleft,0.05);
     
-    bestLeftADC=Int_t (besttimeleftGaus*1000/channelWidth);
+    bestRightADC=Int_t (besttimerightGaus*1000/channelWidth);
     timediff=besttimerightGaus-besttimeleftGaus;
     cout<<" timediff in ns "<<timediff<<" z= "<<timediff*30<<endl;
     meanTime=(besttimerightGaus+besttimeleftGaus)/2.;
@@ -281,13 +292,21 @@ void AliSTARTDigitizer::Exec(Option_t* option)
       {timeAv=999999; timeDiff=99999;}
 
 // trick to find out output dir:
-    outgime->WriteDigits("OVERWRITE");
+
+    Char_t nameDigits[20];
+    sprintf(nameDigits,"START_D_%d",fManager->GetOutputEventNr());
+    TDirectory *wd = gDirectory;
+    outgime->GetDigitsDataLoader()->GetDirectory()->cd();
+    fdigits->Write(nameDigits);
+    wd->cd();
+
+    //    outgime->WriteDigits("OVERWRITE");
   }
 }
 
 
 //------------------------------------------------------------------------
-Bool_t AliSTARTDigitizer::RegisterPhotoE(AliSTARThitPhoton *hit)
+Bool_t AliSTARTDigitizer::RegisterPhotoE(/*AliSTARThitPhoton *hit*/)
 {
     Double_t    P = 0.2;    
     Double_t    p;
@@ -298,3 +317,4 @@ Bool_t AliSTARTDigitizer::RegisterPhotoE(AliSTARThitPhoton *hit)
     
     return kTRUE;
 }
+//----------------------------------------------------------------------------