Digits and RecPoint with NewIO
authoralla <alla@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 15 Aug 2003 07:17:16 +0000 (07:17 +0000)
committeralla <alla@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 15 Aug 2003 07:17:16 +0000 (07:17 +0000)
START/AliSTARTDigitizer.cxx
START/AliSTARTDigitizer.h
START/AliSTARTvertex.cxx
START/AliSTARTvertex.h
START/STARTLinkDef.h
START/VertexMaker.C
START/libSTART.pkg
START/readDigits.C

index 9c3ae72d0b64cb0f0b2bde687e4096393b2475fc..4e7a4b5f280e6fdd796d926f8797f5d3dcfb8180 100644 (file)
@@ -37,6 +37,7 @@
 #include "AliPDG.h"
 #include "AliLoader.h"
 #include "AliRunLoader.h"
+#include "AliSTARTLoader.h"
 
 #include <stdlib.h>
 #include <Riostream.h>
@@ -92,6 +93,7 @@ void AliSTARTDigitizer::Exec(Option_t* option)
 
   outRL = AliRunLoader::GetRunLoader(fManager->GetOutputFolderName());
   outgime = outRL->GetLoader("STARTLoader");
+  cout<<" outgime "<<outgime<<endl;
 
 #ifdef DEBUG
   cout<<"AliSTARTDigitizer::>SDigits2Digits start...\n";
@@ -117,11 +119,12 @@ 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;                                          //!!!
   TBranch *brHits=0;
@@ -131,8 +134,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,18 +144,24 @@ 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));
+    //   AliSTARTLoader *pSTARTloader = (AliSTARTLoader*)fLoader;
+    //  pSTARTLoader->LoadHits("READ");
     ingime = inRL->GetLoader("STARTLoader");
+    cout<<" ingime "<<ingime<<endl;
+    //    AliSTARTLoader *pSTARTLoader ;
     ingime->LoadHits("READ");//probably it is necessary to load them before
+    ingime->LoadDigits("UPDATE");//probably it is necessary to load them before
     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) {
+      cout<<" brHits "<<endl;
       START->SetHitsAddressBranch(brHits,brHitPhoton);
     }else{
       cerr<<"EXEC Branch START hit not found"<<endl;
@@ -165,7 +172,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,13 +191,15 @@ void AliSTARTDigitizer::Exec(Option_t* option)
        } //hit photons
       } //track photons
     } // was photons
-
+    */
     // Start loop on tracks in the hits containers
+    cout<<" fHits "<<fHits<<endl;;
     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);
+       startHit   = (AliSTARThit*) fHits->UncheckedAt(hit);
        pmt=startHit->fPmt;
        volume = startHit->fVolume;
        if(volume==1){
@@ -281,7 +292,31 @@ void AliSTARTDigitizer::Exec(Option_t* option)
       {timeAv=999999; timeDiff=99999;}
 
 // trick to find out output dir:
-    outgime->WriteDigits("OVERWRITE");
+
+
+/*
+   // trick to find out output dir:
+    TTree *outTree = fManager->GetTreeD();
+    if (!outTree) {
+      cerr<<"something wrong with output...."<<endl;
+      exit(111);
+    }
+
+    Char_t nameDigits[20];
+    TDirectory *wd = gDirectory;
+    outTree->GetDirectory()->cd();
+    fdigits->Write(nameDigits);
+    cout<<nameDigits<<endl;
+    wd->cd();
+*/  
+    cout<<" outgime v konce "<<outgime<<endl;
+    outgime->Dump();
+    outgime->Print();
+    Char_t nameDigits[20];
+    sprintf(nameDigits,"START_D_%d",fManager->GetOutputEventNr());
+    fdigits->Write(nameDigits);
+
+    //    outgime->WriteDigits("OVERWRITE");
   }
 }
 
@@ -298,3 +333,4 @@ Bool_t AliSTARTDigitizer::RegisterPhotoE(AliSTARThitPhoton *hit)
     
     return kTRUE;
 }
+//----------------------------------------------------------------------------
index fac625c545b5a6389b4a7fe7c8d300338e7b3ec2..d921784f7ee92f1c82929cb4a0945edba26b80a1 100644 (file)
@@ -4,6 +4,8 @@
  * See cxx source for full Copyright notice                               */
 
 #include "AliDigitizer.h"
