Update of the macros
authorcblume <cblume@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 7 May 2001 08:09:16 +0000 (08:09 +0000)
committercblume <cblume@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 7 May 2001 08:09:16 +0000 (08:09 +0000)
TRD/AliTRDanalyzeCluster.C
TRD/AliTRDanalyzeDigits.C
TRD/AliTRDanalyzeHits.C
TRD/AliTRDconfig.C
TRD/AliTRDcreateCluster.C
TRD/AliTRDcreateDigits.C

index b37cd32748907e8f1685b0abbc542a9d6ff287d3..93c97864e3a1748b3d8defc634b187918ff300e2 100644 (file)
@@ -22,10 +22,14 @@ Int_t AliTRDanalyzeCluster()
   }
 
   // Define the histograms
-  TH1F *hClusAll   = new TH1F("hClusAll"  ,"Amplitude of the cluster (all)"     ,501,-0.5,500.5);
-  TH1F *hClusNoise = new TH1F("hClusNoise","Amplitude of the cluster (noise)"   ,501,-0.5,500.5);
-  TH1F *hClusEl    = new TH1F("hClusEl"   ,"Amplitude of the cluster (electron)",501,-0.5,500.5);
-  TH1F *hClusPi    = new TH1F("hClusPi"   ,"Amplitude of the cluster (pion)"    ,501,-0.5,500.5);
+  TH1F *hClusAll   = new TH1F("hClusAll"  ,"Amplitude of the cluster (all)"     
+                                          ,501,-0.5,500.5);
+  TH1F *hClusNoise = new TH1F("hClusNoise","Amplitude of the cluster (noise)"   
+                                          ,  5,-0.5,  4.5);
+  TH1F *hClusEl    = new TH1F("hClusEl"   ,"Amplitude of the cluster (electron)"
+                                          ,501,-0.5,500.5);
+  TH1F *hClusPi    = new TH1F("hClusPi"   ,"Amplitude of the cluster (pion)"    
+                                          ,501,-0.5,500.5);
 
   // Get the pointer to the geometry object
   AliTRDgeometry *TRDgeometry;
@@ -40,82 +44,91 @@ Int_t AliTRDanalyzeCluster()
 
   // Get the pointer to the hit-tree
   TFile *file = (TFile *) gROOT->GetListOfFiles()->FindObject("TRD_test.root");
