full chain fo extended geometry
authoralla <Alla.Maevskaya@cern.ch>
Tue, 27 Jan 2015 18:48:09 +0000 (19:48 +0100)
committeralla <Alla.Maevskaya@cern.ch>
Tue, 27 Jan 2015 21:24:44 +0000 (22:24 +0100)
FIT/FITbase/AliFITDigit.h
FIT/FITbase/AliFITDigitizer.cxx
FIT/FITbase/AliFITDigitizer.h
FIT/FITbase/AliFITRawData.cxx
FIT/FITbase/AliFITRawData.h
FIT/FITbase/AliFITRawReader.cxx
FIT/FITrec/AliFITReconstructor.cxx

index 804ea81..59fa19e 100644 (file)
@@ -27,7 +27,7 @@ class AliFITDigit: public AliDigit {
   Int_t fTimeLED;    // array's LED
   Int_t fTimeQT0;    // array's QT0 start QTC amplitude
   Int_t fTimeQT1;    // array's QT1 stop QTC amplitude
- Int_t fNPMT;       // number of channel [0,79] C side; [80,159] Aside
+  Int_t fNPMT;       // number of channel [0,79] C side; [80,159] Aside
  
   AliFITDigit( const AliFITDigit& );
   AliFITDigit& operator=(const AliFITDigit&); 
index 60539f4..477ef07 100644 (file)
@@ -142,19 +142,20 @@ void AliFITDigitizer::Digitize(Option_t* /*option*/)
 void AliFITDigitizer::DigitizeHits()
 {
 
-   Int_t hit, nhits;
-  Float_t time[160], besttime[160];
-  Int_t countE[160];
+  Int_t hit, nhits;
+  Float_t time[240], besttime[240];
+  Int_t countE[240];
   Int_t timeCFD, timeLED, timeQT1, timeQT0;
 
   Int_t threshold = 0; //photoelectrons
   Float_t channelWidth = 24.4 ; 
   Int_t pmt, mcp, volume, qt; 
   //eqailized distance from IP
-  Float_t zdetC = 82;
-  Float_t zdetA = 375.;
+  Float_t zdetC = 84;
+  Float_t zdetA = 335.;
   Float_t c = 0.0299792458; // cm/ps
   Float_t eqdistance = (zdetA - zdetC) /c;
+  Float_t ph2Mip = 318; 
   
   AliFITHits  *startHit;
   TBranch *brHits=0;
@@ -166,7 +167,7 @@ void AliFITDigitizer::DigitizeHits()
       continue;
      }
 
-  for (Int_t i0=0; i0<160; i0++)
+  for (Int_t i0=0; i0<240; i0++)
       {
        time[i0]=besttime[i0]=999999; countE[i0]=0;
       }
@@ -198,31 +199,34 @@ void AliFITDigitizer::DigitizeHits()
          AliError("The unchecked hit doesn't exist");
          break;
        }
+       Float_t ipart = startHit->Particle();
+       if (ipart<49) continue;
        pmt = startHit->Pmt();
        mcp = startHit->MCP();
        volume = startHit->Volume();
-       numpmt= volume*80 +4*(mcp) + (pmt-1);
+       if(volume==2) continue;
+       numpmt= 4*mcp + pmt;
        besttime[numpmt] = startHit->Time();
        if(besttime[numpmt]<time[numpmt]) time[numpmt]=besttime[numpmt];
        countE[numpmt]++;
       } //hits loop
   } //track loop
   
-  for (Int_t ipmt=0; ipmt<160; ipmt++)
+  for (Int_t ipmt=0; ipmt<240; ipmt++)
     {
       if (countE[ipmt]>threshold && time[ipmt]<50000 && time[ipmt]>0 ) {
        //fill ADC
        // QTC procedure:
-       // 1MIP ->200phe  ;
-         qt= countE[ipmt] /*/ph2Mip*/;  // 50mv/Mip amp in mV 
-         //  fill TDC
-         if (ipmt<80) time[ipmt] = time[ipmt] + eqdistance;
-         timeCFD = Int_t (gRandom->Gaus(time[ipmt], 50)/channelWidth ); 
-         timeLED =  Int_t (time[ipmt]/channelWidth );
-         timeQT0 = 0;
-         timeQT1 = Int_t (qt ) ;
-         AliDebug(1,Form("Digits:::::  numpmt %i  time CFD %i QTC  %i :: counts %i \n ",  ipmt, timeCFD, timeQT1,  countE[ipmt]) );
-         fFIT-> AddDigit(ipmt,   timeCFD, timeLED, timeQT0,  timeQT1, 0);
+       // 1MIP ->318phe  ;
+       qt= 1000* countE[ipmt] /ph2Mip;  // 318 ph/Mip 
+       //  fill TDC
+       if (ipmt>100) time[ipmt] = time[ipmt] + eqdistance;
+       timeCFD = Int_t (gRandom->Gaus(time[ipmt], 50)/channelWidth ); 
+       timeLED =  Int_t (time[ipmt]/channelWidth );
+       timeQT0 = 0;
+       timeQT1 = qt ;
+       AliDebug(1,Form("Digits:::::  numpmt %i  time CFD %i QTC  %i :: counts %i \n ",  ipmt, timeCFD, timeQT1,  countE[ipmt]) );
+       fFIT-> AddDigit(ipmt,   timeCFD, timeLED, timeQT0,  timeQT1, 0);
       } //hitted PMTs
     } //pmt loop
   fitLoader->UnloadHits();
