Updating for the AliSimulation running
authordecaro <decaro@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 22 Dec 2003 12:09:36 +0000 (12:09 +0000)
committerdecaro <decaro@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 22 Dec 2003 12:09:36 +0000 (12:09 +0000)
TOF/AliTOF.cxx
TOF/AliTOFSDigitizer.cxx
TOF/AliTOFSDigits2Digits.C
TOF/AliTOFconfig.C

index 437b9c94ce48e10dac481196d846f85802571601..7ecb205cdaf1b5d2a7064032bad74f1d18f6b090 100644 (file)
@@ -601,7 +601,7 @@ void AliTOF::ResetSDigits ()
   //
   // Reset number of sdigits and the sdigits array for this detector
   fNSDigits = 0;
-  fSDigits = 0x0;
+  //fSDigits = 0x0;
   //
 } 
 //_____________________________________________________________________________
index 2980c517bf5157c9751756d80da1c1c16959adf2..4ab01871cd828282f878636aa10b9d05e88f6e61 100644 (file)
@@ -421,7 +421,7 @@ void AliTOFSDigitizer::Exec(Option_t *verboseOption) {
     fTOFLoader->UnloadSDigits();
     fTOFLoader->UnloadHits();
     fRunLoader->UnloadKinematics();
-    fRunLoader->UnloadgAlice();
+    //fRunLoader->UnloadgAlice();
 
   // free used memory
   if (ftail){
index d6cf69ab70e9715be6584648023e7556f0643d45..dd85a4a21e5e07d94ccda9429a52f5fda3bd8297 100644 (file)
@@ -1,8 +1,30 @@
-Int_t AliTOFSDigits2Digits(Int_t nev = 1) {
+Int_t AliTOFSDigits2Digits(Int_t numberOfEvents = 0) {
+
+  /////////////////////////////////////////////////////////////////////////
+  //
+  // Creates TOF digits from the summable digits for all event in the header file
+  //
+  // Use case:
+  // start root
+  // // load the macro
+  // root[0] .L AliTOFSDigits2Digits.C
+  // root[1] AliTOFSDigits2Digits()
+  //
+  // By default, it creates digits for all the events in the header file.
+  //
+  // If you want create digits only the firts event
+  // you can use the following lines:
+  //
+  // root[0] .L AliTOFSDigits2Digits.C
+  // root[1] AliTOFSDigits2Digits(1)
+  //
+  // Created by: F. Pierella
+  // Updated to the new I/O: I.Belikov (Jouri.Belikov@cern.ch)
+  //
+  // Report problems to decaro@sa.infn.it
+  //
+  /////////////////////////////////////////////////////////////////////////
 
-  // Adapted to the NewIO by I.Belikov (Jouri.Belikov@cern.ch)
-  // number 3 is a legacy from AliDigit object
-    
   Int_t rc = 0;
 
   if (gAlice)
@@ -11,7 +33,7 @@ Int_t AliTOFSDigits2Digits(Int_t nev = 1) {
       delete gAlice;
       gAlice = 0x0;
     }
-  
+
   AliRunLoader* rl = AliRunLoader::Open("galice.root");
   if (rl == 0x0)
     {
@@ -19,22 +41,22 @@ Int_t AliTOFSDigits2Digits(Int_t nev = 1) {
       rc = 1;   
       return rc;
     }
-  
+
   if (rl->LoadgAlice())
     {
-      cerr<<"Error occured while loading gAlice"<<endl;
+      cerr<<"Error occured while loading gAlice \n";
       rc = 2;
       return rc;
     }
-  
+
   AliLoader *tofl = rl->GetLoader("TOFLoader");
    if (tofl == 0x0)
      {
-       cerr<<"Can not get the TOF Loader"<<endl;
+       cerr<<"Can not get the TOF Loader \n";
        rc = 3;
        return rc;
      }
-   
+
    gAlice=rl->GetAliRun();
    if (!gAlice)
      {
@@ -42,20 +64,20 @@ Int_t AliTOFSDigits2Digits(Int_t nev = 1) {
        rc = 4;
        return rc;
      }
-   
+
    tofl->LoadSDigits("read");
    tofl->LoadDigits("recreate");
-   
+
    Int_t totndig=0;   // total number of digits
    Int_t tottracks=0; // total number of tracks contributing to totndig
-   
-   if (nev>rl->GetNumberOfEvents()) nev=rl->GetNumberOfEvents();
-   
+
+   if (numberOfEvents==0) numberOfEvents=rl->GetNumberOfEvents();
+
    TClonesArray *fSDigits=new TClonesArray("AliTOFSDigit",  1000); 
    TClonesArray *fDigits =new TClonesArray("AliTOFdigit",  1000);
    TClonesArray &da=*fDigits; 
 
-   for (Int_t ievent = 0; ievent < nev; ievent++) {
+   for (Int_t ievent = 0; ievent < numberOfEvents; ievent++) {
      rl->GetEvent(ievent);
      
      TTree *sTree=tofl->TreeS();
@@ -72,8 +94,8 @@ Int_t AliTOFSDigits2Digits(Int_t nev = 1) {
         rc = 6;
         return rc;
        }
-     branch->SetAddress(&fSDigits);           
-    
+     branch->SetAddress(&fSDigits);
+
     TTree *dTree=tofl->TreeD();
     if (dTree == 0) {
        tofl->MakeTree("D");
@@ -86,15 +108,15 @@ Int_t AliTOFSDigits2Digits(Int_t nev = 1) {
     Int_t nEntries = sTree->GetEntries();                                
     for (Int_t iEntry = 0; iEntry < nEntries; iEntry++) {
       sTree->GetEvent(iEntry);
-      
+
       Int_t ndig = fSDigits->GetEntriesFast();
-      cout << "----------------<AliTOFSDigits2Digits>----------------" << endl;
+      cout << "----------------<AliTOFSDigits2Digits>---------------- \n";
       cout << "Found " << ndig << " TOF SDigits for event " << ievent << endl;
-      cout << "------------------------------------------------------" << endl;
+      cout << "------------------------------------------------------ \n";
 
       for (Int_t k = 0; k < ndig; k++) {
        Int_t    vol[5];       // location for a digit
-       
+
        // Get the information for this digit
        AliTOFSDigit *tofsdigit = (AliTOFSDigit *)fSDigits->UncheckedAt(k);
 
@@ -123,7 +145,7 @@ Int_t AliTOFSDigits2Digits(Int_t nev = 1) {
        
        if (isSDigitBad)
          {
-           cout << "<AliTOFSDigits2Digits>  strange sdigit found" << endl;
+           cout << "<AliTOFSDigits2Digits>  strange sdigit found \n";
            rc = 7;
            return rc;
          }
@@ -131,10 +153,11 @@ Int_t AliTOFSDigits2Digits(Int_t nev = 1) {
 
        // start loop on number of slots for current sdigit
        for (Int_t islot = 0; islot < nslot; islot++) {
-         Float_t  digit[2];     // TOF digit variables
-          const Int_t kMAXDIGITS = 3;
-         Int_t tracknum[kMAXDIGITS];//contributing tracks for the current slot
-       
+         Float_t  digit[2];           // TOF digit variables
+          const Int_t kMAXDIGITS = 3;  // number 3 is a legacy from AliDigit object
+
+         Int_t tracknum[kMAXDIGITS];  //contributing tracks for the current slot
+
          Float_t tdc=tofsdigit->GetTdc(islot); digit[0]=tdc;
          Float_t adc=tofsdigit->GetAdc(islot); digit[1]=adc;
 
@@ -159,10 +182,9 @@ Int_t AliTOFSDigits2Digits(Int_t nev = 1) {
          totndig++;
        }
 
-
       } // end loop on sdigits
       fSDigits->Clear();
-      
+
     } // end loop on entries
 
     dTree->Fill();
@@ -175,16 +197,16 @@ Int_t AliTOFSDigits2Digits(Int_t nev = 1) {
 
   delete fSDigits;
   delete fDigits;
-  
+
   tofl->UnloadDigits();
   tofl->UnloadSDigits();
   rl->UnloadHeader();
   rl->UnloadgAlice();
-  
-  cout << "----------------------------------------------------------" << endl;
-  cout << "<AliTOFSDigits2Digits> Summary" << endl;
-  cout << "contributing tracks to " << totndig << " digits: " << tottracks << endl; 
-  cout << "----------------------------------------------------------" << endl;
+
+  cout << "---------------------------------------------------------- \n";
+  cout << "<AliTOFSDigits2Digits> Summary \n";
+  cout << "contributing tracks to " << totndig << " digits: " << tottracks << endl;
+  cout << "---------------------------------------------------------- \n";
 
   if (gAlice)
     {
index 36b9416b3a96c03d8aeb45c307c0f7eaa067cee1..c9fb304bd81de1d16f491d688494d4a72e9a6cce 100644 (file)
@@ -24,7 +24,7 @@
 #include "STRUCT/AliFRAMEv2.h"
 #include "STRUCT/AliSHILv2.h"
 #include "STRUCT/AliPIPEv0.h"
-#include "ITS/AliITSvPPRasymm.h"
+#include "ITS/AliITSvPPRasymmFMD.h"
 #include "TPC/AliTPCv2.h"
 #include "TOF/AliTOFv2FHoles.h"
 #include "TOF/AliTOFv4T0.h"
@@ -49,7 +49,7 @@ enum PprRun_t
     kHijing_per1,  kHijing_per2, kHijing_per3, kHijing_per4,  kHijing_per5,
     kHijing_jj25,  kHijing_jj50, kHijing_jj75, kHijing_jj100, kHijing_jj200, 
     kHijing_gj25,  kHijing_gj50, kHijing_gj75, kHijing_gj100, kHijing_gj200,
-    kHijing_pA //, kPythia
+    kHijing_pA, kPythia6, kPythia6Jets, kD0PbPb5500
 };
 
 enum PprGeo_t 
@@ -69,12 +69,11 @@ enum PprMag_t
 
 
 // This part for configuration    
-//static PprRun_t srun = test50;
-//static PprRun_t srun = kPythia;
-static PprRun_t srun = kHijing_cent2;
+static PprRun_t srun = test50;
+//static PprRun_t srun = kPythia6;
 static PprGeo_t sgeo = kNoHoles;
 static PprRad_t srad = kGluonRadiation;
-static PprMag_t smag = k4kG;
+static PprMag_t smag = k5kG;
 
 // Comment line 
 static TString  comment;
@@ -167,10 +166,9 @@ void Config()
     gAlice->SetDebug(1);
     AliGenerator* gener = GeneratorFactory(srun);
     gener->SetOrigin(0, 0, 0);    // vertex position
-    gener->SetSigma(0, 0, 0);   // Sigma in (X,Y,Z) (cm) on IP position
-    //gener->SetCutVertexZ(1.);     // Truncate at 1 sigma
-    //gener->SetVertexSmear(kPerEvent); 
-    gener->SetThetaRange(45.,135.);
+    gener->SetSigma(0, 0, 5.3);   // Sigma in (X,Y,Z) (cm) on IP position
+    gener->SetCutVertexZ(1.);     // Truncate at 1 sigma
+    gener->SetVertexSmear(kPerEvent); 
     gener->SetTrackingFlag(1);
     gener->Init();
     
@@ -204,29 +202,30 @@ void Config()
     
 // Field (L3 0.4 T)
     AliMagFMaps* field = new AliMagFMaps("Maps","Maps", 2, 1., 10., smag);
+    field->SetL3ConstField(0); //Using const. field in the barrel
     rl->CdGAFile();
-    
+    gAlice->SetField(field);    
 //
-    Int_t   iABSO   = 1;
-    Int_t   iDIPO   = 0; //1;
-    Int_t   iFMD    = 0; //1;
+    Int_t   iABSO   = 0;
+    Int_t   iDIPO   = 0;
+    Int_t   iFMD    = 0;
     Int_t   iFRAME  = 1;
-    Int_t   iHALL   = 0; //1;
+    Int_t   iHALL   = 0;
     Int_t   iITS    = 1;
     Int_t   iMAG    = 1;
-    Int_t   iMUON   = 0; //1;
-    Int_t   iPHOS   = 0; //1;
+    Int_t   iMUON   = 0;
+    Int_t   iPHOS   = 0;
     Int_t   iPIPE   = 1;
-    Int_t   iPMD    = 0; //1;
-    Int_t   iRICH   = 0; //1;
-    Int_t   iSHIL   = 0; //1;
-    Int_t   iSTART  = 0; //1;
+    Int_t   iPMD    = 0;
+    Int_t   iRICH   = 0;
+    Int_t   iSHIL   = 0;
+    Int_t   iSTART  = 0;
     Int_t   iTOF    = 1;
     Int_t   iTPC    = 1;
     Int_t   iTRD    = 1;
-    Int_t   iZDC    = 0; //1;
-    Int_t   iEMCAL  = 0; //1;
-    Int_t   iVZERO  = 0; //1;
+    Int_t   iZDC    = 0;
+    Int_t   iEMCAL  = 0;
+    Int_t   iVZERO  = 0;
     Int_t   iCRT    = 0;
 
     //=================== Alice BODY parameters =============================
@@ -310,9 +309,9 @@ void Config()
     //
     //AliITS *ITS  = new AliITSv5asymm("ITS","Updates ITS TDR detailed version with asymmetric services");
     //
-       AliITSvPPRasymm *ITS  = new AliITSvPPRasymm("ITS","New ITS PPR detailed version with asymmetric services");
-       ITS->SetMinorVersion(2);                                         // don't touch this parameter if you're not an ITS developer
-       ITS->SetReadDet(kFALSE);                                         // don't touch this parameter if you're not an ITS developer
+       AliITSvPPRasymmFMD *ITS  = new AliITSvPPRasymmFMD("ITS","New ITS PPR detailed version with asymmetric services");
+       ITS->SetMinorVersion(2);  // don't touch this parameter if you're not an ITS developer
+       ITS->SetReadDet(kTRUE);   // don't touch this parameter if you're not an ITS developer
     //    ITS->SetWriteDet("$ALICE_ROOT/ITS/ITSgeometry_vPPRasymm2.det");  // don't touch this parameter if you're not an ITS developer
        ITS->SetThicknessDet1(200.);   // detector thickness on layer 1 must be in the range [100,300]
        ITS->SetThicknessDet2(200.);   // detector thickness on layer 2 must be in the range [100,300]
@@ -320,19 +319,7 @@ void Config()
        ITS->SetThicknessChip2(200.);  // chip thickness on layer 2 must be in the range [150,300]
        ITS->SetRails(0);            // 1 --> rails in ; 0 --> rails out
        ITS->SetCoolingFluid(1);   // 1 --> water ; 0 --> freon
-       //
-    //AliITSvPPRsymm *ITS  = new AliITSvPPRsymm("ITS","New ITS PPR detailed version with symmetric services");
-    //ITS->SetMinorVersion(2);                                       // don't touch this parameter if you're not an ITS developer
-    //ITS->SetReadDet(kFALSE);                                       // don't touch this parameter if you're not an ITS developer
-    //ITS->SetWriteDet("$ALICE_ROOT/ITS/ITSgeometry_vPPRsymm2.det"); // don't touch this parameter if you're not an ITS developer
-    //ITS->SetThicknessDet1(200.);   // detector thickness on layer 1 must be in the range [100,300]
-    //ITS->SetThicknessDet2(200.);   // detector thickness on layer 2 must be in the range [100,300]
-    //ITS->SetThicknessChip1(200.);  // chip thickness on layer 1 must be in the range [150,300]
-    //ITS->SetThicknessChip2(200.);  // chip thickness on layer 2 must be in the range [150,300]
-    //ITS->SetRails(0);              // 1 --> rails in ; 0 --> rails out
-    //ITS->SetCoolingFluid(1);       // 1 --> water ; 0 --> freon
-    //
-    //
+
     // Coarse geometries (warning: no hits are produced with these coarse geometries and they unuseful 
     // for reconstruction !):
     //                                                     
@@ -499,16 +486,16 @@ AliGenerator* GeneratorFactory(PprRun_t srun) {
     case test50:
       {
        comment = comment.Append(":HIJINGparam test 50 particles");
-       AliGenHIJINGpara *gener = new AliGenHIJINGpara(100);
+       AliGenHIJINGpara *gener = new AliGenHIJINGpara(50);
        gener->SetMomentumRange(0, 999999.);
        gener->SetPhiRange(0., 360.);
        // Set pseudorapidity range from -8 to 8.
-       Float_t thmin = EtaToTheta(1);   // theta min. <---> eta max
-       Float_t thmax = EtaToTheta(-1);  // theta max. <---> eta min 
+       Float_t thmin = EtaToTheta(8);   // theta min. <---> eta max
+       Float_t thmax = EtaToTheta(-8);  // theta max. <---> eta min 
        gener->SetThetaRange(thmin,thmax);
        gGener=gener;
       }
-       break;
+      break;
     case kParam_8000:
       {
        comment = comment.Append(":HIJINGparam N=8000");
@@ -521,7 +508,7 @@ AliGenerator* GeneratorFactory(PprRun_t srun) {
        gener->SetThetaRange(thmin,thmax);
        gGener=gener;
       }
-       break;
+      break;
     case kParam_4000:
       {
        comment = comment.Append("HIJINGparam N=4000");
@@ -547,7 +534,7 @@ AliGenerator* GeneratorFactory(PprRun_t srun) {
        gener->SetThetaRange(thmin,thmax);
        gGener=gener;
       }
-       break;
+      break;
 //
 //  Hijing Central
 //
@@ -559,7 +546,7 @@ AliGenerator* GeneratorFactory(PprRun_t srun) {
        gener->SetImpactParameterRange(0., 5.);
        gGener=gener;
       }
-       break;
+      break;
     case kHijing_cent2:
       {
        comment = comment.Append("HIJING cent2");
@@ -567,8 +554,8 @@ AliGenerator* GeneratorFactory(PprRun_t srun) {
 // impact parameter range
        gener->SetImpactParameterRange(0., 2.);
        gGener=gener;
-       break;
       }
+      break;
 //
 // Hijing Peripheral 
 //
@@ -580,7 +567,7 @@ AliGenerator* GeneratorFactory(PprRun_t srun) {
        gener->SetImpactParameterRange(5., 8.6);
        gGener=gener;
       }
-       break;
+      break;
     case kHijing_per2:
       {
        comment = comment.Append("HIJING per2");
@@ -589,7 +576,7 @@ AliGenerator* GeneratorFactory(PprRun_t srun) {
        gener->SetImpactParameterRange(8.6, 11.2);
        gGener=gener;
       }
-       break;
+      break;
     case kHijing_per3:
       {
        comment = comment.Append("HIJING per3");
@@ -598,7 +585,7 @@ AliGenerator* GeneratorFactory(PprRun_t srun) {
        gener->SetImpactParameterRange(11.2, 13.2);
        gGener=gener;
       }
-       break;
+      break;
     case kHijing_per4:
       {
        comment = comment.Append("HIJING per4");
@@ -607,7 +594,7 @@ AliGenerator* GeneratorFactory(PprRun_t srun) {
        gener->SetImpactParameterRange(13.2, 15.);
        gGener=gener;
       }
-       break;
+      break;
     case kHijing_per5:
       {
        comment = comment.Append("HIJING per5");
@@ -616,7 +603,7 @@ AliGenerator* GeneratorFactory(PprRun_t srun) {
        gener->SetImpactParameterRange(15., 100.);
        gGener=gener;
       }
-       break;
+      break;
 //
 //  Jet-Jet
 //
@@ -635,7 +622,7 @@ AliGenerator* GeneratorFactory(PprRun_t srun) {
        gener->SetJetPhiRange(75., 165.);   
        gGener=gener;
       }
-       break;
+      break;
 
     case kHijing_jj50:
       {
@@ -669,7 +656,7 @@ AliGenerator* GeneratorFactory(PprRun_t srun) {
        gener->SetJetPhiRange(75., 165.);   
        gGener=gener;
       }
-       break;
+      break;
 
     case kHijing_jj100:
       {
@@ -686,7 +673,7 @@ AliGenerator* GeneratorFactory(PprRun_t srun) {
        gener->SetJetPhiRange(75., 165.);   
        gGener=gener;
       }
-       break;
+      break;
 
     case kHijing_jj200:
       {
@@ -703,7 +690,7 @@ AliGenerator* GeneratorFactory(PprRun_t srun) {
        gener->SetJetPhiRange(75., 165.);   
        gGener=gener;
       }
-       break;
+      break;
 //
 // Gamma-Jet
 //
@@ -722,7 +709,7 @@ AliGenerator* GeneratorFactory(PprRun_t srun) {
         gener->SetJetPhiRange(220., 320.);
        gGener=gener;
       }
-       break;
+      break;
 
     case kHijing_gj50:
       {
@@ -739,7 +726,7 @@ AliGenerator* GeneratorFactory(PprRun_t srun) {
         gener->SetJetPhiRange(220., 320.);
        gGener=gener;
       }
-       break;
+      break;
 
     case kHijing_gj75:
       {
@@ -756,7 +743,7 @@ AliGenerator* GeneratorFactory(PprRun_t srun) {
         gener->SetJetPhiRange(220., 320.);
        gGener=gener;
       }
-       break;
+      break;
 
     case kHijing_gj100:
       {
@@ -773,7 +760,7 @@ AliGenerator* GeneratorFactory(PprRun_t srun) {
         gener->SetJetPhiRange(220., 320.);
        gGener=gener;
       }
-       break;
+      break;
 
     case kHijing_gj200:
       {
@@ -790,7 +777,7 @@ AliGenerator* GeneratorFactory(PprRun_t srun) {
         gener->SetJetPhiRange(220., 320.);
        gGener=gener;
       }
-       break;
+      break;
     case kHijing_pA:
       {
        comment = comment.Append("HIJING pA");
@@ -831,8 +818,8 @@ AliGenerator* GeneratorFactory(PprRun_t srun) {
        gener->AddGenerator(gray,  "Gray Particles",1);
        gGener=gener;
       }
-       break;
-    case kPythia:
+      break;
+    case kPythia6:
       {
         comment = comment.Append(":Pythia p-p @ 14 TeV");
         AliGenPythia *gener = new AliGenPythia(-1); 
@@ -846,7 +833,38 @@ AliGenerator* GeneratorFactory(PprRun_t srun) {
         gener->SetEnergyCMS(14000.);
        gGener=gener;
       }
-    break;
+      break;
+    case kPythia6Jets:
+      {
+        comment = comment.Append(":Pythia jets @ 5.5 TeV");
+        AliGenPythia * gener = new AliGenPythia(-1);
+       gener->SetEnergyCMS(5500.);//        Centre of mass energy
+       gener->SetProcess(kPyJets);//        Process type
+       gener->SetJetEtaRange(-0.5, 0.5);//  Final state kinematic cuts
+       gener->SetJetPhiRange(0., 360.);
+       gener->SetJetEtRange(10., 1000.);
+       gener->SetGluonRadiation(1,1);
+       //    gener->SetPtKick(0.);
+       //   Structure function
+       gener->SetStrucFunc(kCTEQ4L);
+       gener->SetPtHard(86., 104.);// Pt transfer of the hard scattering
+       gener->SetPycellParameters(2., 274, 432, 0., 4., 5., 1.0);
+       gener->SetForceDecay(kAll);//  Decay type (semielectronic, etc.)
+       gGener=gener;
+      }
+      break;
+    case kD0PbPb5500:
+      {
+       comment = comment.Append(" D0 in Pb-Pb at 5.5 TeV");
+       AliGenPythia * gener = new AliGenPythia(10);
+       gener->SetProcess(kPyD0PbPbMNR);
+       gener->SetStrucFunc(kCTEQ4L);
+       gener->SetPtHard(2.1,-1.0);
+       gener->SetEnergyCMS(5500.);
+       gener->SetNuclei(208,208);
+       gGener=gener;
+      }
+      break;
     }
     return gGener;
 }