-  TTree *RecTree = file->Get("ClusterTree");
-  if (!(RecTree)) {
-    cout << "<AliTRDanalyzeCluster> No tree with rec. points found" << endl;
+  TTree *ClusterTree = file->Get("ClusterTree");
+  if (!(ClusterTree)) {
+    cout << "<AliTRDanalyzeCluster> No tree with clusters found" << endl;
     rc = 4;
     return rc;
   }
 
   // Get the pointer to the hit container
-  TObjArray *RecPointArray = TRD->RecPoints();
-  if (!(RecPointArray)) {
-    cout << "<AliTRDanalyzeCluster> No RecPointArray found" << endl;
+  TObjArray *ClusterArray = TRD->RecPoints();
+  if (!(ClusterArray)) {
+    cout << "<AliTRDanalyzeCluster> No ClusterArray found" << endl;
     rc = 5;
     return rc;
   }
 
   // Set the branch address
-  RecTree->GetBranch("TRDrecPoints")->SetAddress(&RecPointArray);
-  Int_t nEntries = RecTree->GetEntries();
-  cout << "Number of entries in the rec. point tree = " << nEntries << endl;
+  ClusterTree->GetBranch("TRDcluster")->SetAddress(&ClusterArray);
+  Int_t nEntries = ClusterTree->GetEntries();
+  cout << "<AliTRDanalyzeCluster> Number of entries in the cluster tree = " 
+       << nEntries 
+       << endl;
 
   Int_t countCluster = 0;
+  Int_t countUnfold  = 0;
 
   // Loop through all entries in the tree
   Int_t nbytes;
   for (Int_t iEntry = 0; iEntry < nEntries; iEntry++) {
 
     // Import the tree
-    nbytes += RecTree->GetEvent(iEntry);
+    nbytes += ClusterTree->GetEvent(iEntry);
 
     // Get the number of points in the detector 
-    Int_t nRecPoint = RecPointArray->GetEntriesFast();
+    Int_t nCluster = ClusterArray->GetEntriesFast();
 
     // Loop through all TRD digits
-    for (Int_t iRecPoint = 0; iRecPoint < nRecPoint; iRecPoint++) {
+    for (Int_t iCluster = 0; iCluster < nCluster; iCluster++) {
 
       // Get the information for this digit
-      AliTRDrecPoint *RecPoint = (AliTRDrecPoint *) RecPointArray->UncheckedAt(iRecPoint);
-      Int_t    detector = RecPoint->GetDetector();      
+      AliTRDcluster *Cluster = (AliTRDcluster *) ClusterArray->UncheckedAt(iCluster);
+      Int_t    detector = Cluster->GetDetector();      
       Int_t    sector   = TRDgeometry->GetSector(detector);
       Int_t    plane    = TRDgeometry->GetPlane(detector);
       Int_t    chamber  = TRDgeometry->GetChamber(detector);
-      Int_t    energy   = RecPoint->GetEnergy();
-      TVector3 pos;
-      RecPoint->GetLocalPosition(pos);
-      Int_t    track0   = RecPoint->GetTrackIndex(0);
-      Int_t    track1   = RecPoint->GetTrackIndex(1);
+      Float_t  energy   = Cluster->GetQ();
+      Int_t    track0   = Cluster->GetTrackIndex(0);
+      Int_t    track1   = Cluster->GetTrackIndex(1);
+      Int_t    track2   = Cluster->GetTrackIndex(2);
       TParticle *Part = 0;
       if (track0 > -1) {
         Part = gAlice->Particle(track0);
       }
 
       countCluster++;
+      if (Cluster->FromUnfolding()) countUnfold++;
 
       // Total spectrum
-      hClusAll->Fill((Float_t) energy);
+      hClusAll->Fill(energy);
 
-      // Noise spectrum
-      if (track0 < 0) {
-        hClusNoise->Fill((Float_t) energy);
-      }          
+      if (!Cluster->FromUnfolding()) {
 
-      // Electron cluster
-      if ((Part) && (Part->GetPdgCode() ==   11) && (track1 < 0)) {
-        hClusEl->Fill((Float_t) energy);
-      }
+        // Noise spectrum
+        if (track0 < 0) {
+          hClusNoise->Fill(energy);
+        }          
+
+        // Electron cluster
+        if ((Part) && (Part->GetPdgCode() ==   11) && (track1 < 0)) {
+          hClusEl->Fill(energy);
+        }
+
+        // Pion cluster
+        if ((Part) && (Part->GetPdgCode() == -211) && (track1 < 0)) {
+          hClusPi->Fill(energy);
+        }
 
-      // Pion cluster
-      if ((Part) && (Part->GetPdgCode() == -211) && (track1 < 0)) {
-        hClusPi->Fill((Float_t) energy);
       }
 
     }
 
   }
 
-  cout << "<AliTRDanalyzeCluster> Found " << countCluster << " cluster in total" << endl;
+  cout << "<AliTRDanalyzeCluster> Found " << countCluster << " cluster in total"       << endl;
+  cout << "<AliTRDanalyzeCluster> Found " << countUnfold  << " cluster from unfolding" << endl;
+  cout << endl;
 
   TCanvas *cCluster = new TCanvas("cCluster","AliTRDanalyzeCluster",50,50,600,600);
   cCluster->Divide(2,2);
@@ -132,7 +145,6 @@ Int_t AliTRDanalyzeCluster()
   
   cCluster->cd(2);
   gPad->SetLogy();
-  gPad->SetLogx();
   Float_t meanNoise = hClusNoise->GetMean();
   hClusNoise->Draw();
 
index 5cb0a7911d526525c017a0e3905626b22c934853..750def8ca0970ea0ac345fd9be37f489af015360 100644 (file)
@@ -6,6 +6,8 @@ Int_t AliTRDanalyzeDigits()
 
   Int_t rc = 0;
 
+  const Int_t kNpla = AliTRDgeometry::Nplan();
+
   if (!gAlice) {
     cout << "<AliTRDanalyzeDigits> No AliRun object found" << endl;
     rc = 1;
@@ -39,7 +41,7 @@ Int_t AliTRDanalyzeDigits()
   TH1F *hAmpPi    = new TH1F("hAmpPi"   ,"Amplitude of the digits (pions)"
                             ,adcRange+1,-0.5,((Float_t) adcRange)+0.5);
   TH1F *hAmpNoise = new TH1F("hAmpNoise","Amplitude of the digits (noise)"
-                            ,adcRange+1,-0.5,((Float_t) adcRange)+0.5);
+                            ,5,-0.5,4.5);
 
   // Get the pointer to the geometry object
   AliTRDgeometry *TRDgeometry;
@@ -61,70 +63,78 @@ Int_t AliTRDanalyzeDigits()
     rc = 5;
     return rc;
   }
-  
-  // Define the detector matrix for one chamber
-  Int_t iSec = TRD->GetSensSector();
-  Int_t iCha = TRD->GetSensChamber();
-  Int_t iPla = 0;
-  Int_t  rowMax = TRDgeometry->GetRowMax(iPla,iCha,iSec);
-  Int_t  colMax = TRDgeometry->GetColMax(iPla);
-  Int_t timeMax = TRDgeometry->GetTimeMax();
-  cout << "<AliTRDanalyzeDigits> Geometry: rowMax = "  <<  rowMax
-                                      << " colMax = "  <<  colMax
-                                      << " timeMax = " << timeMax << endl;
-  AliTRDmatrix *TRDmatrix = new AliTRDmatrix(rowMax,colMax,timeMax,iSec,iCha,iPla);
-  // Get the detector number
-  Int_t iDet = TRDgeometry->GetDetector(iPla,iCha,iSec);
-  cout << "<AliTRDanalyzeDigits> iSec = " << iSec
-                            << " iCha = " << iCha 
-                            << " iPla = " << iPla 
-                            << " iDet = " << iDet << endl;
-
-  // Loop through the detector pixel
-  Int_t countDigits = 0;
-  for (Int_t time = 0; time < timeMax; time++) {
-    for (Int_t  col = 0;  col <  colMax;  col++) {
-      for (Int_t  row = 0;  row <  rowMax;  row++) {
-
-        AliTRDdigit *Digit = DigitsManager->GetDigit(row,col,time,iDet);
-        Int_t amp = Digit->GetAmp();
-
-        Int_t track0 = DigitsManager->GetTrack(0,row,col,time,iDet);
-        Int_t track1 = DigitsManager->GetTrack(1,row,col,time,iDet);
-        TParticle *Part = 0;
-        if (track0 > -1) {
-          Part = gAlice->Particle(track0);
-       }
-
-        if (amp > 0) {
 
-          countDigits++;
-          TRDmatrix->SetSignal(row,col,time,amp);
+  AliTRDmatrix *TRDmatrix;
 
-       }
-
-       // Total spectrum
-        hAmpAll->Fill(amp);
-
-       // Noise spectrum
-        if (track0 < 0) {
-          hAmpNoise->Fill(amp);
-       }          
+  Int_t countDigits = 0;
+  Int_t iSec        = TRD->GetSensSector();
+  Int_t iCha        = TRD->GetSensChamber();
+  Int_t timeMax     = TRDgeometry->GetTimeTotal();
 
-       // Electron digit
-        if ((Part) && (Part->GetPdgCode() ==   11) && (track1 < 0)) {
-          hAmpEl->Fill(amp);
-       }
+  TProfile *hAmpTimeEl = new TProfile("hAmpTimeEl","Amplitude of the digits (electrons)"
+                                     ,timeMax,-0.5,((Double_t) timeMax)-0.5);
+  TProfile *hAmpTimePi = new TProfile("hAmpTimePi","Amplitude of the digits (pions)"
+                                     ,timeMax,-0.5,((Double_t) timeMax)-0.5);
 
-        // Pion digit
-        if ((Part) && (Part->GetPdgCode() == -211) && (track1 < 0)) {
-          hAmpPi->Fill(amp);
-       }
+  // Loop over all planes
+  for (Int_t iPla = 0; iPla < kNpla; iPla++) {
 
-        delete Digit;
+    Int_t iDet   = TRDgeometry->GetDetector(iPla,iCha,iSec);
+    Int_t rowMax = TRDgeometry->GetRowMax(iPla,iCha,iSec);
+    Int_t colMax = TRDgeometry->GetColMax(iPla);
+  
+    if (iPla == 0) {
+      TRDmatrix = new AliTRDmatrix(rowMax,colMax,timeMax,iSec,iCha,iPla);
+    }
 
+    // Loop through the detector pixel
+    for (Int_t time = 0; time < timeMax; time++) {
+      for (Int_t  col = 0;  col <  colMax;  col++) {
+        for (Int_t  row = 0;  row <  rowMax;  row++) {
+
+          AliTRDdigit *Digit = DigitsManager->GetDigit(row,col,time,iDet);
+          Int_t amp = Digit->GetAmp();
+
+          Int_t track0 = DigitsManager->GetTrack(0,row,col,time,iDet);
+          Int_t track1 = DigitsManager->GetTrack(1,row,col,time,iDet);
+          TParticle *Part = 0;
+          if (track0 > -1) {
+            Part = gAlice->Particle(track0);
+         }
+
+          if (amp > 0) {
+            countDigits++;
+            if (iPla == 0) {
+              TRDmatrix->SetSignal(row,col,time,amp);
+           }
+         }
+
+         // Total spectrum
+          hAmpAll->Fill(amp);
+
+         // Noise spectrum
+          if (track0 < 0) {
+            hAmpNoise->Fill(amp);
+         }          
+
+         // Electron digit
+          if ((Part) && (Part->GetPdgCode() ==   11) && (track1 < 0)) {
+            hAmpEl->Fill(amp);
+            hAmpTimeEl->Fill(time,amp);
+         }
+
+          // Pion digit
+          if ((Part) && (Part->GetPdgCode() == -211) && (track1 < 0)) {
+            hAmpPi->Fill(amp);
+            hAmpTimePi->Fill(time,amp);
+         }
+
+          delete Digit;
+
+        }
       }
     }
+
   }
 
   cout << "<AliTRDanalyzeDigits> Found " << countDigits << " digits in total" << endl;
@@ -135,21 +145,45 @@ Int_t AliTRDanalyzeDigits()
   TRDmatrix->ProjCol();
   TRDmatrix->ProjTime();
 
-  TCanvas *cDigits = new TCanvas("cDigits","AliTRDanalyzeDigits",50,50,600,600);
-  cDigits->Divide(2,2);
+  TCanvas *cDigits = new TCanvas("cDigits","AliTRDanalyzeDigits",50,50,600,800);
+  cDigits->Divide(2,3);
   cDigits->cd(1);
   gPad->SetLogy();
+  hAmpAll->SetXTitle("Amplitude (ADC-channels)");
+  hAmpAll->SetYTitle("Entries");
   hAmpAll->Draw();
   cDigits->cd(2);
   gPad->SetLogy();
-  gPad->SetLogx();
+  hAmpNoise->SetXTitle("Amplitude (ADC-channels)");
+  hAmpNoise->SetYTitle("Entries");
   hAmpNoise->Draw();
   cDigits->cd(3);
   gPad->SetLogy();
+  hAmpEl->SetXTitle("Amplitude (ADC-channels)");
+  hAmpEl->SetYTitle("Entries");
   hAmpEl->Draw();
   cDigits->cd(4);
   gPad->SetLogy();
+  hAmpPi->SetXTitle("Amplitude (ADC-channels)");
+  hAmpPi->SetYTitle("Entries");
   hAmpPi->Draw();
+  cDigits->cd(5);
+  hAmpTimeEl->SetXTitle("Timebin number");
+  hAmpTimeEl->SetYTitle("Mean amplitude");
+  hAmpTimeEl->Draw("HIST");
+  cDigits->cd(6);
+  hAmpTimePi->SetXTitle("Timebin number");
+  hAmpTimePi->SetYTitle("Mean amplitude");
+  hAmpTimePi->Draw("HIST");
+
+  TFile *fileOut = new TFile("digits_test.root","RECREATE");
+  hAmpAll->Write();
+  hAmpNoise->Write();
+  hAmpEl->Write();
+  hAmpPi->Write();
+  hAmpTimeEl->Write();
+  hAmpTimePi->Write();
+  fileOut->Close();
 
   return rc;
 
index 7934e0400ee05fcdea4392e24144e7ea5bccbf46..911ab3402b111d993b613615533723dbe3593fce 100644 (file)
@@ -14,24 +14,55 @@ Int_t AliTRDanalyzeHits()
   gAlice->GetEvent(0);
 
   // Get the pointer to the TRD detector 
-  AliDetector *TRD = gAlice->GetDetector("TRD");
+  AliTRD *TRD = (AliTRD *) gAlice->GetDetector("TRD");
   if (!TRD) {
     cout << "<AliTRDanalyzeHits> No TRD detector found" << endl;
     rc = 2;
     return rc;
   }
 
+  // Get the pointer to the geometry object
+  AliTRDgeometryFull *TRDgeometry;
+  if (TRD) {
+    TRDgeometry = (AliTRDgeometryFull *) TRD->GetGeometry();
+  }
+  else {
+    cout << "<AliTRDanalyzeHits> No TRD geometry found" << endl;
+    rc = 3;
+    return rc;
+  }
+
   // Define the histograms
-  TH1F *hQdedx = new TH1F("hQdedx","Charge dedx-hits",100,0.0,1000.0);
-  TH1F *hQtr   = new TH1F("hQtr"  ,"Charge TR-hits"  ,100,0.0,1000.0);
-  TH2F *hZY    = new TH2F("hZY"   ,"Y vs Z",50,-100.0,100.0,40,290.0,370.0);
-  TH2F *hXZ    = new TH2F("hXZ"   ,"Z vs X",50,-100.0,100.0,50,-100.0,100.0);
+  TH1F *hQdedx  = new TH1F("hQdedx","Charge dedx-hits",100,0.0,1000.0);
+  TH1F *hQtr    = new TH1F("hQtr"  ,"Charge TR-hits"  ,100,0.0,1000.0);
+
+  Float_t rmin   = TRDgeometry->Rmin();
+  Float_t rmax   = TRDgeometry->Rmax();
+  Float_t length = TRDgeometry->GetChamberLengthI(0);
+  Float_t width  = TRDgeometry->GetChamberWidth(0);
+  Int_t   ncol   = TRDgeometry->GetColMax(0);
+  Int_t   nrow   = TRDgeometry->GetRowMax(0,2,13);
+  Int_t   ntime  = ((Int_t) (rmax - rmin) / TRDgeometry->GetTimeBinSize());
+
+  TH2F *hZY     = new TH2F("hZY"   ,"Y vs Z (chamber 0)", nrow,-length/2.,length/2.
+                                                        ,ntime,      rmin,     rmax);
+  TH2F *hXZ     = new TH2F("hXZ"   ,"Z vs X (plane 0)"  , ncol, -width/2., width/2.
+                                                        , nrow,-length/2.,length/2.);
+
+  TH1F *hNprimP = new TH1F("hNprimP","Number of primary electrons per cm (MIP pion)"
+                                    ,50,0.0,100.0);
+  TH1F *hNprimE = new TH1F("hNprimE","Number of primary electrons per cm (3GeV electron)"
+                                    ,50,0.0,100.0);
+  TH1F *hNtotP  = new TH1F("hNtotP" ,"Number of electrons per cm (MIP pion)"
+                                    ,50,0.0,1000.0);
+  TH1F *hNtotE  = new TH1F("hNtotE" ,"Number of electrons per cm (3GeV electron)"
+                                    ,50,0.0,1000.0);
 
   // Get the pointer hit tree
   TTree *HitTree = gAlice->TreeH();  
   if (!HitTree) {
     cout << "<AliTRDanalyzeHits> No hit tree found" << endl;
-    rc = 3;
+    rc = 4;
     return rc;
   }
 
@@ -50,10 +81,13 @@ Int_t AliTRDanalyzeHits()
     gAlice->ResetHits();
     nBytes += HitTree->GetEvent(iTrack);
 
+    Int_t nPrimE = 0;
+    Int_t nPrimP = 0;
+    Int_t nTotE  = 0;
+    Int_t nTotP  = 0;    
+
     // Get the number of hits in the TRD created by this particle
     Int_t nHit = TRD->Hits()->GetEntriesFast();
-    //cout << "<AliTRDanalyzeHits> Found " << nHit
-    //     << " hits for primary particle " << iTrack << endl;
 
     // Loop through the TRD hits  
     for (Int_t iHit = 0; iHit < nHit; iHit++) {
@@ -62,23 +96,52 @@ Int_t AliTRDanalyzeHits()
 
       AliTRDhit *hit = (AliTRDhit *) TRD->Hits()->UncheckedAt(iHit);
 
-      Float_t x = hit->X();
-      Float_t y = hit->Y();
-      Float_t z = hit->Z();
-      Float_t q = hit->GetCharge();
+      Float_t x     = hit->X();
+      Float_t y     = hit->Y();
+      Float_t z     = hit->Z();
+      Float_t q     = hit->GetCharge();
+      Int_t   track = hit->Track();
+      Int_t   det   = hit->GetDetector();
+      Int_t   plane = TRDgeometry->GetPlane(det);
 
-      if      (q > 0) { 
+      if      (hit->FromDrift()) {
         hQdedx->Fill(q);
+        hZY->Fill(z,y);
+        if (plane == 0) {
+          hXZ->Fill(x,z);
+       }
       }
-      else if (q < 0) {
+      else if (hit->FromTRphoton()) {
         hQtr->Fill(TMath::Abs(q));
       }
 
-      hZY->Fill(z,y);
-      hXZ->Fill(x,z);
+      TParticle *part = gAlice->Particle(track);
+
+      if ((plane == 0) && (hit->FromDrift())) {
+
+        // 3 GeV electrons
+        if ((part->GetPdgCode() ==   11) && 
+            (part->P()          >   2.9)) {
+          nPrimE++;
+          nTotE += ((Int_t) q);
+        }
+
+        // MIP pions
+        if ((part->GetPdgCode() == -211) &&
+            (part->P()          >   0.5)) {
+          nPrimP++;
+          nTotP += ((Int_t) q);
+        }
+
+      }
 
     }
 
+    if (nPrimE > 0) hNprimE->Fill(((Double_t) nPrimE)/3.);
+    if (nPrimP > 0) hNprimP->Fill(((Double_t) nPrimP)/3.);
+    if (nTotE  > 0) hNtotE->Fill(((Double_t) nTotE)/3.);
+    if (nTotP  > 0) hNtotP->Fill(((Double_t) nTotP)/3.);
+
   }
 
   cout << "<AliTRDanalyzeHits> Found " << countHits << " hits in total" << endl;
@@ -96,6 +159,28 @@ Int_t AliTRDanalyzeHits()
   gPad->SetLogy();
   hQtr->Draw();
 
+  TCanvas *cNel = new TCanvas("cNel","Ionization",50,50,600,600);
+  cNel->Divide(2,2);
+  cNel->cd(1);
+  hNprimE->SetStats();
+  hNprimE->Draw();
+  cNel->cd(2);
+  hNprimP->SetStats();
+  hNprimP->Draw();
+  cNel->cd(3);
+  hNtotE->SetStats();
+  hNtotE->Draw();
+  cNel->cd(4);
+  hNtotP->SetStats();
+  hNtotP->Draw();
+
+  TFile *fout = new TFile("TRD_ionization.root","RECREATE");
+  hNprimE->Write();
+  hNprimP->Write();
+  hNtotE->Write();
+  hNtotP->Write();
+  fout->Close(); 
+
   return rc;
 
 }
index 1774465eaa28e336e453bd6b1ca1e290fb656559..5ec3d6a58e5aa8619f49e1aeb2bfd217a1985411 100644 (file)
@@ -1,6 +1,8 @@
 void Config()
 {
 
+  Int_t iField = 0;
+
   new AliGeant3("C++ Interface to Geant3");
 
   // Create the output file
@@ -13,6 +15,7 @@ void Config()
   // Set external decayer
   AliDecayer* decayer = new AliDecayerPythia();
   decayer->SetForceDecay(all);
+  //decayer->SetForceDecay(kAll);
   decayer->Init();
   gMC->SetExternalDecayer(decayer);
 
@@ -64,20 +67,44 @@ void Config()
   gener->AddGenerator(genEl,"Electrons",1);
   gener->AddGenerator(genPi,"Pions"    ,1);
 
-  AliGenerator *gg = gener->FirstGenerator()->Generator();
-  gg->SetMomentumRange(1.0,3.0);
-  gg->SetPhiRange(75.0,95.0);
-  gg->SetThetaRange(70.0,110.0);
-  gg = gener->NextGenerator()->Generator();
-  gg->SetMomentumRange(2.5,3.0);
-  gg->SetPhiRange(75.0,95.0);
-  gg->SetThetaRange(70.0,110.0);
+  if (iField) {
+
+    // With magnetic field on
+    AliGenerator *gg = gener->FirstGenerator()->Generator();
+    gg->SetMomentumRange(3.00,3.01);
+    gg->SetPhiRange(76.0,92.0);
+    gg->SetThetaRange(83.0,97.0);
+    gg = gener->NextGenerator()->Generator();
+    gg->SetMomentumRange(0.560,0.561);
+    gg->SetPhiRange(62.0,78.0);
+    gg->SetThetaRange(83.0,97.0);
+
+    gener->Init();
+
+    // Specify maximum magnetic field in Tesla (neg. ==> default field)
+    // 0.4 T
+    gAlice->SetField(-999,2,2.0);    
+
+  }
+  else {
+
+    // With magnetic field off
+    AliGenerator *gg = gener->FirstGenerator()->Generator();
+    gg->SetMomentumRange(3.00,3.01);
+    gg->SetPhiRange(82.0,98.0);
+    gg->SetThetaRange(83.0,97.0);
+    gg = gener->NextGenerator()->Generator();
+    gg->SetMomentumRange(0.560,0.561);
+    gg->SetPhiRange(82.0,98.0);
+    gg->SetThetaRange(83.0,97.0);
+
+    gener->Init();
 
-  gener->Init();
+    // Specify maximum magnetic field in Tesla (neg. ==> default field)
+    // No field
+    gAlice->SetField(0);    
 
-  // Specify maximum magnetic field in Tesla (neg. ==> default field)
-  // 0.4 T
-  gAlice->SetField(-999,2,2.0);    
+  }
 
   Int_t iMAG   = 1;
   Int_t iITS   = 1;
@@ -138,9 +165,10 @@ void Config()
     // understandable to the CAD system EUCLID. The default (=0) means that you 
     // dont want to use this facility.
     //
-    //AliITS *ITS  = new AliITSv5("ITS","normal ITS");
+
     AliITS *ITS  = new AliITSv5asymm("ITS","Updates ITS TDR detailed version with asymmetric services");
     ITS->SetEUCLID(0);
+
   }
 
   if (iTPC) {
@@ -160,21 +188,6 @@ void Config()
     //
     //-----------------------------------------------------------------------------
 
-    //gROOT->LoadMacro("SetTPCParam.C");
-    //AliTPCParam *param = SetTPCParam();
-    //AliTPC *TPC  = new AliTPCv2("TPC","Default"); //v1 is default
-    //TPC->SetParam(param); // pass the parameter object to the TPC
-    //
-    // set gas mixture
-    //TPC->SetGasMixt(2,20,10,-1,0.9,0.1,0.);
-    //TPC->SetSecAL(4);
-    //TPC->SetSecAU(4);
-    //TPC->SetSecLows(1,  2,  3, 19, 20, 21);
-    //TPC->SetSecUps(37, 38, 39, 37+18, 38+18, 39+18, -1, -1, -1, -1, -1, -1);
-    //TPC->SetSens(1);
-    //
-    //if (TPC->IsVersion()==1) param->Write(param->GetTitle());
-
     AliTPC *TPC  = new AliTPCv2("TPC","Default");
     // All sectors included 
     TPC->SetSecAL(-1);
@@ -195,12 +208,18 @@ void Config()
     // The number of timebins
     TRDgeometry->SetNTimeBin(15);
 
+    // The additional timebins before and after the drift region
+    //TRDgeometry->SetExpandTimeBin(10,5);
+
     // Select the gas mixture (0: 97% Xe + 3% isobutane, 1: 90% Xe + 10% CO2)
     TRD->SetGasMix(1);
 
     // Set to detailed display
     TRD->SetDisplayType(1);
 
+    // Draw TR photons
+    TRD->SetDrawTR(1);
+
     // Switch on TR
     AliTRDsim *TRDsim = TRD->CreateTR();
 
index a2724e512e0a576069ed4c1a7d03a44860d2e0a1..3f90e48076d352c4ce487b67c31e9d4ba38f430f 100644 (file)
@@ -11,8 +11,8 @@ Int_t AliTRDcreateCluster()
     new AliTRDclusterizerV1("clusterizer","Clusterizer class");
 
   // Set the parameter
-  Clusterizer->SetClusMaxThresh(0.0);
-  Clusterizer->SetClusSigThresh(0.0);
+  Clusterizer->SetClusMaxThresh(0);
+  Clusterizer->SetClusSigThresh(0);
   Clusterizer->Dump();
  
   // Open the file
index 4d2194b251077f1e622383d0b4b0f9e619d5c62e..023587c698e8bffb6521d0744fff50f2d1692ebe 100644 (file)
@@ -15,9 +15,10 @@ Int_t AliTRDcreateDigits()
 
   // Create the TRD digitzer 
   AliTRDdigitizer *Digitizer = new AliTRDdigitizer("digitizer","Digitizer class");
+  Digitizer->InitDetector();
 
-  // Set the parameter  
-  Digitizer->SetGasGain(3300.);
+  // Set the parameter (for TRF ~200ns)
+  Digitizer->SetGasGain(1600.);
   Digitizer->SetChipGain(8.0);
   Digitizer->SetNoise(1000.);
   Digitizer->SetADCinRange(1000.);