]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TPC/AliTPCDigitizer.cxx
Clean-up of include files
[u/mrichter/AliRoot.git] / TPC / AliTPCDigitizer.cxx
index ebbf2d9afd82b90748fd1f191884a4d1014d1342..fa2aef886aa101929af86ea10e4b38a5c4453cfe 100644 (file)
@@ -38,6 +38,7 @@
 #include <TFile.h>
 #include <TDirectory.h>
 #include <Riostream.h>
+#include <TParameter.h>
 
 #include "AliTPCDigitizer.h"
 
@@ -45,6 +46,7 @@
 #include "AliTPCParam.h"
 #include "AliTPCParamSR.h" 
 #include "AliRun.h"
+#include "AliLoader.h"
 #include "AliPDG.h"
 #include "AliRunDigitizer.h"
 #include "AliSimDigits.h"
@@ -131,35 +133,51 @@ void AliTPCDigitizer::ExecFast(Option_t* option)
   AliTPC *pTPC  = (AliTPC *) gAlice->GetModule("TPC");
   AliTPCParam * param = pTPC->GetParam();
   
-  sprintf(s,param->GetTitle());
-  sprintf(ss,"75x40_100x60");
+  //sprintf(s,param->GetTitle());
+  snprintf(s,100,param->GetTitle());
+  //sprintf(ss,"75x40_100x60");
+  snprintf(ss,100,"75x40_100x60");
   if(strcmp(s,ss)==0){
     printf("2 pad-length geom hits with 3 pad-lenght geom digits...\n");
     delete param;
     param=new AliTPCParamSR();
   }
   else{
-   sprintf(ss,"75x40_100x60_150x60");
+    //sprintf(ss,"75x40_100x60_150x60");
+    snprintf(ss,100,"75x40_100x60_150x60");
    if(strcmp(s,ss)!=0) {
      printf("No TPC parameters found...\n");
      exit(2); 
    }
   }
   
-  pTPC->GenerNoise(500000); //create teble with noise
+  pTPC->GenerNoise(500000); //create table with noise
   //
   Int_t nInputs = fManager->GetNinputs();
   Int_t * masks = new Int_t[nInputs];
   for (Int_t i=0; i<nInputs;i++)
     masks[i]= fManager->GetMask(i);
   Short_t **pdig= new Short_t*[nInputs];   //pointers to the expanded digits array
-  Int_t **ptr=  new Int_t*[nInputs];       //pointers to teh expanded tracks array
+  Int_t **ptr=  new Int_t*[nInputs];       //pointers to the expanded tracks array
   Bool_t *active=  new Bool_t[nInputs];    //flag for active input segments
-
+  Char_t phname[100];
   
   //create digits array for given sectors
   // make indexes
-  
+  //
+  //create branch's in TPC treeD
+  orl = AliRunLoader::GetRunLoader(fManager->GetOutputFolderName());
+  ogime = orl->GetLoader("TPCLoader");
+  TTree * tree  = ogime->TreeD();
+  AliSimDigits * digrow = new AliSimDigits;  
+
+  if (tree == 0x0)
+   {
+     ogime->MakeTree("D");
+     tree  = ogime->TreeD();
+   }
+  tree->Branch("Segment","AliSimDigits",&digrow);
+  //  
   AliSimDigits ** digarr = new AliSimDigits*[nInputs]; 
   for (Int_t i1=0;i1<nInputs; i1++)
     {
@@ -174,28 +192,45 @@ void AliTPCDigitizer::ExecFast(Option_t* option)
        {
         cerr<<"AliTPCDigitizer: Input tree with SDigits not found in"
             <<" input "<< i1<<endl;
+        for (Int_t i2=0;i2<i1+1; i2++){ 
+          
+          if(digarr[i2])  delete digarr[i2];
+       }
+        delete [] digarr;
+        delete [] active;
+        delete []masks;
+        delete []pdig;
+        delete []ptr;
         return;
        }
-    
+
+      //sprintf(phname,"lhcphase%d",i1);
+      snprintf(phname,100,"lhcphase%d",i1);
+      TParameter<float> *ph = (TParameter<float>*)treear->GetUserInfo()
+                              ->FindObject("lhcphase0");
+      if(!ph){
+        cerr<<"AliTPCDigitizer: LHC phase  not found in"
+            <<" input "<< i1<<endl;
+        for (Int_t i2=0;i2<i1+1; i2++){ 
+          if(digarr[i2])  delete digarr[i2];
+       }
+        delete [] digarr;
+        delete [] active;
+        delete []masks;
+        delete []pdig;
+        delete []ptr;
+        return;
+      }
+      tree->GetUserInfo()->Add(new TParameter<float>(phname,ph->GetVal()));
+             //
       if (treear->GetIndex()==0)  
        treear->BuildIndex("fSegmentID","fSegmentID");
       treear->GetBranch("Segment")->SetAddress(&digarr[i1]);
     }
 
 