@@ -231,7 +235,7 @@ void AliFITDigitizer::DigitizeHits()
 }
 
 //____________________________________________________________________________
-void AliFITDigitizer::AddSDigit(Int_t npmt,  
+void AliFITDigitizer::AddDigit(Int_t npmt,  
                                Int_t timeCFD, Int_t timeLED, Int_t timeQT0, 
                                Int_t timeQT1) 
  { 
index c26f78b..638219c 100644 (file)
@@ -26,7 +26,7 @@ class AliFITDigitizer : public AliDigitizer {
  // Do the main work
   void Digitize(Option_t* /*option=0*/) ;
   void AddDigit(Int_t* digits, Int_t*){;} // Not implemented
-  void AddSDigit(Int_t npmt,
+  void AddDigit(Int_t npmt,
                 Int_t timeCFD, Int_t timeLED, Int_t timeQT0, Int_t timeQT1) ;
  
   void ResetDigits();
index b7d4564..99e33cd 100644 (file)
@@ -78,7 +78,7 @@ ClassImp(AliFITRawData)
   if (runloader) {
     fEventNumber = runloader->GetEventNumber();
   }
-   for ( Int_t k=0; k<500; k++)   fAllData[k] = -1;
+   for ( Int_t k=0; k<1000; k++)   fAllData[k] = -1;
 
 }
 
@@ -97,7 +97,7 @@ AliFITRawData::AliFITRawData(const AliFITRawData &r):TObject(),
   //
   
   ((AliFITRawData &) r).Copy(*this);
-  for ( Int_t k=0; k<500; k++)   fAllData[k] = -1;
+  for ( Int_t k=0; k<1000; k++)   fAllData[k] = -1;
 
   
 }
@@ -134,14 +134,14 @@ void AliFITRawData::GetDigits()
   Int_t ndigits = fFITdigitArray->GetEntries();
   AliDebug(2, Form(" Number of read digits = %d",ndigits));
   AliFITDigit *digs;
-  for(Int_t i=0; i<500; i++) fAllData[i]=-1;
+  for(Int_t i=0; i<1000; i++) fAllData[i]=-1;
   // loop on FIT digits
   for (digit=0; digit<ndigits; digit++) {
     digs = (AliFITDigit*)fFITdigitArray->UncheckedAt(digit);
     Int_t pmt = digs->NPMT();
     fAllData[pmt] = digs->TimeCFD();
-    fAllData[pmt+160] = digs->TimeQT0();
-    fAllData[pmt+320] = digs->TimeQT1();
+    fAllData[pmt+240] = digs->TimeQT0();
+    fAllData[pmt+480] = digs->TimeQT1();
   }
   //  Int_t error=0;
   
@@ -193,7 +193,8 @@ Int_t AliFITRawData::RawDataFIT(TBranch* branch)
          fIndex++;
          iTDC = det / 4;
          channel = ch[det - iTDC*4];
-         AliDebug(2, Form("det %i  alldata %i trm %i chain %i tdc %i channel %i \n",det, det + itrm*120 + chain*60, itrm, chain, iTDC, det - iTDC*4) );
+         //      AliDebug(2, Form("det %i  alldata %i trm %i chain %i tdc %i channel %i \n",det, det + itrm*120 + chain*60, itrm, chain, iTDC, det - iTDC*4) );
+         printf("det %i  alldata %i trm %i chain %i tdc %i channel %i \n",det, det + itrm*120 + chain*60, itrm, chain, iTDC, det - iTDC*4);
          FillTime(channel,iTDC, time);
        }
       } 