+#include "AliLoader.h"
+#include "AliRunLoader.h"
 
 class AliRunDigitizer;
 class AliSTART;
@@ -25,7 +27,7 @@ class AliSTARTDigitizer : public AliDigitizer {
   // Do the main work
   void Exec(Option_t* option=0) ;
   Bool_t RegisterPhotoE(AliSTARThitPhoton *hit);                       //!!!
-  
+
   enum {kBgTag = -1};
 
 private:
index 03870f6a5c9782637813c4064f14aeda5a9991f5..292fcd6f400113caaa09b7d8b9c5b461b16305e2 100644 (file)
@@ -41,7 +41,7 @@ AliSTARTvertex::AliSTARTvertex( Int_t * Zposit)
   Zposit = &fZposition ;
 }
 
-void AliSTARTvertex::Reconstruct(Int_t evNumber=1
+void AliSTARTvertex::Reconstruct() 
 {
   /***************************************************
   Resonstruct digits to vertex position
@@ -50,7 +50,26 @@ void AliSTARTvertex::Reconstruct(Int_t evNumber=1)
   Int_t timediff;
   Float_t timePs;
   char nameTD[8],nameTR[8];
-
+ char filename[100];
+  sprintf(filename,"galice.root");
+  AliRunLoader* rl = AliRunLoader::Open("galice.root",AliConfig::fgkDefaultEventFolderName,"read");
+  if (rl == 0x0)
+   {
+     cerr<<"Can not open session for file galice.root\n";
+     return;
+   }
+
+  rl->LoadgAlice();
+  gAlice = rl->GetAliRun();
+  
+  AliSTART* START  = (AliSTART *)gAlice->GetDetector("START");
+  
+  rl->LoadHeader();
+  rl->LoadKinematics("READ");
+  Int_t retval;
+  AliLoader* lstart = rl->GetLoader("STARTLoader");
+  lstart->LoadDigits("READ");
   AliSTARTdigit *digits;
   AliSTARTvertex *fvertex;
  
@@ -60,31 +79,42 @@ void AliSTARTvertex::Reconstruct(Int_t evNumber=1)
  // Event ------------------------- LOOP  
    
   // gAlice->GetEvent(evNumber);
-
-  sprintf(nameTD,"START_D_%d",evNumber);
-  TObject *td = (TObject*)gDirectory->Get(nameTD);
-  printf("%s\n",nameTD);
+  Int_t iNevents=rl->GetNumberOfEvents();
+  cout<<"  nevents   "<<iNevents<<endl;
   
-  if (!td) {
-    cerr<<"something wrong with output...."<<endl;
-    exit(111);
-  }
-  td->Read(nameTD);
-  digits->Read(nameTD);
-  if(digits->GetTimeDiff()<TMath::Abs(1000))
-    {
-      timediff=digits->GetTimeDiff();     //time in number of channels
-      timePs=(512-timediff)*2.5;       // time in Ps channel_width =10ps
-      cout<<"timediff "<< timediff<<" timePs "<<timePs<<endl;
-      // Float_t c = 299792458/1.e9;  //speed of light cm/ps
-      Float_t c = 0.3;  //speed of light mm/ps
-      Float_t Zposit=timePs*c;// for 0 vertex
-      cout<<" Zposit "<<Zposit<<endl;
-      fvertex->Set((Int_t) Zposit);
+  for (Int_t evNumber=0; evNumber<iNevents; evNumber++){
+    rl->GetEvent(evNumber);
+    lstart->LoadDigits("READ");
+    gDirectory->ls();
+
+    sprintf(nameTD,"START_D_%d",evNumber);
+    TObject *td = (TObject*)gDirectory->Get(nameTD);
+    printf("%s\n",nameTD);
+    //   td->Dump();
+    if (!td) {
+      cerr<<"something wrong with input...."<<endl;
+      exit(111);
+    }
+    td->Read(nameTD);
+    digits->Read(nameTD);
+    if(digits->GetTimeDiff()<TMath::Abs(1000))
+      {
+       timediff=digits->GetTimeDiff();     //time in number of channels
+       timePs=(512-timediff)*2.5;       // time in Ps channel_width =10ps
+       cout<<"timediff "<< timediff<<" timePs "<<timePs<<endl;
+       // Float_t c = 299792458/1.e9;  //speed of light cm/ps
+       Float_t c = 0.3;  //speed of light mm/ps
+       Float_t Zposit=timePs*c;// for 0 vertex
+       cout<<" Zposit "<<Zposit<<endl;
+       fvertex->Set((Int_t) Zposit);
       }
-  sprintf(nameTR,"START_R_%d",evNumber);
-  printf("%s\n",nameTR);
-  fvertex->Write(nameTR);
+    lstart->LoadRecPoints("UPDATE");
+    sprintf(nameTR,"START_R_%d",evNumber);
+    printf("%s\n",nameTR);
+    fvertex->Write(nameTR);
+
+
+  }
 }
 
 
index 5887727e9574338b14d52770a4a060bfd8ed8910..eea93d296c5f1e1290fffa2957ebd2c25736251e 100644 (file)
@@ -17,7 +17,7 @@ class AliSTARTvertex   : public TObject {
  public:
     AliSTARTvertex() {}
     AliSTARTvertex(Int_t *);
-    void Reconstruct(Int_t);
+    void Reconstruct();
     Int_t GetVertex();
     virtual ~AliSTARTvertex() {}
     void Set(Int_t);
index 9c6ba854c35bf9cb0187f761a90b61df17d9eb0b..a49f2bb6efc66734ace81022999a00fe7c21b661 100755 (executable)
@@ -17,5 +17,6 @@
 #pragma link C++ class  AliSTARTdigit+;
 #pragma link C++ class  AliSTARTvertex+;
 #pragma link C++ class  AliSTARTDigitizer+;
+#pragma link C++ class  AliSTARTLoader+;
 
 #endif
index c75bee510683d5a715a744cb04c7b73db98b0860..5f9998597c0b3047801c97342fbcb9561ec7a414 100644 (file)
@@ -6,29 +6,42 @@ void VertexMaker(Int_t evNumber=1)
     gROOT->LoadMacro("loadlibs.C");
     loadlibs();
   }
-  
-  // Connect the Root Galice file containing Geometry, Kine and Hits
-    TFile *file =  (TFile*)gROOT->GetListOfFiles()->FindObject("galice.root");
-    if (!file) file = new TFile("~/w0/START/galice.root","UPDATE");
-   
-  // Get AliRun object from file or create it if not on file
-  if (!gAlice) {
-    gAlice = (AliRun*)file->Get("gAlice");
-    if (gAlice) printf("AliRun object found on file\n");
-    if (!gAlice) gAlice = new AliRun("gAlice","Alice test program");
-  }
-
 
+  char filename[100];
+  sprintf(filename,"galice.root");
+  AliRunLoader* rl = AliRunLoader::Open("galice.root",AliConfig::fgkDefaultEventFolderName,"read");
+  if (rl == 0x0)
+   {
+     cerr<<"Can not open session for file galice.root\n";
+     return;
+   }
+
+  rl->LoadgAlice();
+  gAlice = rl->GetAliRun();
+  
+  AliSTART* START  = (AliSTART *)gAlice->GetDetector("START");
+  /*  
+  rl->LoadHeader();
+  
+  rl->LoadKinematics("READ");
+  Int_t retval;
+  AliLoader* lstart = rl->GetLoader("STARTLoader");
+  lstart->LoadDigits("READ");
+  //  lstart->Dump();
+  //  lstart->LoadRecPoints("UPDATE");
+  */  
   vertex= new AliSTARTvertex();
   TBranch *bRec=0;
-
+  vertex->Dump();
   
  // Event ------------------------- LOOP  
-  for (Int_t j=0; j<evNumber; j++){
-    vertex->Reconstruct(j);
-  }
-  file->Write();
-  file->Close();
+  //     Int_t iNevents=rl->GetNumberOfEvents();
+  // cout<<"  nevents   "<<iNevents<<endl;
+
+  // for (Int_t j=0; j<iNevents; j++){
+  //  lstart->LoadDigits("READ");
+    vertex->Reconstruct();
+    //  }
 
 } // end of macro
 
index 7b9ea729816cef9fb76314ce0eeb5501efe28707..f5b93f1fb78aa7ca843403e826dbed1d62e2d8b4 100644 (file)
@@ -1,4 +1,4 @@
-SRCS= AliSTART.cxx AliSTARTv0.cxx AliSTARTv1.cxx AliSTARTv2.cxx AliSTARThit.cxx AliSTARTdigit.cxx AliSTARTvertex.cxx AliSTARTDigitizer.cxx AliSTARThitPhoton.cxx 
+SRCS= AliSTART.cxx AliSTARTv0.cxx AliSTARTv1.cxx AliSTARTv2.cxx AliSTARThit.cxx AliSTARTdigit.cxx AliSTARTvertex.cxx AliSTARTDigitizer.cxx AliSTARThitPhoton.cxx AliSTARTLoader.cxx 
 
 HDRS= $(SRCS:.cxx=.h)
 
index 2ee8df315bf30c7b5f0362ce512c2d94cadc849f..188e41ff69e533a38ee7b90cda913a3da817501b 100644 (file)
@@ -1,4 +1,4 @@
-void readDigits(Int_t evNumber=1
+void readDigits() 
 {
  
   // Dynamically link some shared libs
@@ -6,19 +6,29 @@ void readDigits(Int_t evNumber=1)
     gROOT->LoadMacro("loadlibs.C");
     loadlibs();
   }
+  char filename[100];
+  sprintf(filename,"galice.root");
+  AliRunLoader* rl = AliRunLoader::Open("galice.root",AliConfig::fgkDefaultEventFolderName,"read");
+  if (rl == 0x0)
+   {
+     cerr<<"Can not open session for file galice.root\n";
+     return;
+   }
+
+  rl->LoadgAlice();
+  gAlice = rl->GetAliRun();
   
-  // Connect the Root Galice file containing Geometry, Kine and Hits
-  TFile *file =  (TFile*)gROOT->GetListOfFiles()->FindObject("galice.root");
-  //TFile *file =  (TFile*)gROOT->GetListOfFiles()->FindObject("galice.root");
-  if (!file) file = new TFile("production.root","UPDATE");
+  AliSTART* START  = (AliSTART *)gAlice->GetDetector("START");
   
-  // Get AliRun object from file or create it if not on file
-  if (!gAlice) {
-    gAlice = (AliRun*)file->Get("gAlice");
-    if (gAlice) printf("AliRun object found on file\n");
-    if (!gAlice) gAlice = new AliRun("gAlice","Alice test program");
-  }
-  char nameTD[8],nameTR[8];
+  rl->LoadHeader();
+  rl->LoadKinematics("READ");
+  Int_t retval;
+  AliLoader* lstart = rl->GetLoader("STARTLoader");
+
+  Int_t iNevents=rl->GetNumberOfEvents();
+  cout<<"  nevents   "<<iNevents<<endl;
+
+   char nameTD[8],nameTR[8];
 
   TH1F *hTimediff = new TH1F("hTimediff","Time difference",100,0,200);
   TH1F *hTimePs = new TH1F("hTimePs","Time in Ps",100,-200,200);
@@ -33,23 +43,33 @@ void readDigits(Int_t evNumber=1)
   TH1F *hBestTimeleft = new TH1F("hBestTimeleft","First time left",
                                 100,11000.,13000.);
    
+  //  digits = new AliSTARTdigit();
+  AliSTARTdigit *digits   ; // digits
   digits = new AliSTARTdigit();
   timeRight = new TArrayI(12);
   timeLeft = new TArrayI(12);
   ADCRight = new TArrayI(12);
   ADCLeft = new TArrayI(12);
 
  // Event ------------------------- LOOP  
-  for (Int_t j=0; j<evNumber; j++){
+  for (Int_t j=0; j<iNevents; j++){
     //  gAlice->GetEvent(j);
+    rl->GetEvent(j);
+    //   lstart->Dump();
+    lstart->LoadHits("READ");
+    lstart->LoadDigits("READ");
     sprintf(nameTD,"START_D_%d",j);
     printf("%s\n",nameTD);
-    TObject *td = (TObject*)gDirectory->Get(nameTD);
-    digits->Read(nameTD);
-  // digits->Dump();
+  TObject *td = (TObject*)gDirectory->Get(nameTD);
+  // td->Dump();
+    //   cout<<" td "<<td<<endl;
+  td->Read(nameTD);
+   digits->Read(nameTD);
+   //   digits->Read(nameTD);
   // digits->Print();
-    printf("time %d\n",digits->GetTimeDiff());
-    
+  printf("time %d\n",digits->GetTimeDiff());
+   
     if(digits->GetTimeDiff()!=999999){
       Int_t timediff = digits->GetTimeDiff();
       //     Double_t timePs=(timediff-128)*10.; // time in Ps channel_width =10ps