-  //create branch's in TPC treeD
-  AliSimDigits * digrow = new AliSimDigits;
 
-  orl = AliRunLoader::GetRunLoader(fManager->GetOutputFolderName());
-  ogime = orl->GetLoader("TPCLoader");
-  
-  TTree * tree  = ogime->TreeD();
-  if (tree == 0x0)
-   {
-     ogime->MakeTree("D");
-     tree  = ogime->TreeD();
-   }
-  tree->Branch("Segment","AliSimDigits",&digrow);
+
   //
 
   param->SetZeroSup(2);
@@ -361,8 +396,8 @@ void AliTPCDigitizer::ExecSave(Option_t* option)
   ogime = orl->GetLoader("TPCLoader");
   
   rl = AliRunLoader::GetRunLoader(fManager->GetInputFolderName(0));
-  gime = rl->GetLoader("TPCLoader");
-  
+  //gime = rl->GetLoader("TPCLoader");
+  rl->GetLoader("TPCLoader");
   rl->LoadgAlice();
   AliRun* alirun = rl->GetAliRun();
   
@@ -372,26 +407,37 @@ void AliTPCDigitizer::ExecSave(Option_t* option)
   printf("noise %f \n",  param->GetNoise()*param->GetNoiseNormFac());
   //
   Int_t nInputs = fManager->GetNinputs();
+  // stupid protection...
+  if (nInputs <= 0) return;
+  //
   Int_t * masks = new Int_t[nInputs];
   for (Int_t i=0; i<nInputs;i++)
     masks[i]= fManager->GetMask(i);
 
   AliSimDigits ** digarr = new AliSimDigits*[nInputs]; 
+  for(Int_t ii=0;ii<nInputs;ii++) digarr[ii]=0;
+
   for (Int_t i1=0;i1<nInputs; i1++)
    {
-    digarr[i1]=0;
+     //digarr[i1]=0;
     //    intree[i1]
     rl = AliRunLoader::GetRunLoader(fManager->GetInputFolderName(i1));
     gime = rl->GetLoader("TPCLoader");
 
     TTree * treear =  gime->TreeS();
-    TBranch * br = treear->GetBranch("fSegmentID");
-    if (br) br->GetFile()->cd();
+    //
     if (!treear) {      
-      cerr<<" TPC -  not existing input = \n"<<i1<<" ";      
+      cerr<<" TPC -  not existing input = \n"<<i1<<" "; 
+      delete [] masks;  
+      for(Int_t i=0; i<nInputs; i++) delete digarr[i];
+      delete [] digarr;
+      return;   
     } 
+    //
+    TBranch * br = treear->GetBranch("fSegmentID");
+    if (br) br->GetFile()->cd();
     treear->GetBranch("Segment")->SetAddress(&digarr[i1]);
-  }
+   }
   
   rl = AliRunLoader::GetRunLoader(fManager->GetInputFolderName(0));
   gime = rl->GetLoader("TPCLoader");
@@ -522,6 +568,6 @@ void AliTPCDigitizer::ExecSave(Option_t* option)
     
   delete digrow;     
   for (Int_t i1=0;i1<nInputs; i1++) delete digarr[i1];
-  delete []masks;
-  delete digarr;  
+  delete [] masks;
+  delete [] digarr;  
 }