index 113a8ff..bbcd2f9 100644 (file)
@@ -54,7 +54,7 @@ class AliFITRawData : public TObject {
   Int_t fIndex;             //number of 32 words to be stored into the output file
   Int_t fEventNumber;       // current event number
   Int_t fDataHeaderPos;
-   Int_t fAllData[500];
+  Int_t fAllData[1000];
   AliFstream* fFile;        //logical name of the I/O file
  
   ClassDef(AliFITRawData,1)             //  FIT raw data class
index 470033f..d53b6e5 100644 (file)
@@ -48,7 +48,7 @@ ClassImp(AliFITRawReader)
   
   fRawReader->Reset();
   fRawReader->Select("FIT"); 
-  for ( Int_t k=0; k<500; k++)   fAllData[k] = -1;
+  for ( Int_t k=0; k<720; k++)   fAllData[k] = -1;
  
 }
 //_____________________________________________________________________________
@@ -81,7 +81,7 @@ Bool_t  AliFITRawReader::Next()
   Bool_t correct=kTRUE;
   Int_t header;
   
-  for ( Int_t k=0; k<500; k++)   fAllData[k] = -1;
+  for ( Int_t k=0; k<1000; k++)   fAllData[k] = -1;
   
   
   do {
index 9ebb1f6..51d3f54 100644 (file)
@@ -78,20 +78,20 @@ void AliFITReconstructor::ConvertDigits(AliRawReader* rawReader, TTree* digitsTr
   AliFITRawReader myrawreader(rawReader);
   if (myrawreader.Next()) 
     {
-      Int_t allData[500];
-      for (Int_t i=0; i<500; i++)  allData[i]=0;
-      for (Int_t i=0; i<500; i++) 
+      Int_t allData[720];
+      for (Int_t i=0; i<720; i++)  allData[i]=0;
+      for (Int_t i=0; i<720; i++) 
        if(myrawreader.GetData(i)>0)  { 
          allData[i]=myrawreader.GetData(i);
        }
    
       Int_t timeCFD, timeLED, timeQT1, timeQT0;
-      for (Int_t ipmt=0; ipmt<160; ipmt++) {
+      for (Int_t ipmt=0; ipmt<2400; ipmt++) {
        if(allData[ipmt]>0) {
          timeCFD = allData[ipmt];
          timeLED = allData[ipmt];
-         timeQT0= allData[ipmt+160];
-         timeQT1 = allData[ipmt+320];
+         timeQT0= allData[ipmt+240];
+         timeQT1 = allData[ipmt+480];
          //add digit
          new((*fDigits)[fDigits->GetEntriesFast()] )
            AliFITDigit( ipmt,timeCFD, timeLED, timeQT0, timeQT1, 0);
@@ -159,8 +159,8 @@ void AliFITReconstructor::FillESD(TTree *digitsTree, TTree * /*clustersTree*/, A
   }
   const Float_t max_time = 1e7;
   Int_t pmt=-1;
-  Float_t  time[160],amp[160];  
-  for(Int_t i=0; i<160; i++)   {  time[i]=max_time; amp[i]=0;}
+  Float_t  time[240],amp[240];  
+  for(Int_t i=0; i<240; i++)   {  time[i]=max_time; amp[i]=0;}
   
   Int_t nEntries = (Int_t)digitsTree->GetEntries();
   for (Int_t iev=0; iev<nEntries; iev++) {
@@ -171,7 +171,7 @@ void AliFITReconstructor::FillESD(TTree *digitsTree, TTree * /*clustersTree*/, A
       AliFITDigit* digit = (AliFITDigit*) fDigits->At(dig);      
       pmt = digit->NPMT();
       time[pmt] = Float_t (digit->TimeCFD() );
-      amp[pmt] = Float_t (digit->TimeQT1() - digit->TimeQT0() );
+      amp[pmt] = 0.001 * Float_t (digit->TimeQT1() - digit->TimeQT0() );
     } 
     fESDFIT->SetFITtime(time);         // best TOF on each PMT 
     fESDFIT->SetFITamplitude(amp);     // number of particles(MIPs) on each 
@@ -179,10 +179,10 @@ void AliFITReconstructor::FillESD(TTree *digitsTree, TTree * /*clustersTree*/, A
     Float_t firsttime[3] = {max_time,max_time,max_time};
     
     Float_t vertexFIT = 9999999;
-    for (Int_t ipmt=0; ipmt<80; ipmt++)//timeC
+    for (Int_t ipmt=0; ipmt<100; ipmt++)//timeC
          if(time[ipmt]<firsttime[2]) firsttime[2]=time[ipmt]; 
     
-    for ( Int_t ipmt=80; ipmt<160; ipmt++) 
+    for ( Int_t ipmt=100; ipmt<240; ipmt++) 
          if(time[ipmt]<firsttime[1]) firsttime[1]=time[ipmt];