Test suite for event-embedding (Adam).
[u/mrichter/AliRoot.git] / test / embedding / simrun.C
1 // #define VERBOSEARGS\r
2 // simrun.C\r
3 {\r
4 // set job and simulation variables as :\r
5 // root.exe -b -q simrun.C  --run <x> --event <y> --process <kPythia6/kPhojet> --field <kNoField/k5kG> --energy <900/10000>\r
6 \r
7   int nrun = 0;\r
8   int nevent = 0;\r
9   int seed = 0;\r
10 \r
11   char sseed[1024];\r
12   char srun[1024];\r
13   char sevent[1024];\r
14   char sprocess[1024];\r
15   char sfield[1024];\r
16   char senergy[1024];\r
17 \r
18   sprintf(srun,"");\r
19   sprintf(sevent,"");\r
20   sprintf(sprocess,"");\r
21   sprintf(sfield,"");\r
22   sprintf(senergy,"");\r
23 \r
24   for (int i=0; i< gApplication->Argc();i++){\r
25 #ifdef VERBOSEARGS\r
26     printf("Arg  %d:  %s\n",i,gApplication->Argv(i));\r
27 #endif\r
28     if (!(strcmp(gApplication->Argv(i),"--run")))\r
29       nrun = atoi(gApplication->Argv(i+1));\r
30     sprintf(srun,"%d",nrun);\r
31 \r
32     if (!(strcmp(gApplication->Argv(i),"--event")))\r
33       nevent = atoi(gApplication->Argv(i+1));\r
34     sprintf(sevent,"%d",nevent);\r
35 \r
36     if (!(strcmp(gApplication->Argv(i),"--process")))\r
37       sprintf(sprocess, gApplication->Argv(i+1));\r
38 \r
39     if (!(strcmp(gApplication->Argv(i),"--field")))\r
40       sprintf(sfield,gApplication->Argv(i+1));\r
41 \r
42     if (!(strcmp(gApplication->Argv(i),"--energy")))\r
43       sprintf(senergy,gApplication->Argv(i+1));\r
44 \r
45   }\r
46 \r
47   seed = nrun * 100000 + nevent;\r
48   sprintf(sseed,"%d",seed);\r
49 \r
50   if (seed==0) {\r
51     fprintf(stderr,"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");\r
52     fprintf(stderr,"!!!!  WARNING! Seeding variable for MC is 0          !!!!\n");\r
53     fprintf(stderr,"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");\r
54   } else {\r
55     fprintf(stdout,"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");\r
56     fprintf(stdout,"!!!  MC Seed is %d \n",seed);\r
57     fprintf(stdout,"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");\r
58   }\r
59   \r
60 // set the seed environment variable\r
61   gSystem->Setenv("CONFIG_SEED",sseed);\r
62   gSystem->Setenv("CONFIG_RUN_TYPE",sprocess); // kPythia6 or kPhojet\r
63   gSystem->Setenv("CONFIG_FIELD",sfield);      // kNoField or k5kG\r
64   gSystem->Setenv("CONFIG_ENERGY",senergy);    // 900 or 10000 (GeV)\r
65   gSystem->Setenv("DC_RUN",srun); // Not used in Config.C\r
66   gSystem->Setenv("DC_EVENT",sevent); // Not used in Config.C\r
67   \r
68 // Needed to produce simulated RAW data\r
69   gSystem->Setenv("ALIMDC_RAWDB1","./mdc1");\r
70   gSystem->Setenv("ALIMDC_RAWDB2","./mdc2");\r
71   gSystem->Setenv("ALIMDC_TAGDB","./mdc1/tag");\r
72   gSystem->Setenv("ALIMDC_RUNDB","./mdc1/meta");\r
73   cout<< "SIMRUN:: Run " << gSystem->Getenv("DC_RUN") << " Event " << gSystem->Getenv("DC_EVENT")\r
74           << " Process "    << gSystem->Getenv("DC_RUN_TYPE")\r
75           << " minpthard " << gSystem->Getenv("PTHARDMIN")\r
76           << " maxpthard " << gSystem->Getenv("PTHARDMAX")\r
77           << " minpt "     << gSystem->Getenv("PTGAMMAPI0MIN")\r
78           << endl;\r
79 \r
80 \r
81   // Background simulation\r
82   gSystem->Setenv("CONFIG_EMBEDDING","kBackground");\r
83 \r
84   cout<<">>>>> BACKGROUND SIMULATION <<<<<"<<endl;\r
85   gSystem->Exec("mkdir Background");\r
86   gSystem->Exec("cp Config.C Background/");\r
87   gSystem->Exec("cp sim.C Background/");\r
88   gSystem->Exec("cp rec.C Background/");\r
89   gSystem->ChangeDirectory("Background/");\r
90   gSystem->Exec("aliroot -b -q 'sim.C(0)' > sim.log 2>&1");\r
91   cout<<">>>>> BACKGROUND RECONSTRUCTION <<<<<"<<endl;\r
92   gSystem->Exec("aliroot -b -q 'rec.C(0)' > rec.log 2>&1");\r
93   gSystem->ChangeDirectory("../");\r
94 \r
95   // Merged simulation\r
96   gSystem->Setenv("CONFIG_EMBEDDING","kMerged");\r
97 \r
98   cout<<">>>>> MERGED SIMULATION <<<<<<"<< endl;\r
99   gSystem->Exec("mkdir Merged");\r
100   gSystem->Exec("cp Config.C Merged/");\r
101   gSystem->Exec("cp sim.C Merged/");\r
102   gSystem->Exec("cp rec.C Merged/");\r
103   gSystem->ChangeDirectory("Merged/");\r
104   gSystem->Exec("aliroot -b -q 'sim.C(1)' > sim.log 2>&1");\r
105   cout<<">>>>> MERGED RECONSTRUCTION <<<<<"<<endl;\r
106   gSystem->Exec("aliroot -b -q 'rec.C(1)' > rec.log 2>&1");\r
107   gSystem->ChangeDirectory("../");\r
108 \r
109   // Pure signal re-reconstruction\r
110   gSystem->Setenv("CONFIG_EMBEDDING","kSignal");\r
111 \r
112   cout<<">>>>> SIGNAL SIMULATION <<<<<<"<< endl;\r
113   gSystem->Exec("mkdir Signal");\r
114   gSystem->Exec("cp Config.C Signal/");\r
115   gSystem->Exec("cp sim.C Signal/");\r
116   gSystem->Exec("cp rec.C Signal/");\r
117   gSystem->Exec("cp Merged/*SDigits*.root Signal/");\r
118   gSystem->Exec("cp Merged/galice.root Signal/");\r
119   gSystem->Exec("cp Merged/Kinematics.root Signal/");\r
120   gSystem->ChangeDirectory("Signal/");\r
121   gSystem->Exec("aliroot -b -q 'sim.C(2)' > sim.log 2>&1");\r
122   cout<<">>>>> SIGNAL RECONSTRUCTION <<<<<"<<endl;\r
123   gSystem->Exec("aliroot -b -q 'rec.C(2)' > rec.log 2>&1");\r
124   gSystem->ChangeDirectory("../");\r
125 \r
126   //  cout<<">>>>> TAG <<<<<"<<endl;\r
127   //  gSystem->Exec("aliroot -b -q tag.C > tag.log 2>&1");\r
128   //  cout<<">>>>> CHECK ESD <<<<<"<<endl;\r
129   //  gSystem->Exec("aliroot -b -q CheckESD.C > check.log 2>&1");\r
130   //  cout<<">>>>> AOD <<<<<"<<endl;\r
131   //  gSystem->Exec("aliroot -b -q CreateAODfromESD.C > aod.log 2>&1");\r
132 }\r