]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSBeamTestDigSSD.cxx
Added contructor to create an object from the DCS file name (instead of the TMap)
[u/mrichter/AliRoot.git] / ITS / AliITSBeamTestDigSSD.cxx
index 7498352d4ecf07eca7ebe912a4a8e052e123e615..35b6e485ba50af9b34d9bcd9e193b0af7cfca556 100644 (file)
@@ -5,23 +5,28 @@
 // Date: October 2004                  //
 ////////////////////////////////////////
 
+#include "AliITSgeom.h"
 #include "AliITSdigitSSD.h"
-#include "AliRawReaderDate.h"
+#include "AliRawReader.h"
 #include "AliITSRawStreamSSDv1.h"
 #include "AliITSBeamTestDigSSD.h"
-#include "AliITSBeamTest.h"
+#include <TBranch.h>
+#include <TTree.h>
 
 ClassImp(AliITSBeamTestDigSSD)
 
 //_____________________________________________________________
-AliITSBeamTestDigSSD::AliITSBeamTestDigSSD(): AliITSBeamTestDig() {
+AliITSBeamTestDigSSD::AliITSBeamTestDigSSD(): AliITSBeamTestDig(),
+fFlagHeader(0) 
+{
   //
   // Constructor
   //  
 }
 
 //_____________________________________________________________
-AliITSBeamTestDigSSD::AliITSBeamTestDigSSD(const Text_t* name, const Text_t* title): AliITSBeamTestDig(name,title) {
+AliITSBeamTestDigSSD::AliITSBeamTestDigSSD(const Text_t* name, const Text_t* title): AliITSBeamTestDig(name,title),
+fFlagHeader(0){
   //
   // Constructor
   //
@@ -39,25 +44,44 @@ void AliITSBeamTestDigSSD::Exec(Option_t* /*opt*/) {
   //Reads raw data for SSD, fill SSD digits tree, returns 1 if real data,
   //returns 2 if calibration (injector) data, returns 3 if calibration (test pul  //se) event
 
-  TBranch* branch = fTreeD->GetBranch("ITSDigitSSD");
+  TBranch* branch = fTreeD->GetBranch("ITSDigitsSSD");
+  if(!fITSgeom){
+    Error("Exec","fITSgeom is null!");
+    return;
+  }
+
+  Int_t nsdd=0;
+  Int_t nspd=0;
+  Int_t nssd=0;
+  for(Int_t nlay=1;nlay<=fITSgeom->GetNlayers();nlay++){
+    for(Int_t nlad=1;nlad<=fITSgeom->GetNladders(nlay);nlad++){
+      for(Int_t ndet=1;ndet<=fITSgeom->GetNdetectors(nlay);ndet++){
+       Int_t index=fITSgeom->GetModuleIndex(nlay,nlad,ndet);
+       TString dtype(fITSgeom->GetModuleTypeName(index));
+       if(dtype.Contains("SPD")) nspd++;
+       if(dtype.Contains("SDD")) nsdd++;
+       if(dtype.Contains("SSD")) nssd++;
+      }
+    }
+  }
+  Int_t maxn=nspd+nsdd+nssd;
 
-  TClonesArray** newdigits = new TClonesArray*[fBt->GetNSSD()];
+  TClonesArray** newdigits = new TClonesArray*[maxn];
 
-  Int_t* idig = new Int_t[fBt->GetNSSD()];
+  Int_t* idig = new Int_t[maxn];
 
-  for (Int_t idet =0; idet < fBt->GetNSSD();idet++) {
+  for (Int_t idet =0; idet <maxn;idet++) {
      newdigits[idet] = new TClonesArray("AliITSdigitSSD");
      idig[idet]=0;  
    }
   
   // this constructor sets the flag to select SSD data only 
   // the Next method below will then jump to SSD data for this event
-
-  AliITSRawStreamSSDv1 str(fReaderDate);
+  AliITSRawStreamSSDv1 str(fReader);
 
   // no selection of equipment 
-  //fReaderDate->SelectEquipment(-1);
-  //fReaderDate->SelectEquipment(17,102,102);
+  //fReader->SelectEquipment(-1);
+  //fReader->SelectEquipment(17,102,102);
 
   while(str.Next()){   
     
@@ -67,30 +91,32 @@ void AliITSBeamTestDigSSD::Exec(Option_t* /*opt*/) {
     Int_t strip = str.GetStrip();
     Int_t signal = str.GetSignal();
     Int_t module = str.GetModuleID();
-    if( (module<10) || (module>13) ) continue;
+    Int_t module1= module-10+nsdd+nspd;
+     if( (module<10) || (module>13) ) continue;
+     if(module1>7) continue;
     const Int_t kdgt[3]={side,strip,signal};
-    
-    //  SSD modules 10, 11, 12 and 13
-    new ( (*newdigits[module-10])[idig[module-10]] ) AliITSdigitSSD(kdgt);    
-    idig[module-10]++;
-    
+     //  SSD modules 10, 11, 12 and 13
+    new ( (*newdigits[module1])[idig[module1]] ) AliITSdigitSSD(kdgt);    
+    idig[module1]++;
   } // end while
   
-  for(Int_t n=0;n<fBt->GetNSSD();n++){
+  for(Int_t n=0;n<maxn;n++){
     branch->SetAddress(&newdigits[n]);
     branch->Fill();  
   }
   
-  fTreeD->SetEntries(fBt->GetNSPD()+fBt->GetNSDD()+fBt->GetNSSD());
+  fTreeD->SetEntries(maxn);
     
-  fReaderDate->Reset();
+  fReader->Reset();
   
   fTreeD->AutoSave();
   
-  for(Int_t n=0;n<fBt->GetNSSD();n++){
+  for(Int_t n=0;n<maxn;n++){
     delete newdigits[n];
   }
   
+  delete [] newdigits;
+  delete idig;